@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,377 +0,0 @@
1
- /*
2
- * WHY: Authored six-part procedures for the content-discovery/events page.
3
- * WHAT: 19 case(s), keyed by full checklist id.
4
- *
5
- * Written by hand, case by case, against the label each one states. There is no
6
- * generator: the authoring scripts were deleted once it was clear they were
7
- * scaffolding around work that is simply writing.
8
- *
9
- * 🛑 EVENTS ARE GLOBAL — the document carries no storeId, no categorySlugs and no
10
- * brandSlug — which is why their facet counts are unscoped and why no case here
11
- * filters an event by store. Time-bound event fixtures derive their windows from
12
- * tester-window.ts, so a run can shorten them and actually watch one close.
13
- *
14
- * @tag domain:tester
15
- * @tag layer:seed
16
- * @tag pattern:none
17
- * @tag access:server-only
18
- * @tag consumers:seed-data/authored/index.ts
19
- * @tag sideEffects:none
20
- */
21
- export const authored = {
22
- "checklist-content-discovery-events-view-event": {
23
- roles: ["guest"],
24
- startPage: "/events",
25
- steps: [
26
- "Open /events in a private window with no session.",
27
- "Click event-favourite-blader-poll.",
28
- "Read the title, dates, status and description.",
29
- "Read the tab bar and open each tab in turn.",
30
- "Read the address bar as each tab opens.",
31
- ],
32
- inputs: { eventId: "event-favourite-blader-poll" },
33
- expectedBehaviour: "An event detail page is split into routed child tabs — Overview, Participate and Leaderboard — so each is a real URL rather than local state. The description renders as HTML, which is where an event's extra images live since the document has no gallery field.",
34
- expectedUiState: "Title, dates and status render. Each tab changes the URL and renders its own content. The description shows formatted prose and any inline images, not raw markup as visible text.",
35
- endResult: "Read-only; nothing persists.",
36
- },
37
- "checklist-content-discovery-events-events-listing-cards-images": {
38
- roles: ["guest"],
39
- startPage: "/events",
40
- steps: [
41
- "Open /events in a private window with no session.",
42
- "Look at every card's image.",
43
- "Hard-reload with Ctrl+Shift+R and look again.",
44
- "Read every status filter offered and select each in turn.",
45
- "Read the results for each status.",
46
- ],
47
- expectedBehaviour: "Every card renders its image, and every status chip corresponds to a real stored status. The seed carries a paused and a cancelled event specifically because those two chips previously had no rows at all and could never return anything.",
48
- expectedUiState: "All cards show images on both loads, with no broken glyph or grey placeholder. Every status chip returns rows or a named empty state, and the paused and cancelled chips both return their fixtures.",
49
- endResult: "Read-only; nothing persists beyond the URL.",
50
- },
51
- "checklist-content-discovery-events-lottery-cover-image": {
52
- roles: ["guest"],
53
- startPage: "/events",
54
- steps: [
55
- "Open /events in a private window and find event-pokemon-number-draw-july-2026.",
56
- "Look at its card image.",
57
- "Open /lottery/event-pokemon-number-draw-july-2026 — the lottery detail route is /lottery/{id}, not /events/{id}.",
58
- "Look at the image at the top of that page.",
59
- "Note whether either shows an emoji instead of a photograph.",
60
- ],
61
- inputs: { eventId: "event-pokemon-number-draw-july-2026" },
62
- expectedBehaviour: "A lottery renders its stored cover image on both the card and the detail page. The 🎰 emoji is the fallback for an event with no image, and seeing it where one is set means the field is not reaching the renderer.",
63
- expectedUiState: "Both the card and the detail hero show the cover photograph. Neither shows the 🎰 emoji placeholder.",
64
- endResult: "Read-only; nothing persists.",
65
- },
66
- "checklist-content-discovery-events-lottery-prize-previews": {
67
- roles: ["guest"],
68
- startPage: "/events",
69
- steps: [
70
- "Open event-pokemon-number-draw-july-2026's detail page in a private window.",
71
- "Find the 'Prizes' collage above the numbered slot grid.",
72
- "Count the tiles in the collage.",
73
- "Count the slots in the numbered grid below it.",
74
- "Compare the two numbers and read whether any collage tile is blank.",
75
- "Read the page source for a slot price or weight value.",
76
- ],
77
- expectedBehaviour: "Only slots carrying an image appear in the collage — a slot without one is omitted rather than rendered as an empty tile, so a 200-slot lottery with six photographed prizes shows six tiles. The client-facing slot shape is an allow-list: number, name, booked state and image reach the browser, price and weight never do.",
78
- expectedUiState: "The collage holds one tile per photographed prize and no blank tiles. The numbered grid below still shows EVERY slot, photographed or not. No slot price or weight appears anywhere in the page or its source.",
79
- expectedData: { blankCollageTiles: 0 },
80
- endResult: "Read-only; nothing persists. A collage with as many tiles as the grid has slots means unphotographed slots are being rendered as empties.",
81
- },
82
- "checklist-content-discovery-events-related-events-section": {
83
- roles: ["guest"],
84
- startPage: "/events",
85
- steps: [
86
- "Open /events in a private window and open any active event.",
87
- "Stay on the Overview tab and scroll to the 'Related Events' carousel.",
88
- "Read the cards and their titles.",
89
- "Check whether the event currently open appears among them.",
90
- "Click one card and confirm it opens that event.",
91
- ],
92
- expectedBehaviour: "Related events are other ACTIVE events sharing at least one tag, with the current event excluded. Ended and cancelled events must not be suggested — a suggestion the visitor cannot act on is worse than no carousel.",
93
- expectedUiState: "The carousel holds real event cards with titles and images. The current event is not among them. No card is an ended or cancelled event. An empty rail beneath a heading is a fail — the section should not render at all.",
94
- expectedData: { selfLinkCount: 0 },
95
- endResult: "Read-only; nothing persists.",
96
- },
97
- "checklist-content-discovery-events-poll-vote-inline": {
98
- roles: ["buyer"],
99
- startPage: "/events",
100
- steps: [
101
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
102
- "Open event-favourite-blader-poll and click the Participate tab.",
103
- "Read the options offered.",
104
- "Select the first option and submit the vote.",
105
- "Read what the page shows immediately afterwards, without reloading.",
106
- "Reload the page and read the Participate tab again.",
107
- "Try to vote a second time.",
108
- ],
109
- inputs: { eventId: "event-favourite-blader-poll" },
110
- expectedBehaviour: "A vote is recorded as an entry against this user and the tally updates in place. One vote per user is enforced server-side, so a second attempt is refused rather than silently counted again.",
111
- expectedUiState: "The vote registers without a full page reload and the tally moves. After reloading, the same option is still shown as this user's choice. The second attempt is refused with a message rather than accepted.",
112
- expectedData: { votesPerUser: 1 },
113
- endResult: "The vote survives the reload.",
114
- },
115
- "checklist-content-discovery-events-poll-leaderboard-shows-tally": {
116
- roles: ["guest"],
117
- startPage: "/events",
118
- steps: [
119
- "Open event-favourite-blader-poll in a private window.",
120
- "Click the Leaderboard tab.",
121
- "Read every row — what it names and what number it carries.",
122
- "Check whether the rows are option labels or people's names.",
123
- "Check whether the counts descend down the list.",
124
- ],
125
- expectedBehaviour: "A poll's leaderboard ranks OPTIONS by votes, not participants by who voted first. Reusing the generic entries-ranked-by-time view produces a list of voters, which answers a question nobody asked and publishes who voted.",
126
- expectedUiState: "Each row names a poll option with its vote count or percentage, ordered highest first. No row names a person. A list of voter names is the failure even when it renders neatly.",
127
- expectedData: { rowsAreOptions: true },
128
- endResult: "Read-only; nothing persists.",
129
- },
130
- "checklist-content-discovery-events-admin-event-entries-export": {
131
- roles: ["admin"],
132
- startPage: "/admin/events",
133
- steps: [
134
- "Sign in as admin@letitrip.in / TempPass123!.",
135
- "Open /admin/events and open the entries page for event-favourite-blader-poll.",
136
- "Read the entries listed and expand one to read its response inline.",
137
- "Click 'Download Report'.",
138
- "Open the downloaded file and read it.",
139
- "Compare the entries in the file against the ones shown on screen.",
140
- ],
141
- expectedBehaviour: "Responses are readable inline, without downloading anything, and the download is a Markdown report of all entries. Both are needed: acting on an entry you cannot read is the dead-end shape this whole page family exists to close.",
142
- expectedUiState: "Each entry can be expanded to show its response. 'Download Report' produces a Markdown file listing every entry with its response. The file's entries match what the page shows rather than being a shorter or differently-filtered set.",
143
- endResult: "A report file exists on disk. Read-only against the data; nothing in the app changes.",
144
- },
145
- "checklist-content-discovery-events-survey-feedback-submit": {
146
- roles: ["buyer"],
147
- startPage: "/events",
148
- steps: [
149
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
150
- "Open event-metal-fight-era-feedback and click the Participate tab.",
151
- "Submit the form with every field empty and read where the errors appear.",
152
- "Type 'QA Feedback survey-feedback-submit' into the free-text field and answer any other required fields.",
153
- "Submit the form.",
154
- "Reload the page and read the Participate tab.",
155
- ],
156
- inputs: { response: "QA Feedback survey-feedback-submit" },
157
- expectedBehaviour: "The form validates against its schema and reports each problem on the field that caused it, then records an entry against this user.",
158
- expectedUiState: "The empty submit marks individual fields rather than showing one banner. The filled submit produces a confirmation. After reloading, the tab shows the response as already submitted rather than offering a blank form again.",
159
- endResult: "The entry survives the reload.",
160
- },
161
- "checklist-content-discovery-events-offer-coupon-display-copy": {
162
- roles: ["buyer"],
163
- startPage: "/events",
164
- steps: [
165
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
166
- "Open event-buy-3-get-1-beyblades and read the coupon code displayed.",
167
- "Click the copy control beside it.",
168
- "Read any confirmation shown.",
169
- "Open /checkout with an item in the cart and paste into the coupon field.",
170
- "Read what was pasted and click 'Apply'.",
171
- ],
172
- inputs: { eventId: "event-buy-3-get-1-beyblades" },
173
- expectedBehaviour: "The code is shown in full and the copy control puts exactly that string on the clipboard. A copy control that copies a truncated or differently-cased value produces a rejection the buyer cannot explain.",
174
- expectedUiState: "The code is legible in full on the page. Copying shows a confirmation. The pasted value matches the displayed code character for character, and applying it is accepted.",
175
- endResult: "Remove the coupon afterwards so later checkout cases start from an empty coupon list.",
176
- },
177
- "checklist-content-discovery-events-raffle-entry": {
178
- roles: ["buyer"],
179
- startPage: "/events",
180
- steps: [
181
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
182
- "Open event-win-burst-regalia-genesis and click the Participate tab.",
183
- "Read the entry conditions stated.",
184
- "Enter the raffle.",
185
- "Read what the page shows immediately, without reloading.",
186
- "RELOAD and read the tab again BEFORE touching the form — note whether it already shows you as entered, or presents an empty form as though you had not.",
187
- "Try to enter a second time.",
188
- ],
189
- /*
190
- * 🛑 The fixture changed, 2026-10-19 — it pointed at
191
- * `event-won-original-set-raffle`, which is seeded `status: ENDED` with a
192
- * winner ALREADY DRAWN. `enterEvent` refuses any event that is not active,
193
- * so every step after "Enter the raffle" was unreachable: the case could
194
- * only ever record the generic closed-entries refusal, which looks like a
195
- * correct result and proves nothing about one-entry-per-user.
196
- * `event-win-burst-regalia-genesis` is the active open_raffle.
197
- */
198
- inputs: { eventId: "event-win-burst-regalia-genesis" },
199
- expectedBehaviour: "An open raffle records one entry per user, enforced SERVER-side. The entry is what makes the user eligible for the draw, so a duplicate would literally double their odds against everyone else. A limit held in the browser is no limit: the form's counter starts at zero on every page load.",
200
- expectedUiState: "The entry is confirmed in place. After reloading — before any interaction — the tab already shows the user as entered, not an inviting empty form. The second attempt is refused with a message naming the existing entry.",
201
- expectedData: { entriesPerUser: 1, entriesAfterSecondAttempt: 1 },
202
- endResult: "BEFORE: a reload reset the form's counter to zero and presented an empty form, and submitting it was ACCEPTED with the same 'You're entered in the raffle!' toast — two entries for one person, because only surveys and polls had a per-user check and raffle had none. AFTER: the reloaded page shows the entry, and a forced second submit is refused. Exactly one entry exists.",
203
- },
204
- /*
205
- * 🛑 THESE TWO CASES CHANGED SHAPE, 2026-09-15.
206
- *
207
- * They used to open one fixture per raffleType — a `top_n_scorers` event and a
208
- * `top_n_participants` one — and compare their leaderboards side by side. Both
209
- * fixtures are gone and the permanent seed carries only `open_raffle`, so the
210
- * comparison has no second half to make.
211
- *
212
- * Rather than delete the coverage, each case now AUTHORS the raffle type it is
213
- * about, on a real event, and then reads the leaderboard back. That is a
214
- * stronger test than the old one — it exercises the admin write path as well as
215
- * the render — and it is the only form the current seed can express.
216
- */
217
- "checklist-content-discovery-events-raffle-entry-top-n-scorers": {
218
- roles: ["admin", "buyer"],
219
- startPage: "/admin/events",
220
- steps: [
221
- "Sign in as admin@letitrip.in / TempPass123!.",
222
- "Open /admin/events, open event-win-burst-regalia-genesis for editing, and write down its current raffle type.",
223
- "Set the raffle type to 'Top N scorers', set the N to 3, and save.",
224
- "Sign out and sign in as rehan.sheikh@gmail.com / TempPass123!.",
225
- "Open /events/event-win-burst-regalia-genesis and read the Overview tab's description of how winners are chosen.",
226
- "Click the Participate tab and enter.",
227
- "Click the Leaderboard tab and read how entries are ranked.",
228
- "Read whether the ranking is by score and whether the eligible cut-off of 3 is stated.",
229
- "Sign back in as admin@letitrip.in and restore the raffle type written down in step 2.",
230
- ],
231
- inputs: { eventId: "event-win-burst-regalia-genesis", raffleTopN: 3 },
232
- expectedBehaviour: "A top-N-scorers raffle draws from the highest-scoring entries, so the leaderboard must rank by score and the page must say how many qualify. Ranking by entry time instead would silently change who can win. The saved raffle type must also reach the public page — an admin field that saves and never renders is the commonest shape of this bug.",
233
- expectedUiState: "The Overview tab names the top-3-by-score rule after the save. The leaderboard is ordered by score, highest first, and the cut-off is stated. Entering is confirmed. A leaderboard still ordered by entry time is the failure.",
234
- endResult: "The entry survives a reload. The raffle type is restored by the final step.",
235
- },
236
- "checklist-content-discovery-events-raffle-entry-top-n-participants": {
237
- roles: ["admin", "buyer"],
238
- startPage: "/admin/events",
239
- steps: [
240
- "Sign in as admin@letitrip.in / TempPass123!.",
241
- "Open /admin/events, open event-win-burst-regalia-genesis for editing, and write down its current raffle type.",
242
- "Set the raffle type to 'Top N earliest participants' — the dropdown carries the word 'earliest' and the stored value is top_n_participants — set the N to 3, and save.",
243
- "Sign out and sign in as rehan.sheikh@gmail.com / TempPass123!.",
244
- "Open /events/event-win-burst-regalia-genesis and read the Overview tab's description of how winners are chosen.",
245
- "Click the Participate tab and enter.",
246
- "Click the Leaderboard tab and read how entries are ranked.",
247
- "Compare the stated rule with the top-N-scorers rule from the previous case.",
248
- "Sign back in as admin@letitrip.in and restore the raffle type written down in step 2.",
249
- ],
250
- inputs: { eventId: "event-win-burst-regalia-genesis", raffleTopN: 3 },
251
- expectedBehaviour: "A top-N-participants raffle draws from the earliest or most active participants rather than the highest scorers — a different rule from the scorers variant. Running both against the same event is what makes the difference checkable now that there is no fixture per type.",
252
- expectedUiState: "The Overview tab names a participation rule, not a score rule, and the leaderboard is ordered accordingly. Wording identical to the previous case means the raffle type is not reaching the leaderboard.",
253
- endResult: "The entry survives a reload. The raffle type is restored by the final step.",
254
- },
255
- "checklist-content-discovery-events-spin-wheel": {
256
- roles: ["buyer"],
257
- startPage: "/events",
258
- steps: [
259
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
260
- "Navigate to the wheel BY CLICKING its card from /events — do not type the URL. The link uses the event's slug, which is the path a real visitor takes.",
261
- "Click the Participate tab.",
262
- "Click the spin control ONCE and watch the wheel.",
263
- "Read the prize shown and how long it took to appear.",
264
- "If anything is refused, open the network panel and record the spin request's STATUS CODE and the `code` field in its response body.",
265
- "Reload the page and read the Participate tab.",
266
- ],
267
- inputs: { eventId: "event-daily-beyblade-pull-wheel" },
268
- expectedBehaviour: "The very first spin succeeds and names a prize. The spin is a plain POST to /api/events/{id}/spin and its response carries the prize — there is no realtime channel involved, so a failure is the request itself failing, not a subscription timing problem.",
269
- expectedUiState: "The wheel spins and lands on a named prize within a few seconds. No 'Spin failed' error appears on the first attempt. After reloading, the result is still shown rather than the wheel offering another free spin.",
270
- expectedData: { spinsUsed: 1, spinHttpStatus: 200 },
271
- /*
272
- * 🛑 Two recorded production failures, and the SLUG step above is what
273
- * reaches the second one.
274
- *
275
- * The feature was gated on `FEATURE_PRIZE_DRAWS`, an env var belonging to a
276
- * mechanism that had already been retired and was therefore set nowhere —
277
- * so every spin returned 503 while the button rendered enabled. Underneath
278
- * that, the spin core looked the event up by document id only, with no slug
279
- * fallback, while every card links by slug. Fixing the gate alone turns the
280
- * 503 into a 404.
281
- *
282
- * So "type the doc-id URL and spin" would have passed against the live bug.
283
- * Arriving by click is the test.
284
- */
285
- endResult: "BEFORE: the spin returned HTTP 503 with code `feature_disabled` on every attempt (and, once that was fixed, HTTP 404 `EVENT_NOT_FOUND` whenever the page was reached by its slug — i.e. from any card). Both rendered as 'Spin failed. Please try again.'. AFTER: the first click returns 200 and names a prize. The recorded spin and its prize survive the reload.",
286
- },
287
- "checklist-content-discovery-events-spin-wheel-max-per-user": {
288
- roles: ["buyer"],
289
- startPage: "/events",
290
- steps: [
291
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
292
- "Open event-daily-beyblade-pull-wheel and read the stated maximum spins per user.",
293
- "Spin until that maximum is reached, reading the remaining count each time.",
294
- "Attempt one more spin.",
295
- "Read the refusal.",
296
- "Reload the page and attempt another spin.",
297
- ],
298
- expectedBehaviour: "The per-user spin cap is enforced server-side, so reloading does not restore a spin. A cap held only in the browser resets on refresh and the limit is no limit at all.",
299
- expectedUiState: "The remaining count decreases with each spin. At zero the control is refused with a message naming the limit. After reloading it is still refused — a fresh spin available after a reload is the failure.",
300
- expectedData: { spinsAfterReload: 0 },
301
- endResult: "The exhausted state persists across reloads.",
302
- },
303
- /*
304
- * 🛑 THE CLOSED WINDOW IS NOW AUTHORED, NOT WAITED FOR, 2026-09-15.
305
- *
306
- * This used to sit on a fixture whose spin window was a fraction of the run's
307
- * testing window, so a tester could watch it close. That fixture is gone, and
308
- * the permanent seed's wheel is open for another three weeks — a duration no
309
- * session can outlast. Narrowing the window from the admin editor reaches the
310
- * same refusal in a few seconds, and restoring it is one field.
311
- */
312
- "checklist-content-discovery-events-spin-wheel-window-blocked": {
313
- roles: ["admin", "buyer"],
314
- startPage: "/admin/events",
315
- steps: [
316
- "Sign in as admin@letitrip.in / TempPass123!.",
317
- "Open /admin/events, open event-daily-beyblade-pull-wheel for editing, and write down its current spin window start and end.",
318
- "Set the spin window end to yesterday's date so the window is closed, and save.",
319
- "Sign out and sign in as rehan.sheikh@gmail.com / TempPass123!.",
320
- "Open /events/event-daily-beyblade-pull-wheel, read the stated spin window, and attempt a spin.",
321
- "Read the refusal and check it names the window rather than a generic failure.",
322
- "Sign back in as admin@letitrip.in and restore the two dates written down in step 2.",
323
- ],
324
- inputs: { eventId: "event-daily-beyblade-pull-wheel" },
325
- expectedBehaviour: "Spins outside the configured window are refused with a reason naming the window, and the check runs server-side — a window enforced only by hiding the button is no window at all.",
326
- expectedUiState: "With the window closed the spin control is refused and the message names the window or its times. It is not a generic 'Spin failed', which would be indistinguishable from the realtime failure above.",
327
- endResult: "No spin is recorded outside the window. The original window is restored by the final step; if the restore fails, say so rather than leaving the wheel closed for later cases.",
328
- },
329
- "checklist-content-discovery-events-spin-results-tab": {
330
- roles: ["guest"],
331
- startPage: "/events",
332
- steps: [
333
- "Open event-daily-beyblade-pull-wheel in a private window with no session.",
334
- "Find the 'Last 10 Spin Results' tab and open it.",
335
- "Read every row — the name shown and the prize.",
336
- "Count the rows.",
337
- "Check whether any row shows a full real name.",
338
- ],
339
- expectedBehaviour: "The results tab lists recent winners, capped at ten, with anonymous spins shown as 'Guest'. Named entries are shown masked — a public results list is exactly the surface where an unmasked display name leaks, and a masking helper that returns its input unchanged looks correct from every layer except this one.",
340
- expectedUiState: "At most ten rows, each naming a prize. Anonymous spins read 'Guest'. Named entries are masked rather than showing a full real name.",
341
- expectedData: { maxRows: 10 },
342
- endResult: "Read-only; nothing persists.",
343
- },
344
- "checklist-content-discovery-events-event-guest-participation-toggle": {
345
- roles: ["admin", "guest"],
346
- startPage: "/admin/events",
347
- steps: [
348
- "Sign in as admin@letitrip.in / TempPass123!.",
349
- "Open /admin/events/new and create an event titled 'QA Event guest-participation' with guest participation ENABLED, starting today and ending in a week.",
350
- "Open its public page in a private window with no session.",
351
- "Enter the event as a guest and read the confirmation.",
352
- "Attempt to enter a second time from the same private window.",
353
- "Read the refusal.",
354
- "As admin, edit the event to disable guest participation and save.",
355
- "Reload the public page in the private window and attempt to enter.",
356
- ],
357
- inputs: { eventTitle: "QA Event guest-participation", guestParticipation: true },
358
- expectedBehaviour: "With guest participation enabled an anonymous visitor may enter once per device, and a second attempt from the same device is blocked. With it disabled the entry control asks for sign-in instead of accepting anonymous entries.",
359
- expectedUiState: "The first guest entry is confirmed. The second is refused with a message rather than silently accepted. After the toggle is disabled, the public page prompts for sign-in rather than offering entry.",
360
- expectedData: { guestEntriesPerDevice: 1 },
361
- endResult: "Delete the event afterwards so it does not accumulate across runs.",
362
- },
363
- "checklist-content-discovery-events-leaderboard-live-refresh": {
364
- roles: ["buyer"],
365
- startPage: "/events",
366
- steps: [
367
- "In window A, open event-favourite-blader-poll's Leaderboard tab signed out, and read the tallies.",
368
- "Leave window A on that tab without reloading it.",
369
- "In window B, sign in as vivaan.kapoor@gmail.com / TempPass123!.",
370
- "In window B, open the same event's Participate tab and vote for an option.",
371
- "Return to window A and watch the tallies for up to 15 seconds without reloading.",
372
- ],
373
- expectedBehaviour: "The leaderboard updates from the live feed rather than only on load, so a viewer watching a poll sees it move. A tally that only changes on refresh makes a live event feel dead.",
374
- expectedUiState: "Window A's tally for the voted option increases within about 15 seconds, with no reload and no interaction. A figure that only changes when the tester refreshes is the failure.",
375
- endResult: "The vote persists. This requires vivaan.kapoor@gmail.com not to have voted on this poll already — if they have, use another buyer persona.",
376
- },
377
- };
@@ -1,2 +0,0 @@
1
- import type { AuthoredCase } from "./_types";
2
- export declare const authored: Record<string, AuthoredCase>;
@@ -1,87 +0,0 @@
1
- /*
2
- * WHY: Authored six-part procedures for the content-discovery/faq-help page.
3
- * WHAT: 3 case(s), keyed by full checklist id.
4
- *
5
- * Written by hand, case by case, against the label each one states. There is no
6
- * generator: the authoring scripts were deleted once it was clear they were
7
- * scaffolding around work that is simply writing.
8
- *
9
- * @tag domain:tester
10
- * @tag layer:seed
11
- * @tag pattern:none
12
- * @tag access:server-only
13
- * @tag consumers:seed-data/authored/index.ts
14
- * @tag sideEffects:none
15
- */
16
- export const authored = {
17
- "checklist-content-discovery-faq-help-faq-bottom-borders": {
18
- roles: ["guest"],
19
- startPage: "/faqs",
20
- steps: [
21
- "Open /faqs in a private window at a desktop width of 1280 pixels.",
22
- "Look at the divider between each question row and the next.",
23
- "Look specifically at the LAST row in a category, below its text.",
24
- "Expand one question and look at the dividers again.",
25
- "Switch the site to dark mode and look at every divider once more.",
26
- ],
27
- inputs: { viewportWidth: 1280 },
28
- expectedBehaviour: "Rows are separated by a divider between them, with none trailing after the last row — a stray border under the final item reads as a truncated list. Divider colour comes from a theme token that inverts, so it stays visible in both themes rather than being a fixed near-white line that vanishes on dark.",
29
- expectedUiState: "A divider sits between consecutive rows and there is none below the last row of a category. Expanding a question does not double the divider or leave a hairline across the open panel. Every divider is visible in dark mode.",
30
- endResult: "Read-only; nothing persists. Return the site to light mode afterwards.",
31
- },
32
- "checklist-content-discovery-faq-help-faq-mobile-count": {
33
- roles: ["guest"],
34
- startPage: "/faqs",
35
- steps: [
36
- "Resize the browser window to 390 pixels wide.",
37
- "Open /faqs in a private window with no session.",
38
- "WAIT for the page to settle before reading any number. This page has been measured showing zero questions at 2.5 seconds and 62 at 6 — a count taken early is confidently wrong, and this case is entirely about comparing counts.",
39
- "Read the count shown against each category.",
40
- "Open one category and count the questions it actually holds, waiting again before counting.",
41
- "Compare the two numbers.",
42
- "Try to scroll the page sideways.",
43
- ],
44
- inputs: { viewportWidth: 390 },
45
- expectedBehaviour: "The count beside a category matches what opening it reveals, at mobile width as at desktop. A count computed before an active-only filter is applied over-reports by every inactive entry.",
46
- expectedUiState: "Each category's count matches its contents. Nothing is clipped at 390px and the page does not scroll sideways. Counts are not hidden entirely on mobile — they are the reason a visitor opens one category rather than another.",
47
- expectedData: { mismatchedCountCount: 0 },
48
- endResult: "Read-only; nothing persists. Restore the window width afterwards.",
49
- },
50
- "checklist-content-discovery-faq-help-tabs-mobile-dropdown": {
51
- roles: ["guest"],
52
- startPage: "/faqs",
53
- steps: [
54
- "Open /faqs at a desktop width of 1280 pixels and read how the categories are presented.",
55
- "Resize the window to 390 pixels wide.",
56
- "Read how the categories are presented now.",
57
- "Open the mobile control and select a different category.",
58
- "Read which category's questions are shown and check the control names the selected one.",
59
- "Try to scroll the page sideways.",
60
- ],
61
- inputs: { desktopWidth: 1280, mobileWidth: 390 },
62
- expectedBehaviour: "A tab strip too wide for a phone becomes a dropdown rather than a sideways-scrolling row, so no category is hidden off the right edge where nobody looks for it.",
63
- expectedUiState: "At 1280 the categories are a tab strip. At 390 they are a dropdown listing every category, and selecting one switches the questions AND updates the control's own label. The page does not scroll sideways at either width.",
64
- endResult: "Read-only; nothing persists. Restore the window width afterwards.",
65
- },
66
- "checklist-content-discovery-faq-help-faq-search-filters-and-survives-reload": {
67
- roles: ["guest"],
68
- startPage: "/faqs",
69
- steps: [
70
- "Open /faqs in a private window with no session.",
71
- "WAIT for the questions to appear before counting anything. 🛑 This page hydrates client-side and the difference is not subtle — it has been measured showing zero questions at 2.5 seconds and 62 at 6. A count taken early produces a confident, wrong answer, and that has already happened twice on this exact page.",
72
- "Count the questions visible across all categories once the page has settled.",
73
- "Type shipping into the search box and commit it.",
74
- "Read the count and confirm it is SMALLER than the unfiltered count, and that the remaining questions are about shipping.",
75
- "Read the address bar and check the term is in the URL as ?q=shipping.",
76
- "RELOAD with that URL and confirm the same filtered set comes back, waiting again before judging.",
77
- "Clear the box, type zzzznope, and commit.",
78
- "Read the result — a named empty state and zero questions, not the full list.",
79
- "Clear the search and confirm the original count returns.",
80
- ],
81
- inputs: { realQuery: "shipping", nonsenseQuery: "zzzznope" },
82
- expectedBehaviour: "The search box filters the questions and the term round-trips through the URL, so a filtered view is shareable and survives a reload. The nonsense control is the whole case: a real term returns plausible questions whether or not the filter ran at all, so only zzzznope separates filtering from returning everything. The seed ships 63 FAQs across seven categories, which is enough for a real term to narrow visibly rather than by one row.",
83
- expectedUiState: "'shipping' shows fewer questions than the unfiltered list and they are about shipping. The URL carries ?q=shipping and reloading reproduces that view. 'zzzznope' shows a named empty state with zero questions — a blank panel with no message is a different failure and should be recorded as such. Clearing restores the original count.",
84
- expectedData: { nonsenseResultCount: 0 },
85
- endResult: "Read-only; nothing persists beyond the URL. A full list under zzzznope is the failure. So is an empty page under a real term, which on this page is far more likely to be a count taken before hydration than a broken filter — wait, then look again, before recording either.",
86
- },
87
- };
@@ -1,2 +0,0 @@
1
- import type { AuthoredCase } from "./_types";
2
- export declare const authored: Record<string, AuthoredCase>;
@@ -1,147 +0,0 @@
1
- /*
2
- * WHY: Authored six-part procedures for the content-discovery/notifications page.
3
- * WHAT: 8 case(s), keyed by full checklist id.
4
- *
5
- * Written by hand, case by case, against the label each one states. There is no
6
- * generator: the authoring scripts were deleted once it was clear they were
7
- * scaffolding around work that is simply writing.
8
- *
9
- * 🛑 THE OPT-OUT CASE IS THE IMPORTANT ONE. The map from notification type to
10
- * preference key must be COMPLETE: a missing entry left the key undefined, so the
11
- * opt-out check never ran and the user's preference was silently ignored while the
12
- * toggle sat there reading as honoured. Three types were missing.
13
- *
14
- * @tag domain:tester
15
- * @tag layer:seed
16
- * @tag pattern:none
17
- * @tag access:server-only
18
- * @tag consumers:seed-data/authored/index.ts
19
- * @tag sideEffects:none
20
- */
21
- export const authored = {
22
- "checklist-content-discovery-notifications-receive-notification": {
23
- roles: ["buyer"],
24
- startPage: "/user/notifications",
25
- steps: [
26
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
27
- "Open /user/notifications and read the unread count on the header bell.",
28
- "In a second window, sign in as vivaan.kapoor@gmail.com / TempPass123!.",
29
- "As that second buyer, open /auctions/auction-beyblade-original-dragoon-storm and place a bid high enough to outbid the first buyer.",
30
- "Return to the first window and open /user/notifications.",
31
- "Read the newest entry and the bell's unread count.",
32
- ],
33
- expectedBehaviour: "An event that concerns a user produces a notification addressed to them, carrying a title, a body and a destination. The destination is filled in from the record it relates to rather than hand-written per caller, which is why almost no call site used to set one.",
34
- expectedUiState: "A new entry appears naming the auction, and the bell's unread count has increased. The entry has a readable title and body — not a raw type string like 'bid_outbid' shown as the whole message.",
35
- endResult: "The notification survives a reload. This case requires the first buyer to hold the leading bid beforehand; place one first if they do not.",
36
- },
37
- "checklist-content-discovery-notifications-mark-read": {
38
- roles: ["buyer"],
39
- startPage: "/user/notifications",
40
- steps: [
41
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
42
- "Open /user/notifications and note the unread count on the bell.",
43
- "Click one unread notification.",
44
- "Read the bell's count and that row's unread styling.",
45
- "Reload the page and read both again.",
46
- "Use the mark-all-read control and read the count.",
47
- "Reload once more.",
48
- ],
49
- expectedBehaviour: "Read state is persisted per notification, so the count is the same before and after a reload. A count held only in component state resets to the original number on refresh and the user sees the same badge again.",
50
- expectedUiState: "Opening one notification drops the count by exactly one and removes that row's unread styling. After the reload the count is still the reduced one. Mark-all-read takes it to zero and it is still zero after reloading.",
51
- expectedData: { unreadCountAfterMarkAll: 0 },
52
- endResult: "The count stays at zero across reloads.",
53
- },
54
- "checklist-content-discovery-notifications-notification-channel-prefs": {
55
- roles: ["buyer"],
56
- startPage: "/user/settings",
57
- steps: [
58
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
59
- "Open /user/settings and click the 'Notifications' tab.",
60
- "Read every channel offered and every notification type listed.",
61
- "Turn one channel off for one type and click 'Save preferences'.",
62
- "Reload the page and open the tab again.",
63
- "Read whether that one switch is still off and whether the others are unchanged.",
64
- ],
65
- expectedBehaviour: "Preferences save per type and per channel, and saving one does not rewrite the others from a partly-populated form. The tab must also list every notification type — an incomplete list leaves whole categories with no way to opt out at all.",
66
- expectedUiState: "The changed switch is off after the reload and every switch the tester did not touch holds its previous value. Types such as offer_received and payment_review are present in the list rather than missing.",
67
- endResult: "Restore the switch afterwards, so later notification cases are not suppressed by a leftover opt-out.",
68
- },
69
- "checklist-content-discovery-notifications-notification-type-sample": {
70
- roles: ["buyer"],
71
- startPage: "/user/notifications",
72
- steps: [
73
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
74
- "Open /user/notifications.",
75
- "Read every entry, noting its type icon or label, its title and its body.",
76
- "Write down any entry whose body is empty, or reads as a raw type string, or repeats its own title verbatim.",
77
- ],
78
- expectedBehaviour: "Each notification type renders its own title and body from a template keyed on the type. A type with no template falls back to something generic, which is visible as a body that simply restates the title or shows the type identifier.",
79
- expectedUiState: "Every entry has a distinct, readable title and body. None shows a bare type identifier such as 'order_confirmed' as its message, and none has an empty body.",
80
- expectedData: { untemplatedEntryCount: 0 },
81
- endResult: "Read-only; nothing persists.",
82
- },
83
- "checklist-content-discovery-notifications-notification-tab-filters": {
84
- roles: ["buyer"],
85
- startPage: "/user/notifications",
86
- steps: [
87
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
88
- "Open /user/notifications and read every filter tab or chip offered.",
89
- "Note the total number of entries with no filter applied.",
90
- "Select each filter in turn and read the resulting count and rows.",
91
- "Write down any filter that returns zero rows.",
92
- "Clear the filter and check the original count returns.",
93
- ],
94
- expectedBehaviour: "Every filter value offered corresponds to a type that notifications actually carry. A chip whose value is not a real stored type matches byte-exactly against nothing and stays empty forever, with no error to explain it.",
95
- expectedUiState: "Each filter either returns rows or is genuinely empty for this account — and where it is empty, the same type is absent from the unfiltered list too. A chip that is empty while matching entries sit in the unfiltered list is the failure.",
96
- endResult: "Read-only; nothing persists beyond the URL.",
97
- },
98
- "checklist-content-discovery-notifications-notification-email-actually-arrives": {
99
- roles: ["buyer"],
100
- startPage: "/user/settings",
101
- steps: [
102
- "Sign in as the harness mailbox account. 🛑 NO SEEDED PERSONA CAN RECEIVE TESTABLE EMAIL — both instruments key on TESTER_EMAIL_ID, and every seeded persona uses a real-looking address the harness does not own. Register a plus-addressed signup on that mailbox, or run this as whichever account already uses it.",
103
- "Open /user/settings, click the 'Notifications' tab, and make sure Email is on for order updates. order_confirmed is one of the 18 email-eligible types, so it should send.",
104
- "Place an order that will produce an order-confirmed notification.",
105
- "Open /user/notifications and confirm the in-app entry is there.",
106
- "Capture a timestamp BEFORE the order — node -e \"console.log(Date.now())\" — then ask the mailbox: node tester/scripts/check-inbox.mjs --since <that number> --subject \"order\". --since is the whole correctness argument: the mailbox is shared across every case in every run, so 'newest matching message' happily returns one an earlier case left behind.",
107
- "Read the exit code. 0 means it arrived; 1 means it did not (a product defect); 2 means the mailbox could not be opened (a harness problem, answer null). Then read the email's From name and address, its subject and its body.",
108
- "Click the button or link inside it.",
109
- ],
110
- expectedBehaviour: "The dispatcher fans out to in-app first and then email, rendering a per-type template rather than wrapping the one-line message in a paragraph — for a long time not one caller supplied email HTML, so every type shipped the same bare body.",
111
- expectedUiState: "The email arrives in the inbox. Its From display name is spelled 'LetItRip' exactly. Its body is a real templated message rather than a single unstyled sentence. Its link opens the right page on the live site.",
112
- endResult: "The in-app notification and the email both exist. An in-app entry with no email, while email is enabled for that type, is the failure this case separates from a delivery problem.",
113
- },
114
- "checklist-content-discovery-notifications-notification-email-opt-out-respected": {
115
- roles: ["buyer"],
116
- startPage: "/user/settings",
117
- steps: [
118
- "Sign in as the harness mailbox account — see the arrival case above; no seeded persona can receive testable email.",
119
- "Open /user/settings, click the 'Notifications' tab, and turn Email OFF for order updates.",
120
- "Click 'Save preferences' and reload to confirm it stayed off.",
121
- "Place an order that would produce an order-confirmed notification.",
122
- "Open /user/notifications and read the entries.",
123
- "Prove the SILENCE rather than waiting for it: node tester/scripts/check-inbox.mjs --since <timestamp captured before the order> --subject \"order\" --expect-none. Without --expect-none, 'nothing arrived' is unprovable — you wait and hope, and a slow inbox looks exactly like a working suppression. Exit 0 means the silence held.",
124
- "Turn Email back on for order updates and save.",
125
- ],
126
- expectedBehaviour: "Turning a channel off suppresses that channel and nothing else — the in-app notification still appears. The suppression depends on a complete type-to-preference-key map: a type missing from it leaves the key undefined, the opt-out check never runs, and mail keeps arriving while the toggle reads as honoured.",
127
- expectedUiState: "The in-app entry is present. NO email arrives for it. An email arriving with the toggle off is the exact failure, and it is invisible from the settings page — the switch looks the same either way.",
128
- expectedData: { emailsReceived: 0 },
129
- endResult: "The preference is turned back on by the final step. Waiting the full five minutes matters: concluding after thirty seconds proves nothing about a queue.",
130
- },
131
- "checklist-content-discovery-notifications-notification-links-to-right-entity": {
132
- roles: ["buyer"],
133
- startPage: "/user/notifications",
134
- steps: [
135
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
136
- "Open /user/notifications.",
137
- "Click an order notification and read the address bar and the record shown.",
138
- "Go back and click a bid notification, reading the address bar and what is shown.",
139
- "Go back and click an offer notification, reading the address bar and what is shown.",
140
- "Note any that land on a 404.",
141
- ],
142
- expectedBehaviour: "The destination is resolved from the related record's type and id, so a caller cannot forget it. Bids, offers and reviews have no per-record page in any role, so those correctly resolve to their LIST — a real destination. Fabricating a per-record URL for them would 404, which is worse than a list.",
143
- expectedUiState: "An order notification opens that specific order. A bid notification opens the bids list. An offer notification opens the offers list. None lands on a 404 and none lands on the dashboard root with no relation to what was clicked.",
144
- expectedData: { notFoundCount: 0 },
145
- endResult: "Read-only; nothing persists. A list is a pass for bids and offers; a 404 is a fail for anything.",
146
- },
147
- };
@@ -1,2 +0,0 @@
1
- import type { AuthoredCase } from "./_types";
2
- export declare const authored: Record<string, AuthoredCase>;