@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,169 +0,0 @@
1
- /*
2
- * WHY: Authored six-part procedures for the content-discovery/coupons page.
3
- * WHAT: 6 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
- * These are the buyer-facing DISCOVERY cases — browsing, claiming, and the
10
- * rejection messages. The stacking arithmetic lives on buying/buying-coupons and
11
- * is not repeated here; a rule tested in two places drifts in one of them.
12
- *
13
- * @tag domain:tester
14
- * @tag layer:seed
15
- * @tag pattern:none
16
- * @tag access:server-only
17
- * @tag consumers:seed-data/authored/index.ts
18
- * @tag sideEffects:none
19
- */
20
- export const authored = {
21
- "checklist-content-discovery-coupons-view-claimed-coupons": {
22
- roles: ["buyer"],
23
- startPage: "/user/coupons",
24
- steps: [
25
- "Sign in as vivaan.kapoor@gmail.com / TempPass123!.",
26
- "Open /user/coupons and read what is listed.",
27
- "Open /promotions — it redirects to /promotions/deals, which is expected — then click the 'Coupons' tab, landing on /promotions/coupons, and claim NEWBLADER.",
28
- "Open /user/coupons again.",
29
- "Read the NEWBLADER row — its code, discount, minimum spend and expiry.",
30
- "Reload the page.",
31
- ],
32
- inputs: { coupon: "NEWBLADER" },
33
- expectedBehaviour: "The wallet lists coupons this buyer has claimed, with enough detail to decide whether to use one. An unclaimed coupon has no row here at all, which is why claiming is part of the procedure rather than an assumption.",
34
- expectedUiState: "Before claiming, the page either lists previously-claimed coupons or shows a named empty state — not a blank panel. After claiming, a NEWBLADER row appears carrying its code, its discount, any minimum spend and an expiry date. Values reading 'undefined' or 'NaN%' are the shape failure to watch for, since the card reads both a flat and a nested coupon shape.",
35
- endResult: "The NEWBLADER row survives the reload.",
36
- },
37
- "checklist-content-discovery-coupons-coupon-discount-applied": {
38
- roles: ["buyer"],
39
- startPage: "/promotions",
40
- steps: [
41
- "Sign in as vivaan.kapoor@gmail.com / TempPass123!.",
42
- "Open /promotions — it redirects to /promotions/deals — then click the 'Coupons' tab and read the ARENA25 card's stated discount and minimum spend.",
43
- "Add product-beyblade-burst-regalia-genesis (₹1,399, Beyblade Arena) to the cart.",
44
- "Open /checkout and complete the address and add-ons steps.",
45
- "Type ARENA25 in the coupon field and click 'Apply'.",
46
- "Read the discount amount applied and compare it with what the card promised.",
47
- ],
48
- inputs: { coupon: "ARENA25", itemPrice: 1399 },
49
- expectedBehaviour: "The discount a public card advertises is the discount checkout applies. A card that states a percentage while checkout applies a cap the card never mentioned is a promise the corpus cannot keep.",
50
- expectedUiState: "The applied amount matches the card's stated terms, including any maximum-discount cap the card should also be stating. ARENA25 appears in the applied list with no error.",
51
- endResult: "Reloading /checkout shows the same coupon and amount. A discrepancy between the card and the applied amount is a copy bug at minimum and a pricing bug at worst.",
52
- },
53
- /*
54
- * 🛑 THE EXPIRY IS NOW AUTHORED, 2026-09-15.
55
- *
56
- * This used to use a coupon seeded past its end date while still flagged
57
- * active — the one shape that exercises the DATE check rather than the flag.
58
- * That fixture is gone and every permanent coupon has a future end date, so
59
- * the admin sets one back by hand. Leaving Active ON is the whole point: a
60
- * validator that reads only the flag accepts this coupon, and that is the bug.
61
- */
62
- "checklist-content-discovery-coupons-coupon-expired-rejected": {
63
- roles: ["admin", "buyer"],
64
- startPage: "/admin/coupons",
65
- steps: [
66
- "Sign in as admin@letitrip.in / TempPass123!.",
67
- "Open /admin/coupons, open SEALED20 for editing, and write down its end date.",
68
- "Set its end date to yesterday and LEAVE the Active toggle ON, then save.",
69
- "Sign out and sign in as vivaan.kapoor@gmail.com / TempPass123!.",
70
- "Add product-beyblade-burst-regalia-genesis (₹1,399) to the cart.",
71
- "Open /checkout and complete the address and add-ons steps.",
72
- "Type SEALED20 in the coupon field and click 'Apply'.",
73
- /*
74
- * 🛑 EXPECT THIS TO FAIL TODAY, AND RECORD IT AS A FAILURE.
75
- *
76
- * Measured 2026-09-29: the only rejection this path can produce is
77
- * "Coupon is not currently valid" (coupons.repository.ts:241). It is
78
- * returned by one branch gated on isCouponValid(), which folds THREE
79
- * separate reasons into one string — isActive false, the date window,
80
- * and the total usage limit being exhausted.
81
- *
82
- * So the buyer is told the same thing whether the coupon expired
83
- * yesterday, was switched off, or was claimed by someone else thirty
84
- * seconds ago. Only the first is permanent; the third may well work on a
85
- * retry. The message cannot tell them which, and there is no second
86
- * message to fall back to.
87
- *
88
- * Kept as written rather than softened to match. This case previously
89
- * demanded the string 'This coupon has expired', which exists NOWHERE in
90
- * the codebase — so the assertion could never be satisfied and never
91
- * fail informatively either. Naming the real string is what makes the
92
- * failure actionable.
93
- */
94
- "Read the exact wording of the rejection.",
95
- "Sign back in as admin@letitrip.in and restore the end date written down in step 2.",
96
- ],
97
- inputs: { coupon: "SEALED20" },
98
- expectedBehaviour: "An expired coupon is refused with a reason that names expiry specifically. With the end date in the past and isActive still true, this exercises the date check rather than the active flag — the two are separate reasons and a single generic message cannot tell a buyer which applies.",
99
- expectedUiState: "The rejection names EXPIRY. Today it reads 'Coupon is not currently valid', which names nothing — record that as the failure, quoting it. SEALED20 must still be kept out of the applied list; a coupon that is refused and applied anyway would be a far worse finding than the wording.",
100
- expectedData: { couponApplied: false },
101
- endResult: "Reloading /checkout shows SEALED20 absent. The end date is restored by the final step — leaving it in the past silently breaks every later coupon case.",
102
- },
103
- "checklist-content-discovery-coupons-coupon-below-min-purchase": {
104
- roles: ["buyer"],
105
- startPage: "/checkout",
106
- steps: [
107
- "Sign in as vivaan.kapoor@gmail.com / TempPass123!.",
108
- "Add product-beyblade-x-wizard-arrow (₹899 — the cheapest in-stock listing in the catalogue, and below ARENA25's ₹1,000 minimum) to the cart and nothing else.",
109
- "Open /checkout and complete the address and add-ons steps.",
110
- "Type ARENA25 in the coupon field and click 'Apply'.",
111
- /*
112
- * 🛑 THE SECOND HALF OF THIS EXPECTS TO FAIL TODAY.
113
- *
114
- * Measured 2026-09-29: the message is "Minimum purchase requirement not
115
- * met" — the same literal from both producing branches, and no UI
116
- * composes the threshold into it (zero .tsx read `minPurchase` outside
117
- * the admin editor). So the buyer is told they are short without being
118
- * told of what, on a cart they can see is ₹99 against a threshold they
119
- * cannot see at all.
120
- *
121
- * The first half — that it names the minimum-purchase REASON rather than
122
- * being a bare "Invalid coupon" — does hold, and is worth keeping
123
- * separate: reason and amount are two assertions and only one fails.
124
- */
125
- "Read the exact wording of the rejection and whether it names the required amount.",
126
- ],
127
- inputs: { coupon: "ARENA25", cartSubtotal: 899, minPurchase: 1000 },
128
- expectedBehaviour: "A coupon below its minimum spend is refused with a message that names the threshold, so the buyer knows how much more to add. The minimum is measured against the items the coupon could actually discount, not the whole cart.",
129
- expectedUiState: "The rejection names the minimum-purchase reason — today 'Minimum purchase requirement not met', which satisfies that half — and states the AMOUNT, which it does not. Record the missing amount as the failure, quoting the message. ARENA25 does not enter the applied list.",
130
- expectedData: { couponApplied: false },
131
- endResult: "Reloading /checkout shows ARENA25 absent.",
132
- },
133
- "checklist-content-discovery-coupons-coupon-not-combinable": {
134
- roles: ["buyer"],
135
- startPage: "/checkout",
136
- steps: [
137
- "Sign in as vivaan.kapoor@gmail.com / TempPass123!.",
138
- "Add product-beyblade-burst-regalia-genesis (₹1,399, Beyblade Arena) to the cart.",
139
- "Open /checkout and complete the address and add-ons steps.",
140
- "Type ARENA25 in the coupon field and click 'Apply'.",
141
- "Type ARENAVIP in the coupon field and click 'Apply'.",
142
- "Read the rejection and check whether it names the coupon already holding the slot.",
143
- "Open the 'How coupons work' panel and read whether its rules match what just happened.",
144
- ],
145
- inputs: { coupon1: "ARENA25", coupon2: "ARENAVIP" },
146
- expectedBehaviour: "Both are seller coupons on the same store, and the rule is one per store — so the second is refused. The refusal must name the coupon occupying the slot, otherwise the buyer cannot tell which one to remove.",
147
- expectedUiState: "ARENA25 stays applied with its amount unchanged. The rejection names ARENA25 as the blocker. The help panel's stated rules match the behaviour just observed — a panel describing rules the code does not enforce is worse than no panel.",
148
- expectedData: { storeCouponCount: 1 },
149
- endResult: "Reloading /checkout shows ARENA25 applied and ARENAVIP absent.",
150
- },
151
- "checklist-content-discovery-coupons-coupon-per-user-limit": {
152
- roles: ["buyer"],
153
- startPage: "/checkout",
154
- steps: [
155
- "Sign in as vivaan.kapoor@gmail.com / TempPass123!.",
156
- "Add 2 × product-beyblade-original-dranzer-s (₹1,499 each, ₹2,998 total — above ARENAVIP's ₹2,000 minimum and in an eligible category) to the cart.",
157
- "Open /checkout, complete the address and add-ons steps, apply ARENAVIP, and place the order with Cash on Delivery.",
158
- "Add 2 × product-beyblade-original-dranzer-s to the cart again.",
159
- "Open /checkout, complete the address and add-ons steps, and type ARENAVIP in the coupon field.",
160
- "Read the rejection.",
161
- "Sign out, sign in as rehan.sheikh@gmail.com / TempPass123!, add the same two items, and apply ARENAVIP at checkout.",
162
- ],
163
- inputs: { coupon: "ARENAVIP", perUserLimit: 1 },
164
- expectedBehaviour: "ARENAVIP allows one use per user, and its total limit of 50 has 38 uses left — so exhausting it for one buyer must leave it usable by the next. Enforcing a per-user limit as if it were global would withdraw the coupon from everybody after a single redemption.",
165
- expectedUiState: "The second attempt by the same buyer is refused with a limit-reached message. The DIFFERENT buyer's attempt is accepted and the coupon appears in their applied list. A refusal for the second buyer means the limit is being read as global.",
166
- expectedData: { perUserLimit: 1 },
167
- endResult: "One order carries the discount and a second buyer can still use the code. The cross-account half is the case — the same-account half alone passes under either reading.",
168
- },
169
- };
@@ -1,2 +0,0 @@
1
- import type { AuthoredCase } from "./_types";
2
- export declare const authored: Record<string, AuthoredCase>;
@@ -1,209 +0,0 @@
1
- /*
2
- * WHY: Authored six-part procedures for content-discovery/event-detail-subroutes.
3
- * WHAT: 8 cases, keyed by full checklist id.
4
- *
5
- * 🛑 ALL 29 EXISTING EVENT CASES STOP AT THE INDEX. `/events/[id]/` has four
6
- * subroutes — participate, leaderboard, winner, spin-results — and none of them
7
- * had a single case. Several real defects were found on exactly these pages by
8
- * hand during the 2026-09 run, which is the ordinary consequence of a surface
9
- * nobody has a procedure for.
10
- *
11
- * Fixtures are named by id because event behaviour is type- and status-specific:
12
- * a poll and a raffle share a route and share almost nothing else, and "open an
13
- * event" is a different test every run.
14
- *
15
- * @tag domain:tester
16
- * @tag layer:seed
17
- * @tag pattern:none
18
- * @tag access:server-only
19
- * @tag consumers:seed-data/authored/index.ts
20
- * @tag sideEffects:none
21
- */
22
- export const authored = {
23
- "checklist-content-discovery-event-detail-subroutes-detail-tabs-match-event-type": {
24
- roles: ["guest"],
25
- startPage: "/events/event-favourite-blader-poll",
26
- steps: [
27
- "Open /events/event-favourite-blader-poll — a poll.",
28
- "Write down every tab shown.",
29
- "Open /events/event-original-series-clearance — a sale.",
30
- "Write down its tabs.",
31
- "Open /events/event-win-burst-regalia-genesis — a raffle.",
32
- "Write down its tabs.",
33
- ],
34
- inputs: {
35
- pollEvent: "event-favourite-blader-poll",
36
- saleEvent: "event-original-series-clearance",
37
- raffleEvent: "event-win-burst-regalia-genesis",
38
- },
39
- expectedBehaviour: "The tab bar is derived from the event's type. A tab offered for a type that cannot have it leads to a page with nothing to render — and a blank panel reads as a loading failure rather than as a tab that should not exist.",
40
- expectedUiState: "The poll shows no Spin Results and no Winner tab. The sale shows no Leaderboard. The raffle shows a Winner tab.",
41
- expectedData: { tabWithNoContentShown: false },
42
- endResult: "Nothing is changed; this case only reads.",
43
- },
44
- "checklist-content-discovery-event-detail-subroutes-participate-records-an-entry": {
45
- roles: ["buyer"],
46
- startPage: "/events/event-favourite-blader-poll",
47
- steps: [
48
- "Sign in as the buyer rehan.sheikh@gmail.com / TempPass123!.",
49
- "Open /events/event-favourite-blader-poll.",
50
- "Open its Participate tab.",
51
- "Submit the first available option.",
52
- "Reload the page.",
53
- "Read what the Participate tab shows now.",
54
- ],
55
- inputs: { eventId: "event-favourite-blader-poll" },
56
- expectedBehaviour: "Participation writes an entry and the page reflects it afterwards. A write that succeeds while the screen keeps offering the form is the classic split between behaviour and UI state — and it leads a user to submit repeatedly.",
57
- expectedUiState: "After the reload the tab shows the submitted answer or a 'you have taken part' state, not the blank form again.",
58
- expectedData: { entryPersisted: true },
59
- endResult: "The entry is still recorded after a second reload.",
60
- },
61
- "checklist-content-discovery-event-detail-subroutes-participate-twice-is-refused": {
62
- roles: ["buyer"],
63
- startPage: "/events/event-favourite-blader-poll",
64
- steps: [
65
- "Sign in as the buyer rehan.sheikh@gmail.com / TempPass123! and open /events/event-favourite-blader-poll.",
66
- "Participate once if you have not already.",
67
- "Reload, and try to participate a second time with a different option.",
68
- "Read what happens.",
69
- "Open /events/event-favourite-blader-poll, then its Leaderboard tab, and read the total entry count. This case reads the state the previous one left behind, so run them in order — but it still has to start somewhere, and the index is not it.",
70
- ],
71
- inputs: { eventId: "event-favourite-blader-poll" },
72
- expectedBehaviour: "A second entry from the same account is refused with a reason. Silently accepting it doubles that account's weight in the result, which is invisible until somebody reconciles the entry count against the participant count.",
73
- expectedUiState: "A clear refusal naming the reason. The entry total does not rise by a second entry from this account.",
74
- expectedData: { duplicateEntryAccepted: false },
75
- endResult: "Exactly one entry for this account survives a reload.",
76
- },
77
- "checklist-content-discovery-event-detail-subroutes-leaderboard-ranks-by-a-real-number": {
78
- roles: ["guest"],
79
- startPage: "/events/event-favourite-blader-poll/leaderboard",
80
- steps: [
81
- "Open /events/event-favourite-blader-poll and open its Leaderboard tab.",
82
- "Read the number beside each of the first five rows — the vote or score the row is ranked on.",
83
- "Check that those numbers are in descending order.",
84
- "Read the total entry count the event reports.",
85
- "Count the rows the leaderboard lists, paging if needed.",
86
- ],
87
- inputs: { eventId: "event-favourite-blader-poll" },
88
- expectedBehaviour: "The leaderboard orders by a stored number and covers the same entries the event counts. A ranking that is merely insertion order looks correct whenever the data happens to arrive sorted, so the descending check has to be explicit.",
89
- expectedUiState: "The numbers descend down the list, and the number of entries listed matches the count the event reports. A leaderboard showing no number at all beside each row is the failure — there is then nothing it can be ranking by.",
90
- expectedData: { scoresDescending: true },
91
- endResult: "Nothing is changed; this case only reads.",
92
- },
93
- "checklist-content-discovery-event-detail-subroutes-winner-page-before-draw": {
94
- roles: ["guest"],
95
- startPage: "/events/event-win-burst-regalia-genesis/winner",
96
- steps: [
97
- "Open /events/event-win-burst-regalia-genesis — an ACTIVE raffle that has not been drawn.",
98
- "Open its Winner tab.",
99
- "Read the page.",
100
- ],
101
- inputs: { eventId: "event-win-burst-regalia-genesis" },
102
- expectedBehaviour: "An undrawn raffle has no winner, and the page must say so. A blank panel is indistinguishable from a failed load, and any name shown here before a draw is fabricated — which on a prize event is the worst possible thing to render.",
103
- expectedUiState: "A clear statement that the draw has not happened yet, ideally with when it will. No name, no masked name, no empty winner card.",
104
- expectedData: { winnerNameShown: false },
105
- endResult: "Nothing is changed; this case only reads.",
106
- },
107
- "checklist-content-discovery-event-detail-subroutes-winner-page-after-draw": {
108
- roles: ["guest"],
109
- startPage: "/events/event-won-original-set-raffle/winner",
110
- steps: [
111
- "Open /events/event-won-original-set-raffle — an ENDED raffle with a recorded winner.",
112
- "Open its Winner tab.",
113
- "Read the winner shown and the prize named.",
114
- "Open the event's Overview and compare the prize named there.",
115
- ],
116
- inputs: { eventId: "event-won-original-set-raffle" },
117
- expectedBehaviour: "The winner page reads the winner recorded on the event. The displayed name is masked, as every other public surface masks a user's name.",
118
- expectedUiState: "A winner is named in masked form and the prize matches what the Overview describes.",
119
- expectedData: { winnerShown: true },
120
- endResult: "Nothing is changed; this case only reads.",
121
- },
122
- "checklist-content-discovery-event-detail-subroutes-cancelled-event-refuses-participation": {
123
- roles: ["buyer"],
124
- startPage: "/events/event-x-launch-raffle-cancelled",
125
- steps: [
126
- "Sign in as the buyer rehan.sheikh@gmail.com / TempPass123!.",
127
- "Open /events/event-x-launch-raffle-cancelled — a CANCELLED raffle.",
128
- "Read the event header for its status.",
129
- "Open the Participate tab.",
130
- "Try to take part.",
131
- ],
132
- inputs: { eventId: "event-x-launch-raffle-cancelled" },
133
- expectedBehaviour: "A cancelled event accepts nothing. The status is checked server-side as well as hidden in the UI: a Participate tab that merely hides its button still has an endpoint behind it.",
134
- expectedUiState: "The header says Cancelled, and the Participate tab explains that the event is closed rather than offering a form.",
135
- expectedData: { participationAccepted: false },
136
- endResult: "No entry is recorded; the entry count is unchanged after a reload.",
137
- },
138
- "checklist-content-discovery-event-detail-subroutes-guest-sees-event-but-is-prompted": {
139
- roles: ["guest"],
140
- startPage: "/events",
141
- steps: [
142
- "Open a private window with no session.",
143
- "Open /events/event-favourite-blader-poll.",
144
- "Read the Overview — the title, the description and the dates.",
145
- "Open the Participate tab.",
146
- "Read what it offers.",
147
- ],
148
- inputs: { eventId: "event-favourite-blader-poll" },
149
- expectedBehaviour: "An event is public reading and gated taking-part. Being prompted to sign in IS the expected result — the failure to look for is a hard redirect off the page, which loses the visitor the content they came for, or a form that submits and fails.",
150
- expectedUiState: "The event's own content is readable. Participate shows a sign-in prompt rather than a form, and nothing 404s or bounces to /unauthorized.",
151
- expectedData: { eventContentReadableByGuest: true },
152
- endResult: "No entry is recorded and no session is created.",
153
- },
154
- /*
155
- * 🛑 SPLIT IN TWO, 2026-09-29, after this case failed for a reason that was
156
- * not a bug in the code it was testing.
157
- *
158
- * It asserted that /events/{id}/spin-results lists "this account's own spins".
159
- * The route was a PUBLIC feed — `getSpinResultsCached(id)` took only the event
160
- * id and returned the ten most recent spins across all users — so read by a
161
- * buyer who had never spun it listed three strangers' prizes and showed no
162
- * empty state, because from the feed's point of view nothing was empty.
163
- *
164
- * Both readings turned out to be wanted, so the page now has two sections and
165
- * there are two cases. Rewriting the single case to assert whatever the code
166
- * already did would have made it a tautology; deleting the account-scoped
167
- * claim would have thrown away the one a human actually cared about.
168
- */
169
- "checklist-content-discovery-event-detail-subroutes-spin-results-subroute": {
170
- roles: ["buyer"],
171
- startPage: "/events/event-daily-beyblade-pull-wheel/spin-results",
172
- steps: [
173
- "Sign in as the buyer rehan.sheikh@gmail.com / TempPass123!.",
174
- "Open /events/event-daily-beyblade-pull-wheel — a SPIN_WHEEL event, active, with real spinPrizes and spinMaxPerUser of 2.",
175
- "Read which tabs the detail page offers and check a results tab is among them.",
176
- "Open /events/event-daily-beyblade-pull-wheel/spin-results directly by URL.",
177
- "Find the 'Last 10 Spin Results' section — the PUBLIC feed of everyone's recent spins, which is a different section from 'Your Spins'.",
178
- "Read the participant name on each row.",
179
- ],
180
- inputs: {
181
- eventId: "event-daily-beyblade-pull-wheel",
182
- },
183
- expectedBehaviour: "The public feed lists recent spins by ANY participant, and every display name is masked. This is a public page on a public event, so a real winner's full name must not be published beside the prize they won — the same rule that applies to bidder names on public bid history.",
184
- expectedUiState: "A 'Last 10 Spin Results' heading over rows of participant, prize and relative time. Every signed-in participant's name is masked to initials in the 'R*** K***' shape; a guest row reads 'Guest'. No row shows a full first and last name.",
185
- expectedData: { fullNamesVisibleInPublicFeed: 0 },
186
- endResult: "Read-only. Nothing is spun and nothing is written.",
187
- },
188
- "checklist-content-discovery-event-detail-subroutes-my-spins-scoped-to-viewer": {
189
- roles: ["buyer"],
190
- startPage: "/events/event-daily-beyblade-pull-wheel/spin-results",
191
- steps: [
192
- "Sign in as the buyer rehan.sheikh@gmail.com / TempPass123!.",
193
- "Open /events/event-daily-beyblade-pull-wheel/spin-results.",
194
- "Find the 'Your Spins' section — it sits ABOVE the public 'Last 10 Spin Results' feed.",
195
- "Before spinning, read what it shows. It must name YOUR state, not the event's: 'You have not spun on this event yet.' Reading 'No spins yet' here would be the bug this case exists for, because the public feed below is not empty.",
196
- "Go back to the event, spin once, and read the prize awarded.",
197
- "Return to spin-results and check 'Your Spins' lists exactly that one spin with that prize.",
198
- "Confirm no other participant's row appears inside 'Your Spins' — the strangers visible in the feed below must not be in your own section.",
199
- ],
200
- inputs: {
201
- eventId: "event-daily-beyblade-pull-wheel",
202
- spinMaxPerUser: 2,
203
- },
204
- expectedBehaviour: "'Your Spins' is scoped to the signed-in caller and answers what did I win. Its empty state is about the viewer, so someone who has never spun is told so plainly rather than being shown other people's prizes with nothing to distinguish them.",
205
- expectedUiState: "Before spinning: a 'Your Spins' heading over the text 'You have not spun on this event yet.' After one spin: exactly one row naming the prize just awarded and its relative time, and no participant names at all — every row in this section is yours by construction.",
206
- expectedData: { mySpinRowsBeforeSpinning: 0, mySpinRowsAfterOneSpin: 1 },
207
- endResult: "One spin is recorded against this account and 'Your Spins' still shows it after a reload. Signed out, the section reads 'Sign in to see your own spins and the prizes you have won.' rather than showing anyone else's.",
208
- },
209
- };
@@ -1,2 +0,0 @@
1
- import type { AuthoredCase } from "./_types";
2
- export declare const authored: Record<string, AuthoredCase>;
@@ -1,207 +0,0 @@
1
- /*
2
- * WHY: Authored six-part procedures for the content-discovery/event-participation page.
3
- * WHAT: 12 case(s), keyed by full checklist id.
4
- *
5
- * Events were covered from the ADMIN side — creating them, configuring raffles and
6
- * spin wheels, drawing winners. What nobody had written was the participant's own
7
- * experience: joining, seeing their own entry, finding themselves on a leaderboard,
8
- * and learning that they won.
9
- *
10
- * That asymmetry is worth naming. An admin surface can look complete while the
11
- * participant sees nothing at all, because the two are different pages reading
12
- * different projections of the same record — and the admin one is the one that
13
- * gets built first and looked at most.
14
- *
15
- * @tag domain:tester
16
- * @tag layer:seed
17
- * @tag pattern:none
18
- * @tag access:server-only
19
- * @tag consumers:seed-data/authored/index.ts
20
- * @tag sideEffects:none
21
- */
22
- const SIGN_IN_BUYER = "Sign in as rehan.sheikh@gmail.com / TempPass123!.";
23
- export const authored = {
24
- "checklist-content-discovery-event-participation-join-event-as-participant": {
25
- roles: ["buyer"],
26
- startPage: "/events/event-favourite-blader-poll",
27
- steps: [
28
- SIGN_IN_BUYER,
29
- "Open /events/event-favourite-blader-poll — an ACTIVE poll with 3 seeded entries. 🛑 THE NEXT FOUR CASES READ THE ENTRY THIS ONE CREATES, so they must all use this same event; picking a different active event each time breaks the chain and each case then tests a state nobody set up.",
30
- "Open it and find the control for joining.",
31
- "Use it.",
32
- "Read the outcome shown.",
33
- "Check it states whether the entry was confirmed or waitlisted, and why if waitlisted.",
34
- ],
35
- expectedBehaviour: "Joining produces an entry with an explicit status. Waitlisted and confirmed are different outcomes with different consequences, so reporting only 'joined' leaves the participant believing they have a place they may not have.",
36
- expectedUiState: "The result names the entry's status, and a waitlisted entry says why. A bare success message is the finding.",
37
- endResult: "One entry exists for this account.",
38
- },
39
- "checklist-content-discovery-event-participation-own-entry-visible-after-join": {
40
- roles: ["buyer"],
41
- startPage: "/events/event-favourite-blader-poll",
42
- steps: [
43
- SIGN_IN_BUYER,
44
- "Join an active event.",
45
- "Return to the event page and look for the participant's own entry.",
46
- "Read its status there.",
47
- "Check the page shows the participant is already in rather than offering to join again.",
48
- "Look for the entry anywhere else the buyer's own account lists it.",
49
- ],
50
- expectedBehaviour: "A participant can see their own entry without asking anyone. An entry that exists only on an admin screen is a record about somebody that they cannot read — and the join control still offering itself is what makes them try again.",
51
- expectedUiState: "The event page shows the participant's own entry with its status, and the join control reflects that they are already in.",
52
- endResult: "The entry is visible to its owner.",
53
- },
54
- "checklist-content-discovery-event-participation-entry-survives-reload-and-relogin": {
55
- roles: ["buyer"],
56
- startPage: "/events/event-favourite-blader-poll",
57
- steps: [
58
- SIGN_IN_BUYER,
59
- "Join an active event and note the entry's status.",
60
- "Reload the event page and read the entry again.",
61
- "Sign out and sign back in as the same account.",
62
- "Open /events/event-favourite-blader-poll and read the entry this account created.",
63
- "Open the event in a different browser signed in as the same account.",
64
- ],
65
- expectedBehaviour: "The entry is a stored record keyed to the account, so it survives a reload, a sign-out and a different device. An entry held only in the browser disappears the moment the participant switches devices, which is exactly when they check whether they got in.",
66
- expectedUiState: "The entry and its status are present after the reload, after signing back in, and in the second browser.",
67
- endResult: "The entry persists.",
68
- },
69
- "checklist-content-discovery-event-participation-cannot-join-twice": {
70
- roles: ["buyer"],
71
- startPage: "/events/event-favourite-blader-poll",
72
- steps: [
73
- SIGN_IN_BUYER,
74
- "Join an active event.",
75
- "Attempt to join the same event again from the page.",
76
- "Read what happens.",
77
- "Open /events/event-favourite-blader-poll in a second tab and attempt to join from there as well.",
78
- "Check the account has exactly one entry.",
79
- ],
80
- expectedBehaviour: "A second join is refused rather than creating a duplicate. Two entries for one account inflate the entry count, double the account's odds in any draw, and are indistinguishable from two different people once the names are masked.",
81
- expectedUiState: "The second attempt is refused with a message saying the account is already entered, and only one entry exists. Two entries is the finding.",
82
- expectedData: { entriesForAccount: 1 },
83
- endResult: "Exactly one entry exists.",
84
- },
85
- "checklist-content-discovery-event-participation-leave-or-cancel-entry": {
86
- roles: ["buyer"],
87
- startPage: "/events/event-favourite-blader-poll",
88
- steps: [
89
- SIGN_IN_BUYER,
90
- "Join an active event.",
91
- "On /events/event-favourite-blader-poll, find the control for withdrawing and use it.",
92
- "Read the confirmation, if one is shown.",
93
- "Read the entry's state afterwards.",
94
- "Reload and read it again.",
95
- "Check the event's entry count fell.",
96
- ],
97
- expectedBehaviour: "Withdrawing is possible and is reflected in both the entry and the event's counts. An entry that cannot be withdrawn leaves a participant permanently counted in something they left — and if the counts do not follow, a waitlisted person is never promoted into the freed place.",
98
- expectedUiState: "The entry reads as cancelled or is gone, the state survives a reload, and the event's entry count is one lower.",
99
- endResult: "The entry is withdrawn.",
100
- },
101
- "checklist-content-discovery-event-participation-closed-event-cannot-be-joined": {
102
- roles: ["buyer"],
103
- startPage: "/events/event-won-original-set-raffle",
104
- steps: [
105
- SIGN_IN_BUYER,
106
- "Open /events/event-won-original-set-raffle — an ENDED raffle, which is the seed's only ended event.",
107
- "Open it and read whether a join control is offered.",
108
- "If one is offered, use it and read what happens.",
109
- "Repeat with an event whose status is cancelled.",
110
- "Repeat with one whose status is paused.",
111
- ],
112
- expectedBehaviour: "An event that cannot be joined says so on the page rather than accepting a click and failing at submit. The status set includes paused and cancelled alongside ended, and each has to be handled — a page that only knows about ended lets the other two through.",
113
- expectedUiState: "None of the three offers a working join control, and each states its own status. A control that fails only on submit is the finding, named by status.",
114
- endResult: "No entry is created.",
115
- },
116
- "checklist-content-discovery-event-participation-leaderboard-shows-real-participants": {
117
- roles: ["buyer"],
118
- startPage: "/events/event-favourite-blader-poll/leaderboard",
119
- steps: [
120
- SIGN_IN_BUYER,
121
- "Open /events/event-favourite-blader-poll and open its Leaderboard tab — it carries 3 seeded entries, so the board is not empty.",
122
- "Read the rows — the names and the scores.",
123
- "Check the names are masked rather than showing full identities.",
124
- "Check the scores are real numbers rather than zeros or placeholders.",
125
- "Cross-check one row against the event's entry list if it is visible.",
126
- ],
127
- expectedBehaviour: "The leaderboard lists real entrants with real scores, and their names are masked. A masking helper that only copies its input instead of masking is invisible everywhere except to a human who recognises a real name — one shipped in exactly that shape and sat, because the field it should have masked was not being displayed at all.",
128
- expectedUiState: "Real participants with real scores, each name partially hidden. A full name is a finding and a leak; all-zero scores is a separate finding.",
129
- endResult: "Read-only.",
130
- },
131
- "checklist-content-discovery-event-participation-leaderboard-own-row-findable": {
132
- roles: ["buyer"],
133
- startPage: "/events/event-favourite-blader-poll/leaderboard",
134
- steps: [
135
- SIGN_IN_BUYER,
136
- "Join an event that has a leaderboard and take part enough to appear on it.",
137
- "Open /events/event-favourite-blader-poll and its Leaderboard tab.",
138
- "Look for the participant's own row without scrolling the whole list.",
139
- "Check it is highlighted, pinned, or otherwise findable.",
140
- "Read the position shown for it.",
141
- ],
142
- expectedBehaviour: "A participant can find themselves. A leaderboard is read almost entirely to answer one question — where am I — and on a long list without a marker that answer requires scrolling past everyone else.",
143
- expectedUiState: "The participant's own row is marked or surfaced, with their position. Having to scroll a long list to find it is the finding.",
144
- endResult: "Read-only.",
145
- },
146
- "checklist-content-discovery-event-participation-leaderboard-ordering-correct": {
147
- roles: ["buyer"],
148
- startPage: "/events/event-favourite-blader-poll/leaderboard",
149
- steps: [
150
- SIGN_IN_BUYER,
151
- "Open /events/event-favourite-blader-poll and its Leaderboard tab, and write down every row in order with its score — the seed has 3 entries, so read all of them rather than expecting ten.",
152
- "Check each score is not greater than the one above it.",
153
- "Find two rows with equal scores and note their order.",
154
- "Reload the page and read the first ten again.",
155
- "Check the order is identical, including the tied pair.",
156
- ],
157
- expectedBehaviour: "The ordering is by score and is stable across reloads, ties included. An unstable tie break swaps positions between two visits — so a participant sees themselves at rank 6 and then rank 7 with nothing having changed, which reads as the site losing their score.",
158
- expectedUiState: "Scores are non-increasing down the list, and the whole order including the tied pair is identical after the reload.",
159
- endResult: "Read-only.",
160
- },
161
- "checklist-content-discovery-event-participation-leaderboard-empty-state": {
162
- roles: ["buyer"],
163
- startPage: "/events/event-beyblade-slot-raffle-draft",
164
- steps: [
165
- SIGN_IN_BUYER,
166
- "Open /events/event-beyblade-slot-raffle-draft — a DRAFT raffle with no seeded entries, which is what makes the empty state reachable.",
167
- "Open its leaderboard.",
168
- "Read what is shown.",
169
- "Check it states there are no entries rather than showing a blank panel.",
170
- "Check whatever chrome the leaderboard has — headings, columns — either renders sensibly or is omitted.",
171
- ],
172
- expectedBehaviour: "An empty leaderboard says it is empty. A blank panel is indistinguishable from a leaderboard that failed to load, and the participant's reasonable conclusion is that their entry was lost.",
173
- expectedUiState: "An explicit empty state. A blank area, or column headings over nothing, are both findings.",
174
- endResult: "Read-only.",
175
- },
176
- "checklist-content-discovery-event-participation-raffle-winner-announced-to-participants": {
177
- roles: ["admin", "buyer"],
178
- startPage: "/events/event-won-original-set-raffle",
179
- steps: [
180
- "Sign in as admin@letitrip.in / TempPass123! and open an event with a raffle configured.",
181
- "Draw the raffle and note who won.",
182
- "Sign in as the winning participant.",
183
- "Open /events/event-won-original-set-raffle — ENDED and carrying a recorded raffleWinnerUserId — and read whether the result is announced.",
184
- "Open the account's notifications and look for one about the win.",
185
- "Sign in as a non-winning participant and check the result is visible to them too.",
186
- ],
187
- expectedBehaviour: "A drawn raffle is announced on the event page and the winner is notified. A result that exists only in the admin screen means the winner never learns they won — and the notification's link has to land somewhere real, which for entries means the list rather than a fabricated per-entry page that would 404.",
188
- expectedUiState: "The event page names the winner, the winner has a notification, and other participants can see the result. A win visible only to an admin is the finding.",
189
- endResult: "One raffle is drawn.",
190
- },
191
- "checklist-content-discovery-event-participation-spin-wheel-one-use-enforced": {
192
- roles: ["buyer"],
193
- startPage: "/events/event-daily-beyblade-pull-wheel",
194
- steps: [
195
- SIGN_IN_BUYER,
196
- "Open /events/event-daily-beyblade-pull-wheel — the seed's only SPIN_WHEEL event, active, with real spinPrizes and spinMaxPerUser of 2. Note the cap is TWO, not one: a case asserting a single use would fail on a correct system.",
197
- "Take a spin and read the result.",
198
- "Spin a SECOND time — this one is allowed, because spinMaxPerUser is 2.",
199
- "Attempt a THIRD spin and read what happens.",
200
- "Reload the page and attempt a third spin once more.",
201
- "If a prize was won, follow whatever the interface offers for claiming it.",
202
- ],
203
- expectedBehaviour: "The per-user spin limit is TWO, enforced server-side, and it survives a reload; a won prize is claimable. A limit held only in the browser is defeated by refreshing — which is the first thing anyone does after a disappointing spin.",
204
- expectedUiState: "The first two spins succeed and the THIRD is refused, before and after the reload, with a message naming the limit; a won prize can actually be claimed. A refusal on the second spin is a failure in the other direction — the cap is 2 — and a third spin that works after a reload is the finding.",
205
- endResult: "Both spins are used; claim any prize won. The key still reads one-use-enforced and is deliberately unchanged — a case id is the response document id, so renaming it orphans every verdict recorded against it.",
206
- },
207
- };
@@ -1,2 +0,0 @@
1
- import type { AuthoredCase } from "./_types";
2
- export declare const authored: Record<string, AuthoredCase>;