@mohasinac/appkit 4.57.0 → 4.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. package/dist/.build-stamp.json +4 -4
  2. package/dist/_internal/server/features/beys/data.d.ts +44 -0
  3. package/dist/_internal/server/features/beys/data.js +107 -0
  4. package/dist/_internal/server/features/beys/og.d.ts +42 -0
  5. package/dist/_internal/server/features/beys/og.js +89 -0
  6. package/dist/_internal/server/features/parts/data.js +3 -2
  7. package/dist/_internal/server/jobs/handlers/messages.d.ts +1 -1
  8. package/dist/_internal/server/jobs/handlers/messages.js +1 -1
  9. package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
  10. package/dist/_internal/shared/actions/action-registry.js +86 -0
  11. package/dist/_internal/shared/types/base-document.d.ts +1 -1
  12. package/dist/client.d.ts +2 -0
  13. package/dist/client.js +1 -0
  14. package/dist/constants/api-endpoints.d.ts +12 -0
  15. package/dist/constants/api-endpoints.js +10 -0
  16. package/dist/constants/field-names.d.ts +46 -0
  17. package/dist/constants/field-names.js +46 -0
  18. package/dist/constants/seed-meta.d.ts +113 -0
  19. package/dist/constants/seed-meta.js +91 -0
  20. package/dist/features/admin/components/AdminBeysView.d.ts +27 -0
  21. package/dist/features/admin/components/AdminBeysView.js +178 -0
  22. package/dist/features/admin/components/AdminPartsView.d.ts +27 -0
  23. package/dist/features/admin/components/AdminPartsView.js +160 -0
  24. package/dist/features/admin/components/OwnerQuickActions.d.ts +19 -2
  25. package/dist/features/admin/components/OwnerQuickActions.js +31 -3
  26. package/dist/features/admin/components/RecordOwnerQuickActions.d.ts +31 -0
  27. package/dist/features/admin/components/RecordOwnerQuickActions.js +128 -0
  28. package/dist/features/admin/components/ReferenceRecordEditor.d.ts +45 -0
  29. package/dist/features/admin/components/ReferenceRecordEditor.js +153 -0
  30. package/dist/features/admin/schemas/firestore.d.ts +1 -1
  31. package/dist/features/auctions/components/MarketplaceAuctionCard.js +15 -2
  32. package/dist/features/auth/permissions/constants.d.ts +1 -1
  33. package/dist/features/auth/permissions/constants.js +12 -1
  34. package/dist/features/beys/components/BeyDetailPageView.d.ts +50 -0
  35. package/dist/features/beys/components/BeyDetailPageView.js +98 -0
  36. package/dist/features/beys/schemas/firestore.d.ts +417 -0
  37. package/dist/features/beys/schemas/firestore.js +65 -0
  38. package/dist/features/blog/components/BlogFeaturedCard.js +15 -2
  39. package/dist/features/blog/components/BlogPostView.js +2 -2
  40. package/dist/features/categories/components/BrandDetailPageView.js +4 -2
  41. package/dist/features/categories/components/BundleDetailView.js +2 -2
  42. package/dist/features/categories/components/CategoryDetailPageView.js +36 -3
  43. package/dist/features/categories/components/CategoryGrid.js +24 -2
  44. package/dist/features/categories/components/FranchiseDetailPageView.js +2 -3
  45. package/dist/features/events/components/EventCard.js +15 -2
  46. package/dist/features/grouped/components/GroupedListingDetailView.js +2 -3
  47. package/dist/features/homepage/components/CustomCardsSection.js +67 -50
  48. package/dist/features/homepage/components/ShopByCategorySection.js +23 -10
  49. package/dist/features/homepage/schemas/index.d.ts +10 -10
  50. package/dist/features/parts/components/PartDetailPageView.js +5 -3
  51. package/dist/features/parts/components/PartsSearchBox.js +79 -4
  52. package/dist/features/parts/schemas/admin-edit.d.ts +81 -0
  53. package/dist/features/parts/schemas/admin-edit.js +89 -0
  54. package/dist/features/parts/schemas/firestore.d.ts +2 -1
  55. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +15 -2
  56. package/dist/features/products/components/MarketplaceBundleCard.js +15 -2
  57. package/dist/features/products/components/MarketplacePrizeDrawCard.js +15 -2
  58. package/dist/features/products/components/ProductGrid.js +18 -2
  59. package/dist/features/products/schemas/firestore.d.ts +18 -0
  60. package/dist/features/seller/components/CategoryInlineSelect.d.ts +10 -1
  61. package/dist/features/seller/components/CategoryInlineSelect.js +53 -5
  62. package/dist/features/seller/components/SellerProductShell.d.ts +39 -0
  63. package/dist/features/seller/components/SellerProductShell.js +31 -3
  64. package/dist/index.d.ts +6 -129
  65. package/dist/index.js +61 -292
  66. package/dist/next/routing/route-map.d.ts +13 -1
  67. package/dist/next/routing/route-map.js +37 -0
  68. package/dist/schemas/registry.d.ts +6 -6
  69. package/dist/server.d.ts +2 -69
  70. package/dist/server.js +8 -69
  71. package/dist/styles.css +468 -1
  72. package/dist/tailwind-utilities.css +1 -1
  73. package/dist/ui/components/PosterCard.d.ts +99 -0
  74. package/dist/ui/components/PosterCard.js +109 -0
  75. package/dist/ui/components/PosterCard.style.css +466 -0
  76. package/dist/ui/components/index.style.css +1 -0
  77. package/dist/ui/index.d.ts +2 -0
  78. package/dist/ui/index.js +2 -0
  79. package/package.json +4 -2
  80. package/scripts/seed-cli.mjs +177 -2
  81. package/dist/features/tester/seed-data/_happy-path.d.ts +0 -23
  82. package/dist/features/tester/seed-data/_happy-path.js +0 -710
  83. package/dist/features/tester/seed-data/_money-flows.d.ts +0 -23
  84. package/dist/features/tester/seed-data/_money-flows.js +0 -610
  85. package/dist/features/tester/seed-data/authored/_types.d.ts +0 -57
  86. package/dist/features/tester/seed-data/authored/_types.js +0 -35
  87. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.d.ts +0 -2
  88. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.js +0 -226
  89. package/dist/features/tester/seed-data/authored/account-auth__signup-login.d.ts +0 -2
  90. package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +0 -329
  91. package/dist/features/tester/seed-data/authored/addresses__address-filters.d.ts +0 -2
  92. package/dist/features/tester/seed-data/authored/addresses__address-filters.js +0 -41
  93. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.d.ts +0 -2
  94. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.js +0 -76
  95. package/dist/features/tester/seed-data/authored/addresses__postal-validation.d.ts +0 -2
  96. package/dist/features/tester/seed-data/authored/addresses__postal-validation.js +0 -78
  97. package/dist/features/tester/seed-data/authored/addresses__state-picker.d.ts +0 -2
  98. package/dist/features/tester/seed-data/authored/addresses__state-picker.js +0 -59
  99. package/dist/features/tester/seed-data/authored/addresses__unban-request.d.ts +0 -2
  100. package/dist/features/tester/seed-data/authored/addresses__unban-request.js +0 -77
  101. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.d.ts +0 -2
  102. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +0 -151
  103. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.d.ts +0 -2
  104. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.js +0 -265
  105. package/dist/features/tester/seed-data/authored/admin__blog-faqs.d.ts +0 -2
  106. package/dist/features/tester/seed-data/authored/admin__blog-faqs.js +0 -131
  107. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.d.ts +0 -2
  108. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.js +0 -143
  109. package/dist/features/tester/seed-data/authored/admin__bulk-actions.d.ts +0 -2
  110. package/dist/features/tester/seed-data/authored/admin__bulk-actions.js +0 -207
  111. package/dist/features/tester/seed-data/authored/admin__bundles.d.ts +0 -2
  112. package/dist/features/tester/seed-data/authored/admin__bundles.js +0 -144
  113. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.d.ts +0 -2
  114. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.js +0 -265
  115. package/dist/features/tester/seed-data/authored/admin__catalog-listings.d.ts +0 -2
  116. package/dist/features/tester/seed-data/authored/admin__catalog-listings.js +0 -318
  117. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.d.ts +0 -2
  118. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.js +0 -177
  119. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.d.ts +0 -2
  120. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.js +0 -165
  121. package/dist/features/tester/seed-data/authored/admin__content-deletes.d.ts +0 -2
  122. package/dist/features/tester/seed-data/authored/admin__content-deletes.js +0 -267
  123. package/dist/features/tester/seed-data/authored/admin__content-marketing.d.ts +0 -2
  124. package/dist/features/tester/seed-data/authored/admin__content-marketing.js +0 -188
  125. package/dist/features/tester/seed-data/authored/admin__coupons.d.ts +0 -2
  126. package/dist/features/tester/seed-data/authored/admin__coupons.js +0 -215
  127. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.d.ts +0 -2
  128. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +0 -202
  129. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.d.ts +0 -2
  130. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.js +0 -249
  131. package/dist/features/tester/seed-data/authored/admin__media-watermark.d.ts +0 -2
  132. package/dist/features/tester/seed-data/authored/admin__media-watermark.js +0 -148
  133. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.d.ts +0 -2
  134. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.js +0 -350
  135. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.d.ts +0 -2
  136. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.js +0 -129
  137. package/dist/features/tester/seed-data/authored/admin__site-system.d.ts +0 -2
  138. package/dist/features/tester/seed-data/authored/admin__site-system.js +0 -586
  139. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.d.ts +0 -2
  140. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.js +0 -260
  141. package/dist/features/tester/seed-data/authored/admin__users-trust.d.ts +0 -2
  142. package/dist/features/tester/seed-data/authored/admin__users-trust.js +0 -569
  143. package/dist/features/tester/seed-data/authored/buying__bidding.d.ts +0 -2
  144. package/dist/features/tester/seed-data/authored/buying__bidding.js +0 -449
  145. package/dist/features/tester/seed-data/authored/buying__browsing-search.d.ts +0 -2
  146. package/dist/features/tester/seed-data/authored/buying__browsing-search.js +0 -684
  147. package/dist/features/tester/seed-data/authored/buying__buying-checkout.d.ts +0 -2
  148. package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +0 -546
  149. package/dist/features/tester/seed-data/authored/buying__buying-coupons.d.ts +0 -2
  150. package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +0 -379
  151. package/dist/features/tester/seed-data/authored/buying__cart.d.ts +0 -2
  152. package/dist/features/tester/seed-data/authored/buying__cart.js +0 -1264
  153. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.d.ts +0 -2
  154. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +0 -122
  155. package/dist/features/tester/seed-data/authored/buying__my-orders.d.ts +0 -2
  156. package/dist/features/tester/seed-data/authored/buying__my-orders.js +0 -279
  157. package/dist/features/tester/seed-data/authored/buying__offers.d.ts +0 -2
  158. package/dist/features/tester/seed-data/authored/buying__offers.js +0 -1127
  159. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.d.ts +0 -2
  160. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.js +0 -153
  161. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.d.ts +0 -2
  162. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.js +0 -252
  163. package/dist/features/tester/seed-data/authored/buying__product-detail.d.ts +0 -2
  164. package/dist/features/tester/seed-data/authored/buying__product-detail.js +0 -474
  165. package/dist/features/tester/seed-data/authored/buying__return-request.d.ts +0 -2
  166. package/dist/features/tester/seed-data/authored/buying__return-request.js +0 -165
  167. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.d.ts +0 -2
  168. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +0 -260
  169. package/dist/features/tester/seed-data/authored/buying__reviews.d.ts +0 -2
  170. package/dist/features/tester/seed-data/authored/buying__reviews.js +0 -128
  171. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +0 -2
  172. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +0 -96
  173. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.d.ts +0 -2
  174. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +0 -283
  175. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.d.ts +0 -2
  176. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.js +0 -169
  177. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.d.ts +0 -2
  178. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.js +0 -105
  179. package/dist/features/tester/seed-data/authored/buying__wishlist-history.d.ts +0 -2
  180. package/dist/features/tester/seed-data/authored/buying__wishlist-history.js +0 -374
  181. package/dist/features/tester/seed-data/authored/community-support__messages.d.ts +0 -2
  182. package/dist/features/tester/seed-data/authored/community-support__messages.js +0 -200
  183. package/dist/features/tester/seed-data/authored/community-support__public-profile.d.ts +0 -2
  184. package/dist/features/tester/seed-data/authored/community-support__public-profile.js +0 -54
  185. package/dist/features/tester/seed-data/authored/community-support__support-tickets.d.ts +0 -2
  186. package/dist/features/tester/seed-data/authored/community-support__support-tickets.js +0 -76
  187. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +0 -4
  188. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +0 -590
  189. package/dist/features/tester/seed-data/authored/content-discovery__blog.d.ts +0 -2
  190. package/dist/features/tester/seed-data/authored/content-discovery__blog.js +0 -110
  191. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.d.ts +0 -2
  192. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.js +0 -149
  193. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.d.ts +0 -2
  194. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +0 -145
  195. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.d.ts +0 -2
  196. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +0 -174
  197. package/dist/features/tester/seed-data/authored/content-discovery__coupons.d.ts +0 -2
  198. package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +0 -169
  199. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.d.ts +0 -2
  200. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.js +0 -209
  201. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.d.ts +0 -2
  202. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.js +0 -207
  203. package/dist/features/tester/seed-data/authored/content-discovery__events.d.ts +0 -2
  204. package/dist/features/tester/seed-data/authored/content-discovery__events.js +0 -377
  205. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.d.ts +0 -2
  206. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.js +0 -87
  207. package/dist/features/tester/seed-data/authored/content-discovery__notifications.d.ts +0 -2
  208. package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +0 -147
  209. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +0 -2
  210. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +0 -209
  211. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.d.ts +0 -2
  212. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +0 -167
  213. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +0 -2
  214. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +0 -73
  215. package/dist/features/tester/seed-data/authored/content-discovery__search.d.ts +0 -2
  216. package/dist/features/tester/seed-data/authored/content-discovery__search.js +0 -363
  217. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +0 -2
  218. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +0 -340
  219. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.d.ts +0 -2
  220. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.js +0 -88
  221. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.d.ts +0 -2
  222. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +0 -78
  223. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.d.ts +0 -2
  224. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.js +0 -76
  225. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.d.ts +0 -2
  226. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.js +0 -62
  227. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.d.ts +0 -2
  228. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.js +0 -163
  229. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.d.ts +0 -2
  230. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.js +0 -61
  231. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.d.ts +0 -2
  232. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.js +0 -89
  233. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.d.ts +0 -2
  234. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +0 -95
  235. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.d.ts +0 -2
  236. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.js +0 -191
  237. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.d.ts +0 -2
  238. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.js +0 -158
  239. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.d.ts +0 -2
  240. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.js +0 -82
  241. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.d.ts +0 -2
  242. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.js +0 -106
  243. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.d.ts +0 -2
  244. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.js +0 -88
  245. package/dist/features/tester/seed-data/authored/design-ux__general-design.d.ts +0 -2
  246. package/dist/features/tester/seed-data/authored/design-ux__general-design.js +0 -204
  247. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.d.ts +0 -2
  248. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.js +0 -301
  249. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +0 -2
  250. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +0 -90
  251. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +0 -2
  252. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +0 -85
  253. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.d.ts +0 -2
  254. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.js +0 -407
  255. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.d.ts +0 -2
  256. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.js +0 -88
  257. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.d.ts +0 -2
  258. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.js +0 -84
  259. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.d.ts +0 -2
  260. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +0 -214
  261. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.d.ts +0 -2
  262. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +0 -275
  263. package/dist/features/tester/seed-data/authored/index.d.ts +0 -2
  264. package/dist/features/tester/seed-data/authored/index.js +0 -301
  265. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.d.ts +0 -2
  266. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +0 -125
  267. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.d.ts +0 -2
  268. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.js +0 -85
  269. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.d.ts +0 -2
  270. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.js +0 -92
  271. package/dist/features/tester/seed-data/authored/page-wiring__reachability.d.ts +0 -2
  272. package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -115
  273. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.d.ts +0 -2
  274. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +0 -137
  275. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.d.ts +0 -2
  276. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +0 -263
  277. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.d.ts +0 -2
  278. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.js +0 -229
  279. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.d.ts +0 -2
  280. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.js +0 -325
  281. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.d.ts +0 -2
  282. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.js +0 -126
  283. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.d.ts +0 -2
  284. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.js +0 -141
  285. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.d.ts +0 -2
  286. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.js +0 -115
  287. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.d.ts +0 -2
  288. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +0 -253
  289. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.d.ts +0 -2
  290. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.js +0 -93
  291. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +0 -3
  292. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +0 -185
  293. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.d.ts +0 -2
  294. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.js +0 -82
  295. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.d.ts +0 -2
  296. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.js +0 -60
  297. package/dist/features/tester/seed-data/authored/selling__become-seller.d.ts +0 -2
  298. package/dist/features/tester/seed-data/authored/selling__become-seller.js +0 -117
  299. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.d.ts +0 -2
  300. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.js +0 -148
  301. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.d.ts +0 -2
  302. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.js +0 -108
  303. package/dist/features/tester/seed-data/authored/selling__listing-a-product.d.ts +0 -2
  304. package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +0 -274
  305. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.d.ts +0 -2
  306. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.js +0 -145
  307. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.d.ts +0 -2
  308. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +0 -336
  309. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.d.ts +0 -2
  310. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.js +0 -136
  311. package/dist/features/tester/seed-data/authored/selling__media-limits.d.ts +0 -2
  312. package/dist/features/tester/seed-data/authored/selling__media-limits.js +0 -135
  313. package/dist/features/tester/seed-data/authored/selling__product-upload-details.d.ts +0 -2
  314. package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +0 -155
  315. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.d.ts +0 -2
  316. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.js +0 -138
  317. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.d.ts +0 -2
  318. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.js +0 -191
  319. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.d.ts +0 -2
  320. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.js +0 -138
  321. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.d.ts +0 -2
  322. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.js +0 -106
  323. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.d.ts +0 -2
  324. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.js +0 -192
  325. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.d.ts +0 -2
  326. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.js +0 -109
  327. package/dist/features/tester/seed-data/authored/selling__seller-guide.d.ts +0 -2
  328. package/dist/features/tester/seed-data/authored/selling__seller-guide.js +0 -34
  329. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.d.ts +0 -2
  330. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +0 -348
  331. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.d.ts +0 -2
  332. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +0 -87
  333. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.d.ts +0 -2
  334. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.js +0 -90
  335. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.d.ts +0 -2
  336. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.js +0 -85
  337. package/dist/features/tester/seed-data/authored/selling__seller-orders.d.ts +0 -2
  338. package/dist/features/tester/seed-data/authored/selling__seller-orders.js +0 -213
  339. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.d.ts +0 -2
  340. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.js +0 -192
  341. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +0 -2
  342. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +0 -77
  343. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.d.ts +0 -2
  344. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.js +0 -165
  345. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.d.ts +0 -2
  346. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.js +0 -116
  347. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.d.ts +0 -2
  348. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.js +0 -127
  349. package/dist/features/tester/seed-data/authored/seo__og-images.d.ts +0 -2
  350. package/dist/features/tester/seed-data/authored/seo__og-images.js +0 -107
  351. package/dist/features/tester/seed-data/authored/seo__page-metadata.d.ts +0 -2
  352. package/dist/features/tester/seed-data/authored/seo__page-metadata.js +0 -120
  353. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.d.ts +0 -2
  354. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +0 -105
  355. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +0 -2
  356. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +0 -58
  357. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +0 -2
  358. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +0 -284
  359. package/dist/features/tester/seed-data/index.d.ts +0 -2
  360. package/dist/features/tester/seed-data/index.js +0 -2
  361. package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +0 -2
  362. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +0 -7601
  363. package/dist/features/tester/seed-data/tester-responses-seed-data.d.ts +0 -2
  364. package/dist/features/tester/seed-data/tester-responses-seed-data.js +0 -95
  365. package/dist/features/tester/seed-data/tester-window.d.ts +0 -25
  366. package/dist/features/tester/seed-data/tester-window.js +0 -66
  367. package/dist/seed/_helpers/brand-rows.d.ts +0 -35
  368. package/dist/seed/_helpers/brand-rows.js +0 -600
  369. package/dist/seed/_helpers/category-content-generated.d.ts +0 -24
  370. package/dist/seed/_helpers/category-content-generated.js +0 -1853
  371. package/dist/seed/_helpers/category-content.d.ts +0 -68
  372. package/dist/seed/_helpers/category-content.js +0 -731
  373. package/dist/seed/_helpers/category-forest.d.ts +0 -4
  374. package/dist/seed/_helpers/category-forest.js +0 -824
  375. package/dist/seed/_helpers/category-images-generated.d.ts +0 -57
  376. package/dist/seed/_helpers/category-images-generated.js +0 -618
  377. package/dist/seed/_helpers/category-models/chunk0.d.ts +0 -2
  378. package/dist/seed/_helpers/category-models/chunk0.js +0 -2648
  379. package/dist/seed/_helpers/category-models/chunk1.d.ts +0 -2
  380. package/dist/seed/_helpers/category-models/chunk1.js +0 -2318
  381. package/dist/seed/_helpers/category-models/chunk2.d.ts +0 -2
  382. package/dist/seed/_helpers/category-models/chunk2.js +0 -2560
  383. package/dist/seed/_helpers/category-models/chunk3.d.ts +0 -2
  384. package/dist/seed/_helpers/category-models/chunk3.js +0 -2196
  385. package/dist/seed/_helpers/category-models/chunk4.d.ts +0 -2
  386. package/dist/seed/_helpers/category-models/chunk4.js +0 -1732
  387. package/dist/seed/_helpers/category-models.d.ts +0 -12
  388. package/dist/seed/_helpers/category-models.js +0 -45
  389. package/dist/seed/_helpers/category-names.d.ts +0 -54
  390. package/dist/seed/_helpers/category-names.js +0 -118
  391. package/dist/seed/_helpers/category-parts-glossary-map.d.ts +0 -1
  392. package/dist/seed/_helpers/category-parts-glossary-map.js +0 -2499
  393. package/dist/seed/_helpers/category-parts.d.ts +0 -9
  394. package/dist/seed/_helpers/category-parts.js +0 -15022
  395. package/dist/seed/_helpers/category-tree.d.ts +0 -27
  396. package/dist/seed/_helpers/category-tree.js +0 -119
  397. package/dist/seed/_helpers/character-features.d.ts +0 -10
  398. package/dist/seed/_helpers/character-features.js +0 -120
  399. package/dist/seed/_helpers/final-sale-fixtures.d.ts +0 -35
  400. package/dist/seed/_helpers/final-sale-fixtures.js +0 -61
  401. package/dist/seed/_helpers/franchise-rows.d.ts +0 -43
  402. package/dist/seed/_helpers/franchise-rows.js +0 -189
  403. package/dist/seed/_helpers/media.d.ts +0 -67
  404. package/dist/seed/_helpers/media.js +0 -172
  405. package/dist/seed/_helpers/part-colours-generated.d.ts +0 -18
  406. package/dist/seed/_helpers/part-colours-generated.js +0 -273
  407. package/dist/seed/_helpers/product-search-txt.d.ts +0 -18
  408. package/dist/seed/_helpers/product-search-txt.js +0 -23
  409. package/dist/seed/_helpers/search-txt-wrappers.d.ts +0 -26
  410. package/dist/seed/_helpers/search-txt-wrappers.js +0 -58
  411. package/dist/seed/addresses-seed-data.d.ts +0 -2
  412. package/dist/seed/addresses-seed-data.js +0 -78
  413. package/dist/seed/authenticity-knowledge-seed-data.d.ts +0 -78
  414. package/dist/seed/authenticity-knowledge-seed-data.js +0 -10729
  415. package/dist/seed/bids-seed-data.d.ts +0 -2
  416. package/dist/seed/bids-seed-data.js +0 -206
  417. package/dist/seed/blog-posts-seed-data.d.ts +0 -6
  418. package/dist/seed/blog-posts-seed-data.js +0 -442
  419. package/dist/seed/carousel-slides-seed-data.d.ts +0 -2
  420. package/dist/seed/carousel-slides-seed-data.js +0 -411
  421. package/dist/seed/carousels-seed-data.d.ts +0 -2
  422. package/dist/seed/carousels-seed-data.js +0 -36
  423. package/dist/seed/cart-seed-data.d.ts +0 -2
  424. package/dist/seed/cart-seed-data.js +0 -241
  425. package/dist/seed/catalogue-seed-data.d.ts +0 -2
  426. package/dist/seed/catalogue-seed-data.js +0 -112
  427. package/dist/seed/categories-seed-data.d.ts +0 -3
  428. package/dist/seed/categories-seed-data.js +0 -816
  429. package/dist/seed/claimed-coupons-seed-data.d.ts +0 -2
  430. package/dist/seed/claimed-coupons-seed-data.js +0 -85
  431. package/dist/seed/coupon-usage-seed-data.d.ts +0 -9
  432. package/dist/seed/coupon-usage-seed-data.js +0 -55
  433. package/dist/seed/coupons-seed-data.d.ts +0 -2
  434. package/dist/seed/coupons-seed-data.js +0 -226
  435. package/dist/seed/defaults/categories.d.ts +0 -2
  436. package/dist/seed/defaults/categories.js +0 -12
  437. package/dist/seed/defaults/faqs.d.ts +0 -2
  438. package/dist/seed/defaults/faqs.js +0 -40
  439. package/dist/seed/events-seed-data.d.ts +0 -7
  440. package/dist/seed/events-seed-data.js +0 -482
  441. package/dist/seed/factories/address.factory.d.ts +0 -21
  442. package/dist/seed/factories/address.factory.js +0 -44
  443. package/dist/seed/factories/bid.factory.d.ts +0 -15
  444. package/dist/seed/factories/bid.factory.js +0 -33
  445. package/dist/seed/factories/blog-post.factory.d.ts +0 -15
  446. package/dist/seed/factories/blog-post.factory.js +0 -22
  447. package/dist/seed/factories/carousel.factory.d.ts +0 -11
  448. package/dist/seed/factories/carousel.factory.js +0 -17
  449. package/dist/seed/factories/cart.factory.d.ts +0 -25
  450. package/dist/seed/factories/cart.factory.js +0 -35
  451. package/dist/seed/factories/category.factory.d.ts +0 -11
  452. package/dist/seed/factories/category.factory.js +0 -16
  453. package/dist/seed/factories/coupon.factory.d.ts +0 -21
  454. package/dist/seed/factories/coupon.factory.js +0 -43
  455. package/dist/seed/factories/faq.factory.d.ts +0 -10
  456. package/dist/seed/factories/faq.factory.js +0 -15
  457. package/dist/seed/factories/notification.factory.d.ts +0 -18
  458. package/dist/seed/factories/notification.factory.js +0 -39
  459. package/dist/seed/factories/order.factory.d.ts +0 -20
  460. package/dist/seed/factories/order.factory.js +0 -20
  461. package/dist/seed/factories/payout.factory.d.ts +0 -21
  462. package/dist/seed/factories/payout.factory.js +0 -38
  463. package/dist/seed/factories/product.factory.d.ts +0 -27
  464. package/dist/seed/factories/product.factory.js +0 -80
  465. package/dist/seed/factories/review.factory.d.ts +0 -14
  466. package/dist/seed/factories/review.factory.js +0 -52
  467. package/dist/seed/factories/session.factory.d.ts +0 -15
  468. package/dist/seed/factories/session.factory.js +0 -31
  469. package/dist/seed/factories/store.factory.d.ts +0 -23
  470. package/dist/seed/factories/store.factory.js +0 -47
  471. package/dist/seed/factories/user.factory.d.ts +0 -19
  472. package/dist/seed/factories/user.factory.js +0 -56
  473. package/dist/seed/faq-seed-data.d.ts +0 -18
  474. package/dist/seed/faq-seed-data.js +0 -1956
  475. package/dist/seed/firestore-indexes.d.ts +0 -12
  476. package/dist/seed/firestore-indexes.js +0 -31
  477. package/dist/seed/grouped-listings-seed-data.d.ts +0 -2
  478. package/dist/seed/grouped-listings-seed-data.js +0 -283
  479. package/dist/seed/history-seed-data.d.ts +0 -12
  480. package/dist/seed/history-seed-data.js +0 -70
  481. package/dist/seed/homepage-sections-seed-data.d.ts +0 -2
  482. package/dist/seed/homepage-sections-seed-data.js +0 -1018
  483. package/dist/seed/index.d.ts +0 -98
  484. package/dist/seed/index.js +0 -112
  485. package/dist/seed/lottery-entries-seed-data.d.ts +0 -2
  486. package/dist/seed/lottery-entries-seed-data.js +0 -108
  487. package/dist/seed/manifest.d.ts +0 -16
  488. package/dist/seed/manifest.js +0 -235
  489. package/dist/seed/media-assets-seed-data.d.ts +0 -22
  490. package/dist/seed/media-assets-seed-data.js +0 -5593
  491. package/dist/seed/model-composition-seed-data.d.ts +0 -15
  492. package/dist/seed/model-composition-seed-data.js +0 -9032
  493. package/dist/seed/notifications-seed-data.d.ts +0 -2
  494. package/dist/seed/notifications-seed-data.js +0 -606
  495. package/dist/seed/offers-seed-data.d.ts +0 -2
  496. package/dist/seed/offers-seed-data.js +0 -398
  497. package/dist/seed/orders-seed-data.d.ts +0 -2
  498. package/dist/seed/orders-seed-data.js +0 -845
  499. package/dist/seed/part-glossary/chunk0.d.ts +0 -9
  500. package/dist/seed/part-glossary/chunk0.js +0 -35448
  501. package/dist/seed/part-glossary/chunk1.d.ts +0 -9
  502. package/dist/seed/part-glossary/chunk1.js +0 -40494
  503. package/dist/seed/part-glossary/chunk2.d.ts +0 -9
  504. package/dist/seed/part-glossary/chunk2.js +0 -51242
  505. package/dist/seed/part-glossary/chunk3.d.ts +0 -9
  506. package/dist/seed/part-glossary/chunk3.js +0 -53337
  507. package/dist/seed/part-glossary/chunk4.d.ts +0 -9
  508. package/dist/seed/part-glossary/chunk4.js +0 -51454
  509. package/dist/seed/part-glossary-seed-data.d.ts +0 -15
  510. package/dist/seed/part-glossary-seed-data.js +0 -25
  511. package/dist/seed/payouts-seed-data.d.ts +0 -2
  512. package/dist/seed/payouts-seed-data.js +0 -302
  513. package/dist/seed/product-features-seed-data.d.ts +0 -3
  514. package/dist/seed/product-features-seed-data.js +0 -366
  515. package/dist/seed/products-art-seed-data.d.ts +0 -2
  516. package/dist/seed/products-art-seed-data.js +0 -289
  517. package/dist/seed/products-auctions-seed-data.d.ts +0 -2
  518. package/dist/seed/products-auctions-seed-data.js +0 -475
  519. package/dist/seed/products-beyblade-x-seed-data.d.ts +0 -2
  520. package/dist/seed/products-beyblade-x-seed-data.js +0 -476
  521. package/dist/seed/products-catalogue-seed-data.d.ts +0 -22
  522. package/dist/seed/products-catalogue-seed-data.js +0 -86384
  523. package/dist/seed/products-classifieds-seed-data.d.ts +0 -7
  524. package/dist/seed/products-classifieds-seed-data.js +0 -435
  525. package/dist/seed/products-digital-codes-seed-data.d.ts +0 -7
  526. package/dist/seed/products-digital-codes-seed-data.js +0 -395
  527. package/dist/seed/products-live-items-seed-data.d.ts +0 -7
  528. package/dist/seed/products-live-items-seed-data.js +0 -269
  529. package/dist/seed/products-preorders-seed-data.d.ts +0 -2
  530. package/dist/seed/products-preorders-seed-data.js +0 -360
  531. package/dist/seed/products-prize-draws-seed-data.d.ts +0 -7
  532. package/dist/seed/products-prize-draws-seed-data.js +0 -427
  533. package/dist/seed/products-spares-seed-data.d.ts +0 -2
  534. package/dist/seed/products-spares-seed-data.js +0 -368
  535. package/dist/seed/products-standard-seed-data.d.ts +0 -2
  536. package/dist/seed/products-standard-seed-data.js +0 -632
  537. package/dist/seed/products-stickers-seed-data.d.ts +0 -2
  538. package/dist/seed/products-stickers-seed-data.js +0 -319
  539. package/dist/seed/reviews-seed-data.d.ts +0 -1
  540. package/dist/seed/reviews-seed-data.js +0 -185
  541. package/dist/seed/runner.d.ts +0 -2
  542. package/dist/seed/runner.js +0 -125
  543. package/dist/seed/scammers-seed-data.d.ts +0 -2
  544. package/dist/seed/scammers-seed-data.js +0 -235
  545. package/dist/seed/seed-market-config.d.ts +0 -48
  546. package/dist/seed/seed-market-config.js +0 -199
  547. package/dist/seed/seed-purpose.d.ts +0 -299
  548. package/dist/seed/seed-purpose.js +0 -431
  549. package/dist/seed/sessions-seed-data.d.ts +0 -3
  550. package/dist/seed/sessions-seed-data.js +0 -116
  551. package/dist/seed/shipments-seed-data.d.ts +0 -5
  552. package/dist/seed/shipments-seed-data.js +0 -185
  553. package/dist/seed/site-settings-seed-data.d.ts +0 -2
  554. package/dist/seed/site-settings-seed-data.js +0 -1069
  555. package/dist/seed/store-addresses-seed-data.d.ts +0 -18
  556. package/dist/seed/store-addresses-seed-data.js +0 -71
  557. package/dist/seed/store-extensions-seed-data.d.ts +0 -11
  558. package/dist/seed/store-extensions-seed-data.js +0 -292
  559. package/dist/seed/stores-seed-data.d.ts +0 -6
  560. package/dist/seed/stores-seed-data.js +0 -242
  561. package/dist/seed/support-tickets-seed-data.d.ts +0 -16
  562. package/dist/seed/support-tickets-seed-data.js +0 -239
  563. package/dist/seed/tax-codes-seed-data.d.ts +0 -34
  564. package/dist/seed/tax-codes-seed-data.js +0 -100
  565. package/dist/seed/test-data-ttl.d.ts +0 -29
  566. package/dist/seed/test-data-ttl.js +0 -31
  567. package/dist/seed/test-utils.d.ts +0 -49
  568. package/dist/seed/test-utils.js +0 -110
  569. package/dist/seed/types.d.ts +0 -89
  570. package/dist/seed/types.js +0 -15
  571. package/dist/seed/users-seed-data.d.ts +0 -2
  572. package/dist/seed/users-seed-data.js +0 -597
  573. package/dist/seed/wishlists-seed-data.d.ts +0 -12
  574. package/dist/seed/wishlists-seed-data.js +0 -54
@@ -1,586 +0,0 @@
1
- /*
2
- * WHY: Authored six-part procedures for the admin/site-system checklist page.
3
- * WHAT: 37 case(s), keyed by full checklist id.
4
- *
5
- * 🛑 SITE SETTINGS IS PRESERVE-TIER, AND THE TESTER RULES SAY NEVER MODIFY IT.
6
- * That rule and this page are not in conflict, but the reconciliation has to be
7
- * stated or a tester following the rules literally answers `null` to all of them.
8
- *
9
- * The rule exists because `siteSettings` is NEVER wiped and NEVER reseeded — the
10
- * lifecycle preserves it by design, so unlike the catalogue there is nothing to
11
- * put it back. What it forbids is leaving it CHANGED, not touching it.
12
- *
13
- * So every mutating case here does three things, and a case that skips any of
14
- * them is the defect rather than the coverage:
15
- *
16
- * 1. read and write down the existing value BEFORE editing,
17
- * 2. make the smallest change that proves the point,
18
- * 3. RESTORE the recorded value — not "clear the field", which is a different
19
- * destructive edit wearing the same clothes.
20
- *
21
- * Three cases had no restore at all until 2026-09-29, and one of them overwrote
22
- * the PhonePe Client ID, Client Secret and both webhook credentials with QA
23
- * values and walked away. Running it would have disabled online payment for real
24
- * buyers, silently, until somebody with the real keys noticed.
25
- *
26
- * Written by hand, case by case, against the label each one states. There is no
27
- * generator: the authoring scripts were deleted once it was clear they were
28
- * scaffolding around work that is simply writing.
29
- *
30
- * 🛑 SITE SETTINGS IS ONE DOCUMENT. Nineteen tabs write one record, so a form that
31
- * submits its whole object from partly-populated state can blank branding, fees,
32
- * integrations and legal copy in a single save that reports success. Two cases
33
- * here walk EVERY tab after editing one field, and that is not padding.
34
- *
35
- * 🛑 THE CREDENTIALS ARE AES-ENCRYPTED AND NEVER LEAVE THE SERVER. The admin read
36
- * strips the ciphertext and returns masked values; the public read is an
37
- * allow-list projection. Several cases read the PUBLIC response rather than the
38
- * admin form, because a masked field over an unmasked payload is a leak that looks
39
- * like a fix.
40
- *
41
- * 🛑 THE OBSERVABILITY PAGES ARE WHERE PRERENDER FAILURES SURFACE. Removing a
42
- * blanket dynamic-rendering export once exposed four error pages that were
43
- * throwing a missing-index precondition in production — invisible until then
44
- * because those pages were never prerendered.
45
- *
46
- * @tag domain:tester
47
- * @tag layer:seed
48
- * @tag pattern:none
49
- * @tag access:server-only
50
- * @tag consumers:seed-data/authored/index.ts
51
- * @tag sideEffects:none
52
- */
53
- export const authored = {
54
- "checklist-admin-site-system-site-settings-admin": {
55
- roles: ["admin"],
56
- startPage: "/admin/site",
57
- steps: [
58
- "Sign in as admin@letitrip.in / TempPass123!.",
59
- "Open /admin/site and read every tab in the strip.",
60
- "Open each tab in turn and note one distinctive value from each.",
61
- "Check every tab renders its fields rather than an empty panel.",
62
- "Read whether any tab shows raw ciphertext beginning with an encryption prefix.",
63
- "Reload and confirm every tab still renders.",
64
- ],
65
- expectedBehaviour: "Every settings tab renders its own fields from the one settings document. The admin read strips the raw encrypted credential blob and returns masked values instead — ciphertext in a browser is needless exposure even though it is unreadable.",
66
- expectedUiState: "All nineteen tabs render fields. No tab shows a raw encrypted value. A tab that opens empty is the finding, named specifically.",
67
- endResult: "Read-only; save nothing.",
68
- },
69
- "checklist-admin-site-system-site-settings-credentials-save": {
70
- roles: ["admin"],
71
- startPage: "/admin/site",
72
- steps: [
73
- "Sign in as admin@letitrip.in / TempPass123!.",
74
- "Open /admin/site and go to the credentials tab.",
75
- "Read how existing credentials are displayed, and WRITE DOWN the masked value of every field on the tab before touching anything.",
76
- "Pick a field whose masked value shows a *_PLACEHOLDER or is empty — never one holding a real key. Type QA-CREDENTIAL-118427 into that field and save.",
77
- "Read the confirmation and RELOAD the tab.",
78
- "Read how that credential now displays.",
79
- "Open /api/site-settings in a private window and search the response for QA-CREDENTIAL-118427.",
80
- "RESTORE the field to exactly what step 3 recorded — clearing it is NOT restoring it, and siteSettings survives every run, so a cleared real key is gone for good. Save and reload to confirm the original masked value is back.",
81
- ],
82
- inputs: { credential: "QA-CREDENTIAL-118427" },
83
- expectedBehaviour: "A credential is encrypted before storage and returned masked. The encryption helper THROWS when its key is unset — so a save that fails outright is a missing-key problem rather than a form bug, and a save that succeeds while storing plaintext is worse than either.",
84
- expectedUiState: "After the reload the credential shows masked rather than as the typed value or as raw ciphertext. The public settings response contains no trace of it. A save that errors should name the missing configuration rather than showing a stack trace.",
85
- expectedData: { credentialInPublicResponse: 0 },
86
- endResult: "The field holds exactly what it held before the case ran — restored, not cleared. A hit in the public response is a credential leak and fails the case outright.",
87
- },
88
- "checklist-admin-site-system-site-settings-credentials-partial-save-keeps-others": {
89
- roles: ["admin"],
90
- startPage: "/admin/site",
91
- steps: [
92
- "Sign in as admin@letitrip.in / TempPass123!.",
93
- "Open the credentials tab and write down which credentials are currently SET versus empty.",
94
- "Type a value into ONE empty credential field and save.",
95
- "RELOAD the tab and read every credential's state again.",
96
- "Compare against what was written down.",
97
- "Check no previously-set credential has become empty.",
98
- "Clear the field you set, save, and reload.",
99
- ],
100
- expectedBehaviour: "Saving one credential leaves the others encrypted and intact. A form that submits masked placeholders back as real values would overwrite every other credential with its own mask — and because the values are write-only from the browser's point of view, nobody would notice until an integration stopped working.",
101
- expectedUiState: "After the reload only the edited credential has changed state. Every previously-set credential is still set. One reading as empty afterwards is the failure, and it is unrecoverable — the original value cannot be read back to restore it.",
102
- expectedData: { credentialsUnintentionallyCleared: 0 },
103
- endResult: "The edited field is cleared. This is the most destructive save on the page: a cleared credential cannot be recovered from the UI.",
104
- },
105
- "checklist-admin-site-system-site-settings-themes-tab": {
106
- roles: ["admin", "guest"],
107
- startPage: "/admin/site",
108
- steps: [
109
- "Sign in as admin@letitrip.in / TempPass123!.",
110
- "Open the themes tab and read every theme listed.",
111
- "Check the two built-in themes are present and cannot be deleted.",
112
- "Duplicate one, rename the copy 'QA Theme site-system', change a brand colour and save.",
113
- "Set it as the default for light mode and save.",
114
- "Open / in a private window and check the new colour is applied.",
115
- "Restore the original default and delete the copy.",
116
- ],
117
- inputs: { themeName: "QA Theme site-system" },
118
- expectedBehaviour: "Themes are records whose colour tokens are written to the document root at runtime, so a change restyles the site without a deploy. The two built-ins cannot be deleted — deleting the active default would leave the site with no theme to apply.",
119
- expectedUiState: "Both built-ins are present and their delete controls are absent or refused. The duplicate saves, becomes the default, and the public site picks up the changed colour. After restoring, the original colours return.",
120
- endResult: "The original default is restored and the copy deleted. Leaving a QA theme as the site default changes the site for every visitor.",
121
- },
122
- "checklist-admin-site-system-site-settings-notifications-non-digest": {
123
- roles: ["admin"],
124
- startPage: "/admin/site",
125
- steps: [
126
- "Sign in as admin@letitrip.in / TempPass123!.",
127
- "Open the notifications tab and read every notification type listed.",
128
- "Count them and compare against the full type list the system uses.",
129
- "Look specifically for offer-received and payment-review among them.",
130
- "Turn one channel off for one type and save.",
131
- "RELOAD and check only that one changed.",
132
- "Turn it back on and save.",
133
- ],
134
- expectedBehaviour: "Every notification type is listed so every one can be allow-listed per channel. The channel allow-list was once built from a nine-value copy of a twenty-seven-value union — eighteen types were unfilterable and two could not be configured for any channel at all.",
135
- expectedUiState: "The tab lists every type, including offer-received and payment-review. After the reload only the toggled channel differs and every other type's settings are unchanged.",
136
- endResult: "The channel is restored.",
137
- },
138
- "checklist-admin-site-system-phonepe-credentials-persist": {
139
- roles: ["admin"],
140
- startPage: "/admin/site",
141
- steps: [
142
- "Sign in as admin@letitrip.in / TempPass123!.",
143
- "Open /admin/site and switch to the Integrations tab.",
144
- "WRITE DOWN the current PhonePe Client ID, Client Secret, Client Version, Environment and both webhook credential fields — the masked form of each. You must be able to put them back; nothing else will.",
145
- "Type QA-PHONEPE-CLIENT-991 into the Client ID field, QA-PHONEPE-SECRET-991 into the Client Secret field, and QA-WEBHOOK-USER-991 / QA-WEBHOOK-PASS-991 into the two webhook fields.",
146
- "Save, then hard-reload the page.",
147
- "Read how the Client Secret and both webhook fields display.",
148
- "Change only the PhonePe Environment dropdown, save again, and reload.",
149
- "RESTORE every one of the six fields to exactly what step 3 recorded, save, and reload to confirm. This is not optional housekeeping: siteSettings is never reseeded, so QA values left in the PhonePe Client ID and Secret disable online payment for real buyers until someone notices and has the real keys to hand.",
150
- ],
151
- inputs: {
152
- clientId: "QA-PHONEPE-CLIENT-991",
153
- clientSecret: "QA-PHONEPE-SECRET-991",
154
- webhookUsername: "QA-WEBHOOK-USER-991",
155
- webhookPassword: "QA-WEBHOOK-PASS-991",
156
- },
157
- expectedBehaviour: "PhonePe replaced Razorpay entirely in this codebase. The Client ID and Environment are stored and displayed in the clear; the Client Secret and both webhook credentials are encrypted at rest and masked on read, the same pattern as the WhatsApp access token. Saving an unrelated field (Environment) must not silently blank or overwrite the already-masked secret fields with their own mask value.",
158
- expectedUiState: "After the first reload, Client ID reads QA-PHONEPE-CLIENT-991 in the clear; the Client Secret and both webhook fields show a masked placeholder, not the raw value and not blank. After changing only Environment and reloading again, the masked fields are still masked and checkout still reaches PhonePe (the credentials were not wiped).",
159
- endResult: "The credential fields hold the values entered through this case's own saves, and PhonePe checkout keeps working afterward.",
160
- },
161
- "checklist-admin-site-system-phonepe-enabled-toggle-persists": {
162
- roles: ["admin", "buyer"],
163
- startPage: "/admin/site",
164
- steps: [
165
- "Sign in as admin@letitrip.in / TempPass123!.",
166
- "Open /admin/site and switch to the Shipping tab.",
167
- "Read the current state of the 'PhonePe (online card/UPI) enabled' toggle. It is seeded OFF (phonepeEnabled: false), so ON is the direction that proves anything here — turning OFF something already off would leave PhonePe absent from checkout for the reason it was always absent, and pass trivially.",
168
- "Turn it ON, save, and open /checkout in another tab (with an item in the cart) to confirm 'Pay Online (PhonePe)' is now offered in the payment step.",
169
- "Return to Site Settings, RELOAD, and confirm the toggle still reads ON — the save is not proven until the reload.",
170
- "Turn it back OFF and save, restoring the seeded state.",
171
- "Reopen /checkout and confirm 'Pay Online (PhonePe)' is absent again.",
172
- ],
173
- expectedBehaviour: "The toggle lives under the Shipping tab's 'Payment methods' section, not a dedicated Payments tab — the same admin field checkout's payment-method list reads from. It gates whether the PhonePe option is offered at all, independent of the manual-UPI and COD toggles beside it.",
174
- expectedUiState: "With the toggle OFF, /checkout offers only whichever of manual UPI/cash and COD are separately enabled — no 'Pay Online (PhonePe)' button. With it back ON, the button reappears.",
175
- endResult: "The toggle is restored to ON, matching the state before this case started.",
176
- },
177
- "checklist-admin-site-system-auction-bid-tiers-admin": {
178
- roles: ["admin", "buyer"],
179
- startPage: "/admin/site",
180
- steps: [
181
- "Sign in as admin@letitrip.in / TempPass123!.",
182
- "Open the auction settings and read every bid-increment tier and its price band.",
183
- "Check the bands are contiguous with no gap and no overlap.",
184
- "Change one tier's increment and save.",
185
- "RELOAD and confirm only that tier changed.",
186
- "Sign in as a buyer, open an auction whose current bid sits in that band, and read the minimum increment shown.",
187
- "Restore the original tier.",
188
- ],
189
- expectedBehaviour: "The tiers are contiguous price bands, so every possible current bid falls in exactly one — a gap leaves an auction with no defined increment and an overlap makes the answer depend on evaluation order. A per-listing override may only RAISE the tier's floor, never lower it.",
190
- expectedUiState: "The bands cover the range with no gap or overlap. After the reload only the edited tier differs, and an auction in that band shows the new increment.",
191
- endResult: "The tier is restored.",
192
- },
193
- "checklist-admin-site-system-daily-digest-recipients-save": {
194
- roles: ["admin"],
195
- startPage: "/admin/site",
196
- steps: [
197
- "Sign in as admin@letitrip.in / TempPass123!.",
198
- "Open the daily digest settings and read the current recipients.",
199
- "Add qa-digest@mailnull.com to the list and save.",
200
- "RELOAD and read the recipients.",
201
- "Remove one existing recipient, save, RELOAD, and check the others survived.",
202
- "Type not-an-email and attempt to save, reading where the error appears.",
203
- "Restore the original recipient list.",
204
- ],
205
- inputs: { newRecipient: "qa-digest@mailnull.com", invalid: "not-an-email" },
206
- expectedBehaviour: "The recipient list round-trips and each entry is validated as an email before saving. Removing one must not disturb the rest — a list field replaced wholesale from a partly-populated form loses every entry the form did not load.",
207
- expectedUiState: "After each reload the list holds exactly what was saved. 'not-an-email' is rejected on the field before any request. Removing one leaves the others.",
208
- endResult: "The original recipient list is restored.",
209
- },
210
- "checklist-admin-site-system-daily-digest-on-deploy": {
211
- roles: ["admin"],
212
- startPage: "/admin/site",
213
- steps: [
214
- "Sign in as admin@letitrip.in / TempPass123!.",
215
- "Open the daily digest settings and read whether a send-on-deploy option exists.",
216
- "Read what it says it will do and when.",
217
- "Read whether a manual send or preview control exists.",
218
- "Use the preview if one is offered and read what it produces.",
219
- "Read whether the digest's schedule is stated.",
220
- ],
221
- expectedBehaviour: "The digest runs on a schedule and its trigger is stated rather than implied. Each scheduled function is a registered job with a real recurring cost, so a digest that claims to send on every deploy as well as on a schedule is describing two triggers and the page should say which is live.",
222
- expectedUiState: "The schedule and any deploy trigger are both stated. A preview, where offered, renders the digest rather than erroring. An option whose behaviour is not described is the finding.",
223
- endResult: "Read-only; send nothing.",
224
- },
225
- "checklist-admin-site-system-daily-digest-email-content": {
226
- roles: ["admin"],
227
- startPage: "/admin/site",
228
- steps: [
229
- "Sign in as admin@letitrip.in / TempPass123!.",
230
- "Open the daily digest settings and trigger a preview or a test send to qa-digest@mailnull.com.",
231
- "Read the digest's subject and body.",
232
- "Check the figures in it against the admin dashboard's own figures.",
233
- "Read the From name and check it is spelled LetItRip exactly.",
234
- "Check every link in the digest resolves to the live site.",
235
- "Read whether any buyer PII appears in the digest.",
236
- ],
237
- expectedBehaviour: "The digest reports real figures from the same source the dashboard reads, from the site's own sender. Its links must be absolute and on the canonical host — a digest is read in a mail client where a relative link is meaningless.",
238
- expectedUiState: "Figures match the dashboard. The From name reads 'LetItRip' exactly, not 'Letitrip' or 'LetiTrip'. Every link opens the live site. Record any buyer name, email or address that appears.",
239
- endResult: "One test digest exists in the mailbox.",
240
- },
241
- "checklist-admin-site-system-admin-dashboard-widgets": {
242
- roles: ["admin"],
243
- startPage: "/admin",
244
- steps: [
245
- "Sign in as admin@letitrip.in / TempPass123!.",
246
- "Open /admin and read every widget and its figure.",
247
- "Write down any widget reading zero, a dash, or an empty state.",
248
- "Cross-check two figures against their own listing pages.",
249
- "Reload and confirm the figures are the same.",
250
- "Resize to 390 pixels and check every widget is readable.",
251
- ],
252
- inputs: { mobileWidth: 390 },
253
- expectedBehaviour: "Dashboard figures come from pre-computed rollups rather than scanning collections per request — that is the pattern that keeps a dashboard load inside the read budget. A figure that fails to compute must read as unknown rather than as zero: zero is a claim and it is the wrong one.",
254
- expectedUiState: "Widgets show real figures consistent with their listing pages. A dash for a genuinely unavailable metric is fine; a confident zero beside a list that clearly has rows is not. Everything is readable at 390 pixels.",
255
- endResult: "Read-only; nothing persists.",
256
- },
257
- "checklist-admin-site-system-analytics-admin": {
258
- roles: ["admin"],
259
- startPage: "/admin/analytics",
260
- steps: [
261
- "Sign in as admin@letitrip.in / TempPass123!.",
262
- "Open /admin/analytics and read every card and chart.",
263
- "Write down any figure reading zero or a dash.",
264
- "Change the date range if one is offered and read the figures again.",
265
- "Reload and confirm the figures are stable.",
266
- "Read whether any card reports an error rather than a figure.",
267
- ],
268
- expectedBehaviour: "Analytics render real figures. A pageview counter backed by Firestore is the live one; an older realtime-database counter was never writable by clients at all — its rules deny every write — so any card fed by it reported nothing while rendering as though it were loading.",
269
- expectedUiState: "Cards show figures rather than persistent dashes. A card stuck showing a placeholder is indistinguishable from one still loading, which is why the reload matters. Record any card that never resolves.",
270
- endResult: "Read-only; nothing persists.",
271
- },
272
- "checklist-admin-site-system-analytics-traffic-card-has-numbers": {
273
- roles: ["admin", "guest"],
274
- startPage: "/admin/analytics",
275
- steps: [
276
- "Sign in as admin@letitrip.in / TempPass123! and read the traffic card's current figure.",
277
- "In a private window, open /, /products and a product page.",
278
- "Wait a minute, then reload the admin analytics page.",
279
- "Read the traffic figure again and compare.",
280
- "Read whether the card distinguishes unique visitors from pageviews.",
281
- ],
282
- expectedBehaviour: "The traffic card counts real pageviews and moves when pages are viewed. A card fed by a write path that is denied by the database rules never increments and shows a dash forever — which reads as 'still loading' rather than as broken.",
283
- expectedUiState: "The figure increases after the browsing. A figure that never moves, or a dash that never resolves, is the failure. Record whether the card counts views or visitors.",
284
- expectedData: { figureIncreased: true },
285
- endResult: "Read-only; nothing persists.",
286
- },
287
- "checklist-admin-site-system-analytics-no-permission-denied": {
288
- roles: ["admin"],
289
- startPage: "/admin/analytics",
290
- steps: [
291
- "Sign in as admin@letitrip.in / TempPass123!.",
292
- "Open the browser console and clear it.",
293
- "Open /admin/analytics and wait for every card to settle.",
294
- "Read the console for any permission-denied message.",
295
- "Open the admin dashboard and read the console again.",
296
- "Note which card or widget was loading when any such message appeared.",
297
- ],
298
- expectedBehaviour: "No client-side read is denied. A denied realtime read fires no error callback at all where none is supplied, so the component sits in its initial state forever — the console message is the only evidence, and it is the difference between a card that is slow and one that will never load.",
299
- expectedUiState: "The console shows no permission-denied messages. Any that appear are recorded with the card that was loading, since that pairing is what identifies the dead read.",
300
- expectedData: { permissionDeniedMessages: 0 },
301
- endResult: "Read-only; nothing persists.",
302
- },
303
- "checklist-admin-site-system-pageviews-report-listing-standard": {
304
- roles: ["admin", "guest"],
305
- startPage: "/admin/analytics",
306
- steps: [
307
- "Sign in as admin@letitrip.in / TempPass123! and open the pageviews report.",
308
- "Note the figure for a specific standard product page.",
309
- "In a private window, open that product page three times.",
310
- "Wait a minute and reload the report.",
311
- "Read the figure for that page and compare.",
312
- "Check the report identifies the page by a readable path rather than an internal id.",
313
- ],
314
- expectedBehaviour: "Pageviews are recorded per path and the report attributes them to a page a human can recognise. The counter that works is the Firestore one; the report must read that rather than an older realtime counter whose writes are denied.",
315
- expectedUiState: "The product page's figure rises by roughly three. Rows name readable paths. A figure that does not move is the failure.",
316
- endResult: "Read-only; nothing persists.",
317
- },
318
- "checklist-admin-site-system-pageviews-tracks-all-listing-types": {
319
- roles: ["admin", "guest"],
320
- startPage: "/admin/analytics",
321
- steps: [
322
- "Sign in as admin@letitrip.in / TempPass123! and open the pageviews report.",
323
- "In a private window, open one page of each listing type — a product, an auction, a pre-order, a prize draw, a classified, a digital code, a live item and an art print.",
324
- "Wait a minute and reload the report.",
325
- "Read the report for each of those paths.",
326
- "Write down any listing type whose page does not appear.",
327
- ],
328
- expectedBehaviour: "Every listing type's detail page is tracked. Each type has its own route, so a tracker wired per route rather than shared misses whichever routes were added after it — and the types added last are exactly the ones most likely to be missing.",
329
- expectedUiState: "All eight paths appear in the report with a non-zero figure. Any type absent is the finding, named by type.",
330
- expectedData: { untrackedListingTypes: 0 },
331
- endResult: "Read-only; nothing persists.",
332
- },
333
- "checklist-admin-site-system-maintenance-pages-admin": {
334
- roles: ["admin"],
335
- startPage: "/admin/maintenance",
336
- steps: [
337
- "Sign in as admin@letitrip.in / TempPass123!.",
338
- "Open /admin/maintenance and read every page it links to.",
339
- "Open each in turn and confirm it renders content rather than an error.",
340
- "Note any that shows a failed-precondition or missing-index error.",
341
- "Note any that shows a permission or credentials error.",
342
- "Reload each one that errored and read whether the error is consistent.",
343
- ],
344
- expectedBehaviour: "Every maintenance page renders. These pages are where prerender failures surface: removing a blanket dynamic-rendering export once exposed four error pages throwing a missing-index precondition in production, invisible until then because they were never prerendered. A server-side read here belongs in a guarded read so one missing index degrades the page rather than failing the build.",
345
- expectedUiState: "Every page renders content or a named empty state. A raw failed-precondition or index error shown as the page body is the finding, named by page.",
346
- endResult: "Read-only; nothing persists.",
347
- },
348
- "checklist-admin-site-system-maintenance-error-lists-have-rows": {
349
- roles: ["admin"],
350
- startPage: "/admin/maintenance",
351
- steps: [
352
- "Sign in as admin@letitrip.in / TempPass123!.",
353
- "Open /admin/maintenance/server-errors and read the rows.",
354
- "Read whether rows carry a source, a code, a message and a time.",
355
- "Open /admin/maintenance/client-errors and read its rows.",
356
- "Open /admin/maintenance/function-errors and read its rows.",
357
- "Note which of the three lists is empty.",
358
- "Check the sort order puts the newest first.",
359
- ],
360
- expectedBehaviour: "Server and client errors both have live producers — route throws, render throws, action failures, and the browser beacon. The FUNCTION source has no production producer at all, so an empty function list is expected rather than a failure, and mistaking it for a working-but-quiet list is the trap. These lists are also ordered newest-first, which requires the index to be declared in that direction.",
361
- expectedUiState: "Server and client lists hold rows with source, code, message and time, newest first. An empty function list is expected. A list showing an index error instead of rows is the failure.",
362
- endResult: "Read-only; nothing persists.",
363
- },
364
- "checklist-admin-site-system-maintenance-cloud-logs-degrades": {
365
- roles: ["admin"],
366
- startPage: "/admin/maintenance",
367
- steps: [
368
- "Sign in as admin@letitrip.in / TempPass123!.",
369
- "Open /admin/maintenance/cloud-logs and read what renders.",
370
- "Read whether it shows log entries, an empty state, or an error.",
371
- "If it errors, read whether the message names the missing configuration.",
372
- "Reload and confirm the behaviour is consistent.",
373
- "Check the rest of the admin panel still works afterwards.",
374
- ],
375
- expectedBehaviour: "This page calls an external cloud API, so it must degrade rather than throw when that call is unavailable — an unguarded read here fails the production BUILD, not merely the page, because the framework still attempts to prerender pages beneath a session-reading layout even though it discards the output.",
376
- expectedUiState: "The page renders logs, or a readable message naming what is unavailable. It does not show a stack trace, and it does not take the rest of the admin panel with it.",
377
- endResult: "Read-only; nothing persists.",
378
- },
379
- "checklist-admin-site-system-team-admin": {
380
- roles: ["admin"],
381
- startPage: "/admin/team",
382
- steps: [
383
- "Sign in as admin@letitrip.in / TempPass123!.",
384
- "Open /admin/team and read every employee, their role and their permission preset.",
385
- "Open the invite panel by URL at /admin/team/new and check it opens already showing the form.",
386
- "Close it and confirm the browser lands back on /admin/team.",
387
- "Open an employee's editor, change only their preset, and save.",
388
- "RELOAD and check every other field is unchanged.",
389
- "Restore the original preset.",
390
- ],
391
- expectedBehaviour: "The team list and the invite editor are both real pages, and the editor opens already showing its form when reached by URL. A preset change must leave the rest of the record alone — the same list-serializer trap that stripped tester flags applies to any field the list omits.",
392
- expectedUiState: "The invite URL opens with the form visible rather than a blank page, and closing returns to /admin/team. After the preset change only the preset differs.",
393
- endResult: "The preset is restored.",
394
- },
395
- "checklist-admin-site-system-team-permission-group-filter": {
396
- roles: ["admin"],
397
- startPage: "/admin/team",
398
- steps: [
399
- "Sign in as admin@letitrip.in / TempPass123!.",
400
- "Open /admin/team and note the total number of employees listed.",
401
- "Apply one filter chip and read the rows returned.",
402
- "Clear it, apply a different chip, and read the rows.",
403
- "Apply two chips together and read the rows.",
404
- "Clear everything and confirm the original count returns.",
405
- ],
406
- expectedBehaviour: "Applying a filter chip narrows the list and still returns employees. A filter builder that CONCATENATES its clauses rather than joining them produces one malformed clause matching nothing, so any chip empties the whole list — and the unit test for this route asserted against the correct behaviour rather than the real one, so it passed for as long as the bug existed.",
407
- expectedUiState: "Every chip returns at least one employee and two chips together return a subset. A chip that empties the list entirely is the exact failure.",
408
- expectedData: { emptyChipCount: 0 },
409
- endResult: "Read-only; nothing persists beyond the URL.",
410
- },
411
- "checklist-admin-site-system-audit-log-actor-search": {
412
- roles: ["admin"],
413
- startPage: "/admin/audit-log",
414
- steps: [
415
- "Sign in as admin@letitrip.in / TempPass123!.",
416
- "Open /admin/audit-log and read the newest entries.",
417
- "Check each names an actor, an action, a target and a time.",
418
- "Read every action filter offered and select each, noting any that returns nothing.",
419
- "Search for an actor and read the results.",
420
- "Search zzzznope and read the count.",
421
- "Read whether any entry contains a buyer's name or email rather than an id.",
422
- ],
423
- inputs: { nonsenseQuery: "zzzznope" },
424
- expectedBehaviour: "The log records high-value privileged actions with actor, action and target. It is deliberately NOT PII-encrypted, which is exactly why its metadata carries uids rather than names — a name in this collection would be stored in plaintext and never decrypted on the way out.",
425
- expectedUiState: "Entries name an actor, action, target and time. Every action filter returns its own rows or is genuinely empty. 'zzzznope' returns none. No entry carries a buyer's name or email in place of an id.",
426
- expectedData: { piiInAuditEntries: 0 },
427
- endResult: "Read-only; nothing persists beyond the URL.",
428
- },
429
- "checklist-admin-site-system-admin-audit-log-page": {
430
- roles: ["admin"],
431
- startPage: "/admin/audit-log",
432
- steps: [
433
- "Sign in as admin@letitrip.in / TempPass123!.",
434
- "Open /admin/audit-log directly and confirm it renders.",
435
- "Find its entry in the admin sidebar and click it.",
436
- "Perform one instrumented action elsewhere — change a user's role and change it back.",
437
- "Return to the audit log and read the newest entries.",
438
- "Check both changes are recorded with the acting admin.",
439
- "Open an entry's detail and read its metadata.",
440
- ],
441
- expectedBehaviour: "The log is reachable from the sidebar and records the instrumented actions — role changes, bans, coupon updates, payout marks, store status changes and the checkout bypass. Writing to it is best-effort: a failed audit write never fails the underlying action, so a missing entry is a logging gap rather than a failed change.",
442
- expectedUiState: "The page is linked from the sidebar and renders. Both role changes appear with the acting admin and timestamps. An entry opens to show its metadata.",
443
- endResult: "The user's role is unchanged overall. Two audit entries exist for it.",
444
- },
445
- "checklist-admin-site-system-notifications-user-search": {
446
- roles: ["admin"],
447
- startPage: "/admin/notifications",
448
- steps: [
449
- "Sign in as admin@letitrip.in / TempPass123!.",
450
- "Open /admin/notifications and read the search box's placeholder for how it matches.",
451
- "Read a recipient identifier from any row.",
452
- "Search that identifier exactly and read the results.",
453
- "Search only the first half and read the results.",
454
- "Search zzzznope and read the count.",
455
- ],
456
- inputs: { nonsenseQuery: "zzzznope" },
457
- expectedBehaviour: "Recipient identities are PII-encrypted at rest, so they match exactly through a blind index and a partial cannot match — by design rather than omission, which is why the box has to SAY so. Without that, a partial search returning nothing reads as a broken search.",
458
- expectedUiState: "The exact identifier returns its rows, the partial returns none, and the box states that matching is exact. 'zzzznope' returns none.",
459
- expectedData: { partialMatchCount: 0 },
460
- endResult: "Read-only; nothing persists beyond the URL.",
461
- },
462
- "checklist-admin-site-system-admin-notification-detail-modal": {
463
- roles: ["admin"],
464
- startPage: "/admin/notifications",
465
- steps: [
466
- "Sign in as admin@letitrip.in / TempPass123!.",
467
- "Open /admin/notifications and open a row's view action.",
468
- "Read the full title, body and any payload the notification carries.",
469
- "Read whether its destination link is shown.",
470
- "Close the modal and check the list is unchanged behind it.",
471
- "Open a different row and confirm it shows that notification rather than the first.",
472
- ],
473
- expectedBehaviour: "A notification opens to show its full body and payload. This listing was list-only for a long time — there was no way to read a notification's contents at all, only its title in a row, which made every triage decision a guess.",
474
- expectedUiState: "The modal shows the full title, body, payload and destination. Opening a second row shows that row's notification rather than repeating the first, which is what a modal bound to stale state does.",
475
- endResult: "Read-only; close without acting.",
476
- },
477
- "checklist-admin-site-system-carousel-edit-and-delete": {
478
- roles: ["admin", "guest"],
479
- startPage: "/admin/carousels",
480
- steps: [
481
- "Sign in as admin@letitrip.in / TempPass123!.",
482
- "Open /admin/carousels and read what the page lists.",
483
- "Open a carousel and use its edit control to change its name and status.",
484
- "Save, RELOAD, and read both.",
485
- "Add a slide, save, reload, and read the slide back.",
486
- "Delete that slide, save, reload, and check the others survived.",
487
- "Restore the original name and status.",
488
- ],
489
- expectedBehaviour: "A named carousel can be edited and its slides added and removed after creation. The group editor was create-only for its whole life, so a carousel's name was fixed permanently and the list page rendered the flat slide editor rather than a list at all.",
490
- expectedUiState: "The page lists named carousels and the edit control exists. After each reload the change holds. Deleting one slide leaves the others — a delete keyed on array position removes the wrong one once the list has shifted.",
491
- endResult: "The original name and status are restored.",
492
- },
493
- "checklist-admin-site-system-guide-pages-admin": {
494
- roles: ["admin"],
495
- startPage: "/admin",
496
- steps: [
497
- "Sign in as admin@letitrip.in / TempPass123!.",
498
- "Open the admin guide pages and read each one.",
499
- "Check each renders its own content and no two are the same.",
500
- "Follow every link inside them and note where each lands.",
501
- "Pick one guide and compare its instructions against the screen it describes.",
502
- "Note any instruction naming a control that no longer exists.",
503
- ],
504
- expectedBehaviour: "Each guide renders its own content and its links resolve. The comparison against the real screen is the substance: a guide describing a control that has been renamed is worse than no guide, because the admin trusts it and then cannot find what it names.",
505
- expectedUiState: "Every guide has distinct content and working links. Instructions match the current screens. Quote any sentence that is wrong rather than reporting only that the page loads.",
506
- endResult: "Read-only; nothing persists.",
507
- },
508
- "checklist-admin-site-system-tester-checklist-crud-admin": {
509
- roles: ["admin"],
510
- startPage: "/admin/tester-checklist",
511
- steps: [
512
- "Sign in as admin@letitrip.in / TempPass123!.",
513
- "Open /admin/tester-checklist and read the catalogue.",
514
- "Create a case with a label, a description, a group, a page, roles, a start page and steps.",
515
- "Save, RELOAD, and read every field including roles and steps.",
516
- "Reopen the catalogue list and find the new case by searching its label.",
517
- "Delete the case and confirm it disappears from both surfaces.",
518
- ],
519
- expectedBehaviour: "The admin editor accepts every field a case carries, including the roles list, the input values and the expected data — a field added to the document type must reach this form too, or an admin can create a case the harness cannot read.",
520
- expectedUiState: "After the reload the case holds every field, including roles, steps, both value tables and the expectations. A field the editor accepts but does not read back is the finding.",
521
- endResult: "The case is deleted from the catalogue.",
522
- },
523
- "checklist-admin-site-system-tester-feedback-report-export": {
524
- roles: ["admin"],
525
- startPage: "/admin/tester-feedback",
526
- steps: [
527
- "Sign in as admin@letitrip.in / TempPass123!.",
528
- "Open /admin/tester-feedback and read the responses listed.",
529
- "Note how many are answered no and how many are answered yes with a comment.",
530
- "Use Download Report and open the file.",
531
- "Read its two sections and check one holds the no answers and the other the commented yes answers.",
532
- "Compare the entries in the file against what the page shows.",
533
- "Check each entry names the tester, the case and any screenshot link.",
534
- ],
535
- expectedBehaviour: "The report groups issues separately from notes on passing cases, and its content matches the page. There are two implementations of this report — the download and a standalone script — with no shared code between them, so a change to one is a change that has to be made twice.",
536
- expectedUiState: "The file has an issues section and a notes-on-passing-cases section, and its entries match the page. Each entry names the tester, the case label and any screenshot link.",
537
- endResult: "A report file exists on disk.",
538
- },
539
- "checklist-admin-site-system-tester-feedback-view-before-confirming-bug": {
540
- roles: ["admin"],
541
- startPage: "/admin/tester-feedback",
542
- steps: [
543
- "Sign in as admin@letitrip.in / TempPass123!.",
544
- "Open /admin/tester-feedback and find a response answered no.",
545
- "WITHOUT using Confirm bug, find a way to read the tester's comment in full.",
546
- "Open any screenshot they attached and view it at full size.",
547
- "Read the case's own label and expectation alongside the response.",
548
- "Return to the list and check all of that is reachable from the row.",
549
- ],
550
- expectedBehaviour: "The comment and screenshot are readable before a bug is confirmed. This surface offered Confirm bug over a tester's comment and screenshot that were never rendered — and confirming a bug credits a bug hunter on a public leaderboard, so it is a decision with an outward-facing consequence.",
551
- expectedUiState: "The comment reads in full and the screenshot opens at full size, before any action. The case's own expectation is visible alongside so the response can be judged against it.",
552
- endResult: "Read-only; confirm nothing.",
553
- },
554
- "checklist-admin-site-system-admin-sidebar-logout-button": {
555
- roles: ["admin"],
556
- startPage: "/admin",
557
- steps: [
558
- "Sign in as admin@letitrip.in / TempPass123!.",
559
- "Open /admin and find the log-out control in the sidebar.",
560
- "Click it and read where the browser lands.",
561
- "Open /admin again and read what happens.",
562
- "Press the browser back button and read what is shown.",
563
- "Open /admin/site directly and read what happens.",
564
- ],
565
- expectedBehaviour: "Log out clears both the server session cookie and the client auth session. Clearing only one leaves the browser able to re-mint a session on the next request, which is why the second navigation rather than the redirect is the real check — and an admin panel restored from the back-forward cache after log-out is a real exposure on a shared machine.",
566
- expectedUiState: "The browser leaves the admin panel. Opening /admin or /admin/site afterwards redirects to sign-in rather than rendering, even briefly with real data. The back button does not restore the dashboard.",
567
- endResult: "The session is ended.",
568
- },
569
- "checklist-admin-site-system-dashboard-tables-colors-avatars-icons": {
570
- roles: ["admin"],
571
- startPage: "/admin/users",
572
- steps: [
573
- "Sign in as admin@letitrip.in / TempPass123!.",
574
- "Open /admin/users and read the avatar column.",
575
- "Check each avatar renders an image or a readable initial rather than an empty box.",
576
- "Read the role and status columns and check they render as coloured badges.",
577
- "Open /admin/orders and /admin/stores and read the same.",
578
- "Switch to dark mode and read all three again.",
579
- "Resize to 390 pixels and check the avatars and badges are still legible.",
580
- ],
581
- inputs: { mobileWidth: 390 },
582
- expectedBehaviour: "Avatars, badges and icons all render at a size proportionate to their row. An avatar is an image inside a control, which is the shape that collapses to nothing when a shrink-to-fit wrapper sits between the two — the tile becomes an empty box while the row still works.",
583
- expectedUiState: "Every avatar shows an image or an initial. Roles and statuses are coloured badges, distinct per value, readable in both themes and at both widths. An empty bordered box where an avatar should be is the collapse failure.",
584
- endResult: "Read-only; return the site to light mode and restore the width.",
585
- },
586
- };
@@ -1,2 +0,0 @@
1
- import type { AuthoredCase } from "./_types";
2
- export declare const authored: Record<string, AuthoredCase>;