@mohasinac/appkit 4.58.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 (556) hide show
  1. package/dist/.build-stamp.json +3 -3
  2. package/dist/_internal/server/jobs/handlers/messages.d.ts +1 -1
  3. package/dist/_internal/server/jobs/handlers/messages.js +1 -1
  4. package/dist/_internal/shared/types/base-document.d.ts +1 -1
  5. package/dist/constants/seed-meta.d.ts +113 -0
  6. package/dist/constants/seed-meta.js +91 -0
  7. package/dist/index.d.ts +0 -131
  8. package/dist/index.js +50 -294
  9. package/dist/server.d.ts +0 -69
  10. package/dist/server.js +0 -69
  11. package/package.json +4 -2
  12. package/scripts/seed-cli.mjs +69 -1
  13. package/dist/features/tester/seed-data/_happy-path.d.ts +0 -23
  14. package/dist/features/tester/seed-data/_happy-path.js +0 -710
  15. package/dist/features/tester/seed-data/_money-flows.d.ts +0 -23
  16. package/dist/features/tester/seed-data/_money-flows.js +0 -610
  17. package/dist/features/tester/seed-data/authored/_types.d.ts +0 -57
  18. package/dist/features/tester/seed-data/authored/_types.js +0 -35
  19. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.d.ts +0 -2
  20. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.js +0 -226
  21. package/dist/features/tester/seed-data/authored/account-auth__signup-login.d.ts +0 -2
  22. package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +0 -329
  23. package/dist/features/tester/seed-data/authored/addresses__address-filters.d.ts +0 -2
  24. package/dist/features/tester/seed-data/authored/addresses__address-filters.js +0 -41
  25. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.d.ts +0 -2
  26. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.js +0 -76
  27. package/dist/features/tester/seed-data/authored/addresses__postal-validation.d.ts +0 -2
  28. package/dist/features/tester/seed-data/authored/addresses__postal-validation.js +0 -78
  29. package/dist/features/tester/seed-data/authored/addresses__state-picker.d.ts +0 -2
  30. package/dist/features/tester/seed-data/authored/addresses__state-picker.js +0 -59
  31. package/dist/features/tester/seed-data/authored/addresses__unban-request.d.ts +0 -2
  32. package/dist/features/tester/seed-data/authored/addresses__unban-request.js +0 -77
  33. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.d.ts +0 -2
  34. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +0 -151
  35. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.d.ts +0 -2
  36. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.js +0 -265
  37. package/dist/features/tester/seed-data/authored/admin__blog-faqs.d.ts +0 -2
  38. package/dist/features/tester/seed-data/authored/admin__blog-faqs.js +0 -131
  39. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.d.ts +0 -2
  40. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.js +0 -143
  41. package/dist/features/tester/seed-data/authored/admin__bulk-actions.d.ts +0 -2
  42. package/dist/features/tester/seed-data/authored/admin__bulk-actions.js +0 -207
  43. package/dist/features/tester/seed-data/authored/admin__bundles.d.ts +0 -2
  44. package/dist/features/tester/seed-data/authored/admin__bundles.js +0 -144
  45. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.d.ts +0 -2
  46. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.js +0 -265
  47. package/dist/features/tester/seed-data/authored/admin__catalog-listings.d.ts +0 -2
  48. package/dist/features/tester/seed-data/authored/admin__catalog-listings.js +0 -318
  49. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.d.ts +0 -2
  50. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.js +0 -177
  51. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.d.ts +0 -2
  52. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.js +0 -165
  53. package/dist/features/tester/seed-data/authored/admin__content-deletes.d.ts +0 -2
  54. package/dist/features/tester/seed-data/authored/admin__content-deletes.js +0 -267
  55. package/dist/features/tester/seed-data/authored/admin__content-marketing.d.ts +0 -2
  56. package/dist/features/tester/seed-data/authored/admin__content-marketing.js +0 -188
  57. package/dist/features/tester/seed-data/authored/admin__coupons.d.ts +0 -2
  58. package/dist/features/tester/seed-data/authored/admin__coupons.js +0 -215
  59. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.d.ts +0 -2
  60. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +0 -202
  61. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.d.ts +0 -2
  62. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.js +0 -249
  63. package/dist/features/tester/seed-data/authored/admin__media-watermark.d.ts +0 -2
  64. package/dist/features/tester/seed-data/authored/admin__media-watermark.js +0 -148
  65. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.d.ts +0 -2
  66. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.js +0 -350
  67. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.d.ts +0 -2
  68. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.js +0 -129
  69. package/dist/features/tester/seed-data/authored/admin__site-system.d.ts +0 -2
  70. package/dist/features/tester/seed-data/authored/admin__site-system.js +0 -586
  71. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.d.ts +0 -2
  72. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.js +0 -260
  73. package/dist/features/tester/seed-data/authored/admin__users-trust.d.ts +0 -2
  74. package/dist/features/tester/seed-data/authored/admin__users-trust.js +0 -569
  75. package/dist/features/tester/seed-data/authored/buying__bidding.d.ts +0 -2
  76. package/dist/features/tester/seed-data/authored/buying__bidding.js +0 -449
  77. package/dist/features/tester/seed-data/authored/buying__browsing-search.d.ts +0 -2
  78. package/dist/features/tester/seed-data/authored/buying__browsing-search.js +0 -684
  79. package/dist/features/tester/seed-data/authored/buying__buying-checkout.d.ts +0 -2
  80. package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +0 -546
  81. package/dist/features/tester/seed-data/authored/buying__buying-coupons.d.ts +0 -2
  82. package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +0 -379
  83. package/dist/features/tester/seed-data/authored/buying__cart.d.ts +0 -2
  84. package/dist/features/tester/seed-data/authored/buying__cart.js +0 -1264
  85. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.d.ts +0 -2
  86. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +0 -122
  87. package/dist/features/tester/seed-data/authored/buying__my-orders.d.ts +0 -2
  88. package/dist/features/tester/seed-data/authored/buying__my-orders.js +0 -279
  89. package/dist/features/tester/seed-data/authored/buying__offers.d.ts +0 -2
  90. package/dist/features/tester/seed-data/authored/buying__offers.js +0 -1127
  91. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.d.ts +0 -2
  92. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.js +0 -153
  93. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.d.ts +0 -2
  94. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.js +0 -252
  95. package/dist/features/tester/seed-data/authored/buying__product-detail.d.ts +0 -2
  96. package/dist/features/tester/seed-data/authored/buying__product-detail.js +0 -474
  97. package/dist/features/tester/seed-data/authored/buying__return-request.d.ts +0 -2
  98. package/dist/features/tester/seed-data/authored/buying__return-request.js +0 -165
  99. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.d.ts +0 -2
  100. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +0 -260
  101. package/dist/features/tester/seed-data/authored/buying__reviews.d.ts +0 -2
  102. package/dist/features/tester/seed-data/authored/buying__reviews.js +0 -128
  103. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +0 -2
  104. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +0 -96
  105. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.d.ts +0 -2
  106. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +0 -283
  107. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.d.ts +0 -2
  108. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.js +0 -169
  109. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.d.ts +0 -2
  110. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.js +0 -105
  111. package/dist/features/tester/seed-data/authored/buying__wishlist-history.d.ts +0 -2
  112. package/dist/features/tester/seed-data/authored/buying__wishlist-history.js +0 -374
  113. package/dist/features/tester/seed-data/authored/community-support__messages.d.ts +0 -2
  114. package/dist/features/tester/seed-data/authored/community-support__messages.js +0 -200
  115. package/dist/features/tester/seed-data/authored/community-support__public-profile.d.ts +0 -2
  116. package/dist/features/tester/seed-data/authored/community-support__public-profile.js +0 -54
  117. package/dist/features/tester/seed-data/authored/community-support__support-tickets.d.ts +0 -2
  118. package/dist/features/tester/seed-data/authored/community-support__support-tickets.js +0 -76
  119. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +0 -4
  120. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +0 -590
  121. package/dist/features/tester/seed-data/authored/content-discovery__blog.d.ts +0 -2
  122. package/dist/features/tester/seed-data/authored/content-discovery__blog.js +0 -110
  123. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.d.ts +0 -2
  124. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.js +0 -149
  125. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.d.ts +0 -2
  126. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +0 -145
  127. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.d.ts +0 -2
  128. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +0 -174
  129. package/dist/features/tester/seed-data/authored/content-discovery__coupons.d.ts +0 -2
  130. package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +0 -169
  131. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.d.ts +0 -2
  132. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.js +0 -209
  133. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.d.ts +0 -2
  134. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.js +0 -207
  135. package/dist/features/tester/seed-data/authored/content-discovery__events.d.ts +0 -2
  136. package/dist/features/tester/seed-data/authored/content-discovery__events.js +0 -377
  137. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.d.ts +0 -2
  138. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.js +0 -87
  139. package/dist/features/tester/seed-data/authored/content-discovery__notifications.d.ts +0 -2
  140. package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +0 -147
  141. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +0 -2
  142. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +0 -209
  143. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.d.ts +0 -2
  144. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +0 -167
  145. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +0 -2
  146. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +0 -73
  147. package/dist/features/tester/seed-data/authored/content-discovery__search.d.ts +0 -2
  148. package/dist/features/tester/seed-data/authored/content-discovery__search.js +0 -363
  149. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +0 -2
  150. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +0 -340
  151. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.d.ts +0 -2
  152. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.js +0 -88
  153. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.d.ts +0 -2
  154. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +0 -78
  155. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.d.ts +0 -2
  156. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.js +0 -76
  157. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.d.ts +0 -2
  158. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.js +0 -62
  159. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.d.ts +0 -2
  160. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.js +0 -163
  161. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.d.ts +0 -2
  162. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.js +0 -61
  163. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.d.ts +0 -2
  164. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.js +0 -89
  165. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.d.ts +0 -2
  166. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +0 -95
  167. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.d.ts +0 -2
  168. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.js +0 -191
  169. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.d.ts +0 -2
  170. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.js +0 -158
  171. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.d.ts +0 -2
  172. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.js +0 -82
  173. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.d.ts +0 -2
  174. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.js +0 -106
  175. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.d.ts +0 -2
  176. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.js +0 -88
  177. package/dist/features/tester/seed-data/authored/design-ux__general-design.d.ts +0 -2
  178. package/dist/features/tester/seed-data/authored/design-ux__general-design.js +0 -204
  179. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.d.ts +0 -2
  180. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.js +0 -301
  181. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +0 -2
  182. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +0 -90
  183. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +0 -2
  184. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +0 -85
  185. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.d.ts +0 -2
  186. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.js +0 -407
  187. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.d.ts +0 -2
  188. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.js +0 -88
  189. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.d.ts +0 -2
  190. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.js +0 -84
  191. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.d.ts +0 -2
  192. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +0 -214
  193. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.d.ts +0 -2
  194. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +0 -275
  195. package/dist/features/tester/seed-data/authored/index.d.ts +0 -2
  196. package/dist/features/tester/seed-data/authored/index.js +0 -301
  197. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.d.ts +0 -2
  198. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +0 -125
  199. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.d.ts +0 -2
  200. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.js +0 -85
  201. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.d.ts +0 -2
  202. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.js +0 -92
  203. package/dist/features/tester/seed-data/authored/page-wiring__reachability.d.ts +0 -2
  204. package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -115
  205. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.d.ts +0 -2
  206. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +0 -137
  207. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.d.ts +0 -2
  208. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +0 -263
  209. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.d.ts +0 -2
  210. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.js +0 -229
  211. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.d.ts +0 -2
  212. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.js +0 -325
  213. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.d.ts +0 -2
  214. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.js +0 -126
  215. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.d.ts +0 -2
  216. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.js +0 -141
  217. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.d.ts +0 -2
  218. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.js +0 -115
  219. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.d.ts +0 -2
  220. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +0 -253
  221. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.d.ts +0 -2
  222. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.js +0 -93
  223. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +0 -3
  224. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +0 -185
  225. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.d.ts +0 -2
  226. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.js +0 -82
  227. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.d.ts +0 -2
  228. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.js +0 -60
  229. package/dist/features/tester/seed-data/authored/selling__become-seller.d.ts +0 -2
  230. package/dist/features/tester/seed-data/authored/selling__become-seller.js +0 -117
  231. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.d.ts +0 -2
  232. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.js +0 -148
  233. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.d.ts +0 -2
  234. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.js +0 -108
  235. package/dist/features/tester/seed-data/authored/selling__listing-a-product.d.ts +0 -2
  236. package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +0 -274
  237. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.d.ts +0 -2
  238. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.js +0 -145
  239. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.d.ts +0 -2
  240. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +0 -336
  241. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.d.ts +0 -2
  242. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.js +0 -136
  243. package/dist/features/tester/seed-data/authored/selling__media-limits.d.ts +0 -2
  244. package/dist/features/tester/seed-data/authored/selling__media-limits.js +0 -135
  245. package/dist/features/tester/seed-data/authored/selling__product-upload-details.d.ts +0 -2
  246. package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +0 -155
  247. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.d.ts +0 -2
  248. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.js +0 -138
  249. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.d.ts +0 -2
  250. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.js +0 -191
  251. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.d.ts +0 -2
  252. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.js +0 -138
  253. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.d.ts +0 -2
  254. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.js +0 -106
  255. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.d.ts +0 -2
  256. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.js +0 -192
  257. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.d.ts +0 -2
  258. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.js +0 -109
  259. package/dist/features/tester/seed-data/authored/selling__seller-guide.d.ts +0 -2
  260. package/dist/features/tester/seed-data/authored/selling__seller-guide.js +0 -34
  261. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.d.ts +0 -2
  262. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +0 -348
  263. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.d.ts +0 -2
  264. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +0 -87
  265. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.d.ts +0 -2
  266. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.js +0 -90
  267. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.d.ts +0 -2
  268. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.js +0 -85
  269. package/dist/features/tester/seed-data/authored/selling__seller-orders.d.ts +0 -2
  270. package/dist/features/tester/seed-data/authored/selling__seller-orders.js +0 -213
  271. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.d.ts +0 -2
  272. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.js +0 -192
  273. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +0 -2
  274. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +0 -77
  275. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.d.ts +0 -2
  276. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.js +0 -165
  277. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.d.ts +0 -2
  278. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.js +0 -116
  279. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.d.ts +0 -2
  280. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.js +0 -127
  281. package/dist/features/tester/seed-data/authored/seo__og-images.d.ts +0 -2
  282. package/dist/features/tester/seed-data/authored/seo__og-images.js +0 -107
  283. package/dist/features/tester/seed-data/authored/seo__page-metadata.d.ts +0 -2
  284. package/dist/features/tester/seed-data/authored/seo__page-metadata.js +0 -120
  285. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.d.ts +0 -2
  286. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +0 -105
  287. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +0 -2
  288. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +0 -58
  289. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +0 -2
  290. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +0 -284
  291. package/dist/features/tester/seed-data/index.d.ts +0 -2
  292. package/dist/features/tester/seed-data/index.js +0 -2
  293. package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +0 -2
  294. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +0 -7601
  295. package/dist/features/tester/seed-data/tester-responses-seed-data.d.ts +0 -2
  296. package/dist/features/tester/seed-data/tester-responses-seed-data.js +0 -95
  297. package/dist/features/tester/seed-data/tester-window.d.ts +0 -25
  298. package/dist/features/tester/seed-data/tester-window.js +0 -66
  299. package/dist/seed/_helpers/brand-rows.d.ts +0 -35
  300. package/dist/seed/_helpers/brand-rows.js +0 -600
  301. package/dist/seed/_helpers/category-content-generated.d.ts +0 -24
  302. package/dist/seed/_helpers/category-content-generated.js +0 -1853
  303. package/dist/seed/_helpers/category-content.d.ts +0 -68
  304. package/dist/seed/_helpers/category-content.js +0 -731
  305. package/dist/seed/_helpers/category-forest.d.ts +0 -4
  306. package/dist/seed/_helpers/category-forest.js +0 -824
  307. package/dist/seed/_helpers/category-images-generated.d.ts +0 -57
  308. package/dist/seed/_helpers/category-images-generated.js +0 -618
  309. package/dist/seed/_helpers/category-models/chunk0.d.ts +0 -2
  310. package/dist/seed/_helpers/category-models/chunk0.js +0 -2648
  311. package/dist/seed/_helpers/category-models/chunk1.d.ts +0 -2
  312. package/dist/seed/_helpers/category-models/chunk1.js +0 -2318
  313. package/dist/seed/_helpers/category-models/chunk2.d.ts +0 -2
  314. package/dist/seed/_helpers/category-models/chunk2.js +0 -2560
  315. package/dist/seed/_helpers/category-models/chunk3.d.ts +0 -2
  316. package/dist/seed/_helpers/category-models/chunk3.js +0 -2196
  317. package/dist/seed/_helpers/category-models/chunk4.d.ts +0 -2
  318. package/dist/seed/_helpers/category-models/chunk4.js +0 -1732
  319. package/dist/seed/_helpers/category-models.d.ts +0 -12
  320. package/dist/seed/_helpers/category-models.js +0 -45
  321. package/dist/seed/_helpers/category-names.d.ts +0 -54
  322. package/dist/seed/_helpers/category-names.js +0 -118
  323. package/dist/seed/_helpers/category-parts-glossary-map.d.ts +0 -1
  324. package/dist/seed/_helpers/category-parts-glossary-map.js +0 -2499
  325. package/dist/seed/_helpers/category-parts.d.ts +0 -9
  326. package/dist/seed/_helpers/category-parts.js +0 -15022
  327. package/dist/seed/_helpers/category-tree.d.ts +0 -27
  328. package/dist/seed/_helpers/category-tree.js +0 -119
  329. package/dist/seed/_helpers/character-features.d.ts +0 -10
  330. package/dist/seed/_helpers/character-features.js +0 -120
  331. package/dist/seed/_helpers/final-sale-fixtures.d.ts +0 -35
  332. package/dist/seed/_helpers/final-sale-fixtures.js +0 -61
  333. package/dist/seed/_helpers/franchise-rows.d.ts +0 -43
  334. package/dist/seed/_helpers/franchise-rows.js +0 -189
  335. package/dist/seed/_helpers/media.d.ts +0 -67
  336. package/dist/seed/_helpers/media.js +0 -172
  337. package/dist/seed/_helpers/part-colours-generated.d.ts +0 -18
  338. package/dist/seed/_helpers/part-colours-generated.js +0 -273
  339. package/dist/seed/_helpers/product-search-txt.d.ts +0 -18
  340. package/dist/seed/_helpers/product-search-txt.js +0 -23
  341. package/dist/seed/_helpers/search-txt-wrappers.d.ts +0 -26
  342. package/dist/seed/_helpers/search-txt-wrappers.js +0 -58
  343. package/dist/seed/addresses-seed-data.d.ts +0 -2
  344. package/dist/seed/addresses-seed-data.js +0 -78
  345. package/dist/seed/authenticity-knowledge-seed-data.d.ts +0 -78
  346. package/dist/seed/authenticity-knowledge-seed-data.js +0 -10729
  347. package/dist/seed/bey-products-seed-data.d.ts +0 -18
  348. package/dist/seed/bey-products-seed-data.js +0 -18011
  349. package/dist/seed/beys/chunk0.d.ts +0 -17
  350. package/dist/seed/beys/chunk0.js +0 -36733
  351. package/dist/seed/beys/chunk1.d.ts +0 -17
  352. package/dist/seed/beys/chunk1.js +0 -35728
  353. package/dist/seed/beys/chunk2.d.ts +0 -17
  354. package/dist/seed/beys/chunk2.js +0 -35857
  355. package/dist/seed/beys/chunk3.d.ts +0 -17
  356. package/dist/seed/beys/chunk3.js +0 -34476
  357. package/dist/seed/beys-seed-data.d.ts +0 -18
  358. package/dist/seed/beys-seed-data.js +0 -11
  359. package/dist/seed/bids-seed-data.d.ts +0 -2
  360. package/dist/seed/bids-seed-data.js +0 -206
  361. package/dist/seed/blog-posts-seed-data.d.ts +0 -6
  362. package/dist/seed/blog-posts-seed-data.js +0 -442
  363. package/dist/seed/carousel-slides-seed-data.d.ts +0 -2
  364. package/dist/seed/carousel-slides-seed-data.js +0 -411
  365. package/dist/seed/carousels-seed-data.d.ts +0 -2
  366. package/dist/seed/carousels-seed-data.js +0 -36
  367. package/dist/seed/cart-seed-data.d.ts +0 -2
  368. package/dist/seed/cart-seed-data.js +0 -241
  369. package/dist/seed/catalogue-seed-data.d.ts +0 -2
  370. package/dist/seed/catalogue-seed-data.js +0 -112
  371. package/dist/seed/categories-seed-data.d.ts +0 -3
  372. package/dist/seed/categories-seed-data.js +0 -816
  373. package/dist/seed/claimed-coupons-seed-data.d.ts +0 -2
  374. package/dist/seed/claimed-coupons-seed-data.js +0 -85
  375. package/dist/seed/coupon-usage-seed-data.d.ts +0 -9
  376. package/dist/seed/coupon-usage-seed-data.js +0 -55
  377. package/dist/seed/coupons-seed-data.d.ts +0 -2
  378. package/dist/seed/coupons-seed-data.js +0 -226
  379. package/dist/seed/defaults/categories.d.ts +0 -2
  380. package/dist/seed/defaults/categories.js +0 -12
  381. package/dist/seed/defaults/faqs.d.ts +0 -2
  382. package/dist/seed/defaults/faqs.js +0 -40
  383. package/dist/seed/events-seed-data.d.ts +0 -7
  384. package/dist/seed/events-seed-data.js +0 -482
  385. package/dist/seed/factories/address.factory.d.ts +0 -21
  386. package/dist/seed/factories/address.factory.js +0 -44
  387. package/dist/seed/factories/bid.factory.d.ts +0 -15
  388. package/dist/seed/factories/bid.factory.js +0 -33
  389. package/dist/seed/factories/blog-post.factory.d.ts +0 -15
  390. package/dist/seed/factories/blog-post.factory.js +0 -22
  391. package/dist/seed/factories/carousel.factory.d.ts +0 -11
  392. package/dist/seed/factories/carousel.factory.js +0 -17
  393. package/dist/seed/factories/cart.factory.d.ts +0 -25
  394. package/dist/seed/factories/cart.factory.js +0 -35
  395. package/dist/seed/factories/category.factory.d.ts +0 -11
  396. package/dist/seed/factories/category.factory.js +0 -16
  397. package/dist/seed/factories/coupon.factory.d.ts +0 -21
  398. package/dist/seed/factories/coupon.factory.js +0 -43
  399. package/dist/seed/factories/faq.factory.d.ts +0 -10
  400. package/dist/seed/factories/faq.factory.js +0 -15
  401. package/dist/seed/factories/notification.factory.d.ts +0 -18
  402. package/dist/seed/factories/notification.factory.js +0 -39
  403. package/dist/seed/factories/order.factory.d.ts +0 -20
  404. package/dist/seed/factories/order.factory.js +0 -20
  405. package/dist/seed/factories/payout.factory.d.ts +0 -21
  406. package/dist/seed/factories/payout.factory.js +0 -38
  407. package/dist/seed/factories/product.factory.d.ts +0 -27
  408. package/dist/seed/factories/product.factory.js +0 -80
  409. package/dist/seed/factories/review.factory.d.ts +0 -14
  410. package/dist/seed/factories/review.factory.js +0 -52
  411. package/dist/seed/factories/session.factory.d.ts +0 -15
  412. package/dist/seed/factories/session.factory.js +0 -31
  413. package/dist/seed/factories/store.factory.d.ts +0 -23
  414. package/dist/seed/factories/store.factory.js +0 -47
  415. package/dist/seed/factories/user.factory.d.ts +0 -19
  416. package/dist/seed/factories/user.factory.js +0 -56
  417. package/dist/seed/faq-seed-data.d.ts +0 -18
  418. package/dist/seed/faq-seed-data.js +0 -1956
  419. package/dist/seed/firestore-indexes.d.ts +0 -12
  420. package/dist/seed/firestore-indexes.js +0 -31
  421. package/dist/seed/grouped-listings-seed-data.d.ts +0 -2
  422. package/dist/seed/grouped-listings-seed-data.js +0 -283
  423. package/dist/seed/history-seed-data.d.ts +0 -12
  424. package/dist/seed/history-seed-data.js +0 -70
  425. package/dist/seed/homepage-sections-seed-data.d.ts +0 -2
  426. package/dist/seed/homepage-sections-seed-data.js +0 -1034
  427. package/dist/seed/index.d.ts +0 -100
  428. package/dist/seed/index.js +0 -115
  429. package/dist/seed/lottery-entries-seed-data.d.ts +0 -2
  430. package/dist/seed/lottery-entries-seed-data.js +0 -108
  431. package/dist/seed/manifest.d.ts +0 -16
  432. package/dist/seed/manifest.js +0 -235
  433. package/dist/seed/media-assets-seed-data.d.ts +0 -22
  434. package/dist/seed/media-assets-seed-data.js +0 -5593
  435. package/dist/seed/model-composition-seed-data.d.ts +0 -15
  436. package/dist/seed/model-composition-seed-data.js +0 -9032
  437. package/dist/seed/notifications-seed-data.d.ts +0 -2
  438. package/dist/seed/notifications-seed-data.js +0 -606
  439. package/dist/seed/offers-seed-data.d.ts +0 -2
  440. package/dist/seed/offers-seed-data.js +0 -398
  441. package/dist/seed/orders-seed-data.d.ts +0 -2
  442. package/dist/seed/orders-seed-data.js +0 -845
  443. package/dist/seed/part-glossary/chunk0.d.ts +0 -9
  444. package/dist/seed/part-glossary/chunk0.js +0 -35448
  445. package/dist/seed/part-glossary/chunk1.d.ts +0 -9
  446. package/dist/seed/part-glossary/chunk1.js +0 -40494
  447. package/dist/seed/part-glossary/chunk2.d.ts +0 -9
  448. package/dist/seed/part-glossary/chunk2.js +0 -51242
  449. package/dist/seed/part-glossary/chunk3.d.ts +0 -9
  450. package/dist/seed/part-glossary/chunk3.js +0 -53337
  451. package/dist/seed/part-glossary/chunk4.d.ts +0 -9
  452. package/dist/seed/part-glossary/chunk4.js +0 -51454
  453. package/dist/seed/part-glossary-seed-data.d.ts +0 -15
  454. package/dist/seed/part-glossary-seed-data.js +0 -25
  455. package/dist/seed/payouts-seed-data.d.ts +0 -2
  456. package/dist/seed/payouts-seed-data.js +0 -302
  457. package/dist/seed/product-features-seed-data.d.ts +0 -3
  458. package/dist/seed/product-features-seed-data.js +0 -366
  459. package/dist/seed/products-art-seed-data.d.ts +0 -2
  460. package/dist/seed/products-art-seed-data.js +0 -289
  461. package/dist/seed/products-auctions-seed-data.d.ts +0 -2
  462. package/dist/seed/products-auctions-seed-data.js +0 -475
  463. package/dist/seed/products-beyblade-x-seed-data.d.ts +0 -2
  464. package/dist/seed/products-beyblade-x-seed-data.js +0 -476
  465. package/dist/seed/products-catalogue/chunk0.d.ts +0 -12
  466. package/dist/seed/products-catalogue/chunk0.js +0 -7262
  467. package/dist/seed/products-catalogue/chunk1.d.ts +0 -12
  468. package/dist/seed/products-catalogue/chunk1.js +0 -7290
  469. package/dist/seed/products-catalogue/chunk10.d.ts +0 -12
  470. package/dist/seed/products-catalogue/chunk10.js +0 -7290
  471. package/dist/seed/products-catalogue/chunk11.d.ts +0 -12
  472. package/dist/seed/products-catalogue/chunk11.js +0 -7005
  473. package/dist/seed/products-catalogue/chunk12.d.ts +0 -12
  474. package/dist/seed/products-catalogue/chunk12.js +0 -7002
  475. package/dist/seed/products-catalogue/chunk13.d.ts +0 -12
  476. package/dist/seed/products-catalogue/chunk13.js +0 -7002
  477. package/dist/seed/products-catalogue/chunk14.d.ts +0 -12
  478. package/dist/seed/products-catalogue/chunk14.js +0 -7002
  479. package/dist/seed/products-catalogue/chunk15.d.ts +0 -12
  480. package/dist/seed/products-catalogue/chunk15.js +0 -7002
  481. package/dist/seed/products-catalogue/chunk16.d.ts +0 -12
  482. package/dist/seed/products-catalogue/chunk16.js +0 -7002
  483. package/dist/seed/products-catalogue/chunk17.d.ts +0 -12
  484. package/dist/seed/products-catalogue/chunk17.js +0 -7002
  485. package/dist/seed/products-catalogue/chunk18.d.ts +0 -12
  486. package/dist/seed/products-catalogue/chunk18.js +0 -4398
  487. package/dist/seed/products-catalogue/chunk2.d.ts +0 -12
  488. package/dist/seed/products-catalogue/chunk2.js +0 -7268
  489. package/dist/seed/products-catalogue/chunk3.d.ts +0 -12
  490. package/dist/seed/products-catalogue/chunk3.js +0 -7264
  491. package/dist/seed/products-catalogue/chunk4.d.ts +0 -12
  492. package/dist/seed/products-catalogue/chunk4.js +0 -7268
  493. package/dist/seed/products-catalogue/chunk5.d.ts +0 -12
  494. package/dist/seed/products-catalogue/chunk5.js +0 -7258
  495. package/dist/seed/products-catalogue/chunk6.d.ts +0 -12
  496. package/dist/seed/products-catalogue/chunk6.js +0 -7268
  497. package/dist/seed/products-catalogue/chunk7.d.ts +0 -12
  498. package/dist/seed/products-catalogue/chunk7.js +0 -7311
  499. package/dist/seed/products-catalogue/chunk8.d.ts +0 -12
  500. package/dist/seed/products-catalogue/chunk8.js +0 -7304
  501. package/dist/seed/products-catalogue/chunk9.d.ts +0 -12
  502. package/dist/seed/products-catalogue/chunk9.js +0 -7309
  503. package/dist/seed/products-catalogue-seed-data.d.ts +0 -2
  504. package/dist/seed/products-catalogue-seed-data.js +0 -60
  505. package/dist/seed/products-classifieds-seed-data.d.ts +0 -7
  506. package/dist/seed/products-classifieds-seed-data.js +0 -435
  507. package/dist/seed/products-digital-codes-seed-data.d.ts +0 -7
  508. package/dist/seed/products-digital-codes-seed-data.js +0 -395
  509. package/dist/seed/products-live-items-seed-data.d.ts +0 -7
  510. package/dist/seed/products-live-items-seed-data.js +0 -269
  511. package/dist/seed/products-preorders-seed-data.d.ts +0 -2
  512. package/dist/seed/products-preorders-seed-data.js +0 -360
  513. package/dist/seed/products-prize-draws-seed-data.d.ts +0 -7
  514. package/dist/seed/products-prize-draws-seed-data.js +0 -427
  515. package/dist/seed/products-spares-seed-data.d.ts +0 -2
  516. package/dist/seed/products-spares-seed-data.js +0 -368
  517. package/dist/seed/products-standard-seed-data.d.ts +0 -2
  518. package/dist/seed/products-standard-seed-data.js +0 -632
  519. package/dist/seed/products-stickers-seed-data.d.ts +0 -2
  520. package/dist/seed/products-stickers-seed-data.js +0 -319
  521. package/dist/seed/reviews-seed-data.d.ts +0 -1
  522. package/dist/seed/reviews-seed-data.js +0 -185
  523. package/dist/seed/runner.d.ts +0 -2
  524. package/dist/seed/runner.js +0 -125
  525. package/dist/seed/scammers-seed-data.d.ts +0 -2
  526. package/dist/seed/scammers-seed-data.js +0 -235
  527. package/dist/seed/seed-market-config.d.ts +0 -48
  528. package/dist/seed/seed-market-config.js +0 -199
  529. package/dist/seed/seed-purpose.d.ts +0 -299
  530. package/dist/seed/seed-purpose.js +0 -440
  531. package/dist/seed/sessions-seed-data.d.ts +0 -3
  532. package/dist/seed/sessions-seed-data.js +0 -116
  533. package/dist/seed/shipments-seed-data.d.ts +0 -5
  534. package/dist/seed/shipments-seed-data.js +0 -185
  535. package/dist/seed/site-settings-seed-data.d.ts +0 -2
  536. package/dist/seed/site-settings-seed-data.js +0 -1069
  537. package/dist/seed/store-addresses-seed-data.d.ts +0 -18
  538. package/dist/seed/store-addresses-seed-data.js +0 -71
  539. package/dist/seed/store-extensions-seed-data.d.ts +0 -11
  540. package/dist/seed/store-extensions-seed-data.js +0 -292
  541. package/dist/seed/stores-seed-data.d.ts +0 -6
  542. package/dist/seed/stores-seed-data.js +0 -242
  543. package/dist/seed/support-tickets-seed-data.d.ts +0 -16
  544. package/dist/seed/support-tickets-seed-data.js +0 -239
  545. package/dist/seed/tax-codes-seed-data.d.ts +0 -34
  546. package/dist/seed/tax-codes-seed-data.js +0 -100
  547. package/dist/seed/test-data-ttl.d.ts +0 -29
  548. package/dist/seed/test-data-ttl.js +0 -31
  549. package/dist/seed/test-utils.d.ts +0 -49
  550. package/dist/seed/test-utils.js +0 -110
  551. package/dist/seed/types.d.ts +0 -89
  552. package/dist/seed/types.js +0 -15
  553. package/dist/seed/users-seed-data.d.ts +0 -2
  554. package/dist/seed/users-seed-data.js +0 -597
  555. package/dist/seed/wishlists-seed-data.d.ts +0 -12
  556. package/dist/seed/wishlists-seed-data.js +0 -54
@@ -1,318 +0,0 @@
1
- /*
2
- * WHY: Authored six-part procedures for the admin/catalog-listings page.
3
- * WHAT: 17 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 ADMIN TYPE CHIPS ONCE USED DISPLAY LABELS AS FILTER VALUES, translated
10
- * through an indirection map that hid two entirely missing types. A filter value
11
- * is compared byte-exactly, so a chip reading "Pre-orders" against a stored
12
- * "pre-order" matches nothing forever with no error. Four cases here read the
13
- * chips against the real union rather than trusting the labels.
14
- *
15
- * Categories are the other theme: a product carries its FULL ancestor chain so a
16
- * parent page can match on its own id alone. That chain IS derived on write, by
17
- * `ProductRepository.deriveTaxonomy()`, from create and update alike — this header
18
- * said the opposite until 2026-09-29 and told the tester a one-element chain was
19
- * expected. A form cannot supply the chain itself (the create schema strips it), so
20
- * if the derivation stops running there is no fallback and the product silently
21
- * reaches only its leaf page.
22
- *
23
- * @tag domain:tester
24
- * @tag layer:seed
25
- * @tag pattern:none
26
- * @tag access:server-only
27
- * @tag consumers:seed-data/authored/index.ts
28
- * @tag sideEffects:none
29
- */
30
- export const authored = {
31
- "checklist-admin-catalog-listings-brands-crud": {
32
- roles: ["admin", "guest"],
33
- startPage: "/admin/brands",
34
- steps: [
35
- "Sign in as admin@letitrip.in / TempPass123!.",
36
- "Open /admin/brands and create one named 'QA Brand admin-crud' with a website, a country and a founding year.",
37
- "Upload public/test-media/sample-image.png to the field labelled for the hero or cover image.",
38
- "Save, RELOAD, and read every field.",
39
- "Open /brands/{slug} in a private window and read the hero banner and the 'About this brand' panel.",
40
- "Check the uploaded image is what renders as the hero.",
41
- "Rename the brand, save, reload, and check its URL slug is unchanged.",
42
- "Delete the brand and confirm it disappears from /brands.",
43
- ],
44
- inputs: { name: "QA Brand admin-crud", image: "public/test-media/sample-image.png" },
45
- expectedBehaviour: "Brands are category rows discriminated by type, not a separate collection. The image field that actually drives the public hero is the COVER image — a form once offered a 'Logo' input that fed the hero and a 'Banner' input that fed a field with no readers anywhere, so every uploaded banner was silently discarded. Website, country and founding year must render publicly rather than being accepted and never shown.",
46
- expectedUiState: "After the reload every field holds. The public page's hero is the uploaded image, and the 'About this brand' panel shows the website, country and year. The slug is unchanged after the rename.",
47
- endResult: "The brand is deleted. Record any field the form accepts that never appears publicly — that is a field with no reader.",
48
- },
49
- "checklist-admin-catalog-listings-categories-crud": {
50
- roles: ["admin", "guest"],
51
- startPage: "/admin/categories",
52
- steps: [
53
- "Sign in as admin@letitrip.in / TempPass123!.",
54
- "Open /admin/categories and read the tree, noting the six roots and how depth is shown.",
55
- "Create a child category named 'QA Category admin-crud' under category-beyblade-burst.",
56
- "Save, RELOAD, and read its parent, its tier and its position in the tree.",
57
- "Open /categories in a private window and find it beneath its parent.",
58
- "Rename it, save, reload, and check its slug is unchanged.",
59
- "Delete it and confirm it disappears from the tree and from /categories.",
60
- ],
61
- inputs: { name: "QA Category admin-crud", parent: "category-beyblade-burst" },
62
- expectedBehaviour: "Creating a child places it in the tree with its full ancestor chain derived rather than hand-written — the chain, tier, path and position are all computed, and hand-writing any of them is how a tree goes inconsistent. The slug is immutable after creation, as everywhere else.",
63
- expectedUiState: "After the reload the category sits under Beyblade Burst at the right depth, and it appears there publicly. Its slug survives the rename. After the delete it is gone from both surfaces.",
64
- endResult: "The category is deleted by the final step.",
65
- },
66
- "checklist-admin-catalog-listings-products-crud": {
67
- roles: ["admin", "guest"],
68
- startPage: "/admin/products",
69
- steps: [
70
- "Sign in as admin@letitrip.in / TempPass123!.",
71
- "Open /admin/products and create a product titled 'QA Product admin-crud' at 600 with stock 3, an image, the brand Beyblade, and the category Burst Parts — which sits two levels below the root.",
72
- "Save, RELOAD, and read every field.",
73
- "Open its public page and read the title, price, stock badge, category links and brand link.",
74
- "Count the category links shown and read their names.",
75
- "Edit ONLY the price to 700, save, RELOAD, and compare every other field.",
76
- "Delete the product and confirm the public page no longer resolves.",
77
- ],
78
- inputs: {
79
- title: "QA Product admin-crud",
80
- priceBefore: 600,
81
- priceAfter: 700,
82
- stock: 3,
83
- categoryId: "category-burst-parts",
84
- brand: "Beyblade",
85
- },
86
- expectedBehaviour: "An admin create and edit round-trip, and an edit writes back only what changed. The category links are the second assertion: the repository derives the full ancestor chain on write, so a product filed under Burst Parts carries Beyblade Burst and Spinning Tops with it. The brand link is the same shape — products are matched to a brand by DISPLAY NAME while the picker's value is the brand row's id, so that too is resolved on write rather than stored as picked.",
87
- expectedUiState: "After each reload the values hold and only the price differs after the edit. THREE category links: Burst Parts, Beyblade Burst, Spinning Tops. The brand link resolves to a page that lists this product rather than an empty one. One category link, or a brand page that does not list it, are both write-path failures and both look entirely normal on the product's own page. After the delete the public URL no longer resolves.",
88
- expectedData: { unintendedFieldChanges: 0, categoryLinksShown: 3 },
89
- endResult: "The product is deleted. Report the category link count either way.",
90
- },
91
- "checklist-admin-catalog-listings-products-default-listing-not-empty": {
92
- roles: ["admin"],
93
- startPage: "/admin/products",
94
- steps: [
95
- "Sign in as admin@letitrip.in / TempPass123!.",
96
- "Open /admin/products with NO query parameters at all.",
97
- "Read the result count and the rows.",
98
- "Read which availability scope and which status filter are applied by default.",
99
- "Switch to the All scope and compare the count.",
100
- "Clear every filter and compare again.",
101
- ],
102
- expectedBehaviour: "The admin listing opens showing rows. This page shares one query implementation with the public browse path, reached through a sentinel that lets any status through — so an admin listing that opens empty usually means a filter default meant for the public path is being applied here, where an admin needs to see drafts and archived rows too.",
103
- expectedUiState: "The default view holds rows rather than an empty state. The All scope returns at least as many. An empty default listing with rows appearing only after clearing filters is the failure.",
104
- endResult: "Read-only; nothing persists beyond the URL.",
105
- },
106
- "checklist-admin-catalog-listings-categories-toggle-filters": {
107
- roles: ["admin"],
108
- startPage: "/admin/categories",
109
- steps: [
110
- "Sign in as admin@letitrip.in / TempPass123!.",
111
- "Open /admin/categories and note the total row count.",
112
- "Read every toggle and filter offered above the list.",
113
- "Use each in turn and read the resulting count and rows.",
114
- "Write down any toggle that leaves the count unchanged.",
115
- "Clear everything and confirm the original count returns.",
116
- ],
117
- expectedBehaviour: "Every toggle changes the list. A toggle that renders, counts toward the filter badge and matches nothing is inert — that happens when it reads a field the document does not have, and nothing raises. Category rows carry a type discriminator, so filters separating categories from brands, bundles and sublistings are the ones most likely to be reading the wrong field.",
118
- expectedUiState: "Each toggle visibly changes the rows. A toggle leaving the count identical while incrementing the filter badge is the failure, named specifically.",
119
- expectedData: { inertToggles: 0 },
120
- endResult: "Read-only; nothing persists beyond the URL.",
121
- },
122
- "checklist-admin-catalog-listings-admin-products-type-chips-all-types": {
123
- roles: ["admin"],
124
- startPage: "/admin/products",
125
- steps: [
126
- "Sign in as admin@letitrip.in / TempPass123!.",
127
- "Open /admin/products and read every listing-type chip offered.",
128
- "Write the list down and compare it against the nine types the catalogue supports.",
129
- "Select each chip in turn and read the result count and the rows.",
130
- "Write down any chip returning zero rows, and any returning the full unfiltered list.",
131
- "Check whether a chip for `bundle` is offered.",
132
- ],
133
- expectedBehaviour: "Nine chips, each filtering to its own type. The chips once used display LABELS as filter values through an indirection map that hid two missing types entirely — and a filter value is compared byte-exactly, so a chip reading 'Pre-orders' against a stored 'pre-order' matches nothing forever. A chip for `bundle` must NOT exist: it stopped being a listing type and would match zero rows permanently.",
134
- expectedUiState: "Nine chips are offered and each returns only its own type. No `bundle` chip. A chip returning zero while that type demonstrably exists is the byte-exactness failure; one returning everything is the dropped-filter failure.",
135
- expectedData: { typeChipCount: 9 },
136
- endResult: "Read-only; nothing persists beyond the URL.",
137
- },
138
- "checklist-admin-catalog-listings-admin-products-type-chips-multi-select": {
139
- roles: ["admin"],
140
- startPage: "/admin/products",
141
- steps: [
142
- "Sign in as admin@letitrip.in / TempPass123!.",
143
- "Open /admin/products and tick the Auctions chip, reading the count.",
144
- "Tick Pre-orders as well and read the count.",
145
- "Check the count is the sum of the two rather than either alone.",
146
- "Read the URL and check it encodes both types.",
147
- "Open the sort dropdown and read which options are offered with two types selected.",
148
- "Untick both and confirm the unfiltered count returns.",
149
- ],
150
- expectedBehaviour: "Multiple type chips form an OR, so selecting two returns both sets. The alias layer has to split a joined value before looking each part up — testing the whole joined string as one token returns an empty value that is then dropped, so the filter vanishes and the page shows everything. The sort dropdown narrows to options valid for every selected type, since a sort valid for one alone would fail the others.",
151
- expectedUiState: "Two chips ticked returns the sum of their individual counts, and the URL carries both. The sort dropdown offers only sorts common to both. A combined selection returning the FULL unfiltered list is the dropped-filter failure.",
152
- endResult: "Read-only; nothing persists beyond the URL.",
153
- },
154
- "checklist-admin-catalog-listings-admin-products-featured-promoted-sorts": {
155
- roles: ["admin"],
156
- startPage: "/admin/products",
157
- steps: [
158
- "Sign in as admin@letitrip.in / TempPass123!.",
159
- "Open /admin/products and read the sort dropdown's options.",
160
- "Select 'Featured first' and read the row order.",
161
- "Select 'Promoted first' and read the row order.",
162
- "Compare both against the default order.",
163
- "Reload with one applied and read the order on first paint.",
164
- ],
165
- expectedBehaviour: "Both sorts reorder the rows. A sort whose field is not marked sortable is dropped before the query runs, so the dropdown changes and nothing moves — these two shipped exactly that way and went unreported, because a sort that does nothing looks like a list already in that order.",
166
- expectedUiState: "Featured rows rise under the first and promoted under the second, and both differ from the default. After a reload the chosen order holds on first paint rather than re-sorting a moment later.",
167
- expectedData: { inertSortOptions: 0 },
168
- endResult: "Read-only; nothing persists beyond the URL.",
169
- },
170
- "checklist-admin-catalog-listings-admin-per-type-pages-have-filters": {
171
- roles: ["admin"],
172
- startPage: "/admin/products",
173
- steps: [
174
- "Sign in as admin@letitrip.in / TempPass123!.",
175
- "Open each per-type admin listing in turn, BY URL — there are exactly six and only /admin/classified is linked from the sidebar: /admin/prize-draws, /admin/classified, /admin/digital-codes, /admin/live, /admin/art, /admin/stickers.",
176
- "On each, read the filters offered and note whether any are specific to that type.",
177
- "Use each type-specific filter and confirm it changes the rows.",
178
- "Write down any page offering no filters at all.",
179
- "Write down any filter that changes nothing.",
180
- "Now confirm auctions and pre-orders have NO page of their own: /admin/auctions and /admin/pre-orders should not resolve, and both types must instead be reachable as chips on /admin/products.",
181
- ],
182
- expectedBehaviour: "Each type's page offers the facets that type actually has — a classified's city, a live item's species — on top of the shared ones. A facet that renders and matches nothing is inert, which happens when it emits a field the query allowlist does not carry, and nothing raises. Auctions and pre-orders deliberately have no dedicated admin page; the chips on /admin/products are their only admin surface, and that is why those chips must cover all nine types.",
183
- expectedUiState: "All six per-type pages resolve and offer filters including their own, each visibly changing the rows. /admin/auctions and /admin/pre-orders do not resolve, and both types filter correctly from the chips instead — a 404 there is the expected result, not a finding. A page with no filters, or a filter leaving the count identical while incrementing the badge, are findings named by page.",
184
- endResult: "Read-only; nothing persists beyond the URL.",
185
- },
186
- "checklist-admin-catalog-listings-admin-listing-reset-restores-defaults": {
187
- roles: ["admin"],
188
- startPage: "/admin/products",
189
- steps: [
190
- "Sign in as admin@letitrip.in / TempPass123!.",
191
- "Open /admin/products and note the default count, scope and sort.",
192
- "Apply a search term, two type chips, a status filter and a different sort.",
193
- "Read the URL and the count.",
194
- "Use the reset control.",
195
- "Read the URL, the count, the scope, the sort and every filter control.",
196
- "Reload and read them again.",
197
- ],
198
- expectedBehaviour: "Reset returns every control AND the URL to the defaults, not just the visible chips. A reset that clears the drawer while leaving the search term or the sort in the URL produces a list the controls no longer describe.",
199
- expectedUiState: "After reset the count, scope and sort match the untouched defaults and the URL carries no leftover parameters. The search box is empty. Reloading reproduces the default view.",
200
- endResult: "Read-only; nothing persists beyond the URL.",
201
- },
202
- "checklist-admin-catalog-listings-admin-address-payment-status-chips-in-url": {
203
- roles: ["admin"],
204
- startPage: "/admin/addresses",
205
- steps: [
206
- "Sign in as admin@letitrip.in / TempPass123!.",
207
- "Open /admin/addresses and select a status chip.",
208
- "Read the URL and check it encodes the selection.",
209
- "Copy the URL, open it in a new tab, and read which chip is active on arrival.",
210
- "Press the browser back button and read which chip is active.",
211
- "Repeat all of this on /admin/payment-methods, which has the same chip row.",
212
- ],
213
- expectedBehaviour: "Chip state lives in the URL on both listings, so a filtered view is shareable and the back button walks the selections. A chip held in component state alone makes the URL describe a different page from the one on screen.",
214
- expectedUiState: "Both listings encode the chip in the URL, the copied URL arrives with the same chip active, and back returns to the previous selection. One press per selection — two presses to undo one chip is the double-navigation failure.",
215
- endResult: "Read-only; nothing persists beyond the URL.",
216
- },
217
- "checklist-admin-catalog-listings-admin-listing-sort-dropdown-preselected": {
218
- roles: ["admin"],
219
- startPage: "/admin/products",
220
- steps: [
221
- "Sign in as admin@letitrip.in / TempPass123!.",
222
- "Open /admin/products with no query parameters and read the sort dropdown's selection.",
223
- "Check something is selected rather than the control being blank.",
224
- "Confirm the selected option is one of the options the dropdown offers.",
225
- "Repeat on /admin/orders, /admin/addresses and /admin/payment-methods.",
226
- "Write down any listing whose dropdown opens with nothing selected.",
227
- ],
228
- expectedBehaviour: "A listing's default sort is one of the options it offers. Where the default names a field the dropdown does not list, the control opens blank — the list IS sorted, but nothing on screen says how, and two of these listings shipped exactly that way.",
229
- expectedUiState: "Every listing opens with a sort visibly selected and that selection is among its own options. A blank dropdown is the failure, named by listing.",
230
- endResult: "Read-only; nothing persists.",
231
- },
232
- "checklist-admin-catalog-listings-sublisting-categories-crud": {
233
- roles: ["admin", "guest"],
234
- startPage: "/admin/sublisting-categories",
235
- steps: [
236
- "Sign in as admin@letitrip.in / TempPass123!.",
237
- "Open /admin/sublisting-categories and read the existing rows.",
238
- "Create one named 'QA Sublisting admin-crud' with a description and save.",
239
- "RELOAD and read every field.",
240
- "Rename it, save, RELOAD, and read the derived page title and description.",
241
- "Check they reflect the NEW name rather than the original.",
242
- "Delete it and confirm it is gone.",
243
- ],
244
- inputs: { name: "QA Sublisting admin-crud" },
245
- expectedBehaviour: "Derived page metadata is recomputed on rename. Deriving it only at creation freezes the title and description at the original name, so the page keeps describing itself as something it is no longer called — a create-time transform the update path does not repeat.",
246
- expectedUiState: "After the rename and reload both the name and the derived title and description reflect the new name. Metadata still naming the original is the failure.",
247
- endResult: "The sublisting category is deleted by the final step.",
248
- },
249
- "checklist-admin-catalog-listings-carousel-crud": {
250
- roles: ["admin", "guest"],
251
- startPage: "/admin/carousels",
252
- steps: [
253
- "Sign in as admin@letitrip.in / TempPass123!.",
254
- "Open /admin/carousels and read what the page lists.",
255
- "Check it lists NAMED carousels rather than rendering a flat slide editor.",
256
- "Create a carousel named 'QA Carousel admin-crud' and add a slide with a title, an image and a link.",
257
- "Save, RELOAD, and read the carousel's name, status and its slide.",
258
- "Set it active and open / in a private window to find it.",
259
- "Add slides to it until a sixth ACTIVE slide is refused. The cap of five is on active SLIDES, not on carousels, and the seed already ships five active ones — so the refusal may arrive on the very first slide you activate.",
260
- "Delete the carousel.",
261
- ],
262
- inputs: { name: "QA Carousel admin-crud", maxActive: 5 },
263
- expectedBehaviour: "The list page lists named carousels — it once rendered the flat slide editor instead, so there was no list at all. At most five SLIDES may be active at once — refused at write with a 409 naming the limit, not silently truncated, and there is deliberately no cap on the number of named carousels. A slide's background may be an image, a video, a colour or a gradient; a video background renders through a real video element, so its URL must be directly playable rather than routed through the image proxy, which rejects video outright.",
264
- expectedUiState: "The page lists named carousels. After the reload the carousel holds its name, status and slide. Activating it shows it publicly. A sixth active SLIDE is refused with a readable message rather than silently accepted or silently dropped from the public carousel. Refusing to create a sixth CAROUSEL would be the opposite failure — there is no such cap.",
265
- endResult: "The carousel is deleted by the final step.",
266
- },
267
- "checklist-admin-catalog-listings-sections-crud": {
268
- roles: ["admin", "guest"],
269
- startPage: "/admin/sections",
270
- steps: [
271
- "Sign in as admin@letitrip.in / TempPass123!.",
272
- "Open /admin/sections and read every section, its type and its order. It is the homepage sections editor; /admin is only a redirect to the dashboard.",
273
- "Create a section, choosing a type, and configure every field it offers.",
274
- "Save, RELOAD, and read every field back.",
275
- "Open / in a private window and find the new section in the right position.",
276
- "Change ONE field, save, RELOAD, and check every other field is unchanged.",
277
- "Delete the section and confirm it disappears from the public homepage.",
278
- ],
279
- expectedBehaviour: "A section round-trips every field its type offers, and the public homepage reflects its configuration and position. Saving one field must not rewrite the others — a form submitting its whole object from partly-populated state blanks every field it did not load, and the save reports success.",
280
- expectedUiState: "After each reload every field holds and only the edited one differs. The public homepage shows the section in its configured position and with its configured content. After the delete it is gone publicly.",
281
- expectedData: { unintendedFieldChanges: 0 },
282
- endResult: "The section is deleted by the final step.",
283
- },
284
- "checklist-admin-catalog-listings-art-stickers-crud": {
285
- roles: ["admin", "guest"],
286
- startPage: "/admin/products",
287
- steps: [
288
- "Sign in as admin@letitrip.in / TempPass123!.",
289
- "Create an art listing titled 'QA Art Print admin-crud' at 700 with a size, material, finish and edition size.",
290
- "Save, RELOAD, and read all four print fields.",
291
- "Open /admin/art and check the listing appears there.",
292
- "Read every other row in that filtered view and check none is an ordinary product.",
293
- "Open /art publicly and check the listing appears there too. Art and stickers share that one browse route — there is no /stickers page.",
294
- "Delete the listing.",
295
- ],
296
- inputs: { title: "QA Art Print admin-crud", price: 700 },
297
- expectedBehaviour: "Art and stickers are real listing types with their own fields and their own filter value. They were added to the type union and the plugin registry without being added to the repository's alias map, so their queries ran with NO type filter — the filtered view rendered and returned the whole catalogue, which looks like a working page.",
298
- expectedUiState: "The print fields round-trip. The art-filtered admin view holds only art listings — an ordinary Beyblade product among them is the dropped-filter failure. The public art tab shows it too.",
299
- expectedData: { ordinaryProductsInFilteredView: 0 },
300
- endResult: "The listing is deleted by the final step.",
301
- },
302
- "checklist-admin-catalog-listings-deals-featured-crud": {
303
- roles: ["admin", "guest"],
304
- startPage: "/admin/products",
305
- steps: [
306
- "Sign in as admin@letitrip.in / TempPass123!.",
307
- "Open /admin/products and open a product's editor.",
308
- "Set its featured flag on and save.",
309
- "RELOAD and confirm the flag is still on.",
310
- "Open / in a private window and find the product in a featured section.",
311
- "Set the promoted flag on, save, reload, and open /admin/featured and /admin/deals — both are real listings of flagged products and the product must appear in the matching one.",
312
- "Turn both flags back off, save, and confirm the product leaves the homepage section AND leaves /admin/featured and /admin/deals.",
313
- ],
314
- expectedBehaviour: "Featured, promoted and on-sale flags reach the public surfaces they drive, in both directions. Turning a flag off must remove the product from its section — a flag that only ever adds is half a flag, and the homepage sections that read them filter by availability too, so a sold-out featured product should not appear.",
315
- expectedUiState: "Each flag survives its reload and its public surface follows it on and off. The product appears in the featured section when flagged and leaves when unflagged.",
316
- endResult: "Both flags are off by the final step, so the seeded product is left as it was.",
317
- },
318
- };
@@ -1,2 +0,0 @@
1
- import type { AuthoredCase } from "./_types";
2
- export declare const authored: Record<string, AuthoredCase>;
@@ -1,177 +0,0 @@
1
- /*
2
- * WHY: Authored six-part procedures for the admin/category-brand-authoring page.
3
- * WHAT: 8 case(s), keyed by full checklist id.
4
- *
5
- * The WRITE side of the tree. Its read side is content-discovery/category-brand-relations;
6
- * these are the operations that can corrupt what that page then renders.
7
- *
8
- * 🛑 THE ANCESTOR-CHAIN CASE WAS INVERTED AND IS NOW CORRECTED. This header used to
9
- * say "nothing on the write path derives a product's ancestor chain", and the case
10
- * encoded that as `categoryPagesListingIt: 1` — so once the gap was actually closed,
11
- * the case DEMANDED the bug: correct behaviour scored a fail and a tester following
12
- * it would have filed the fix as a regression.
13
- *
14
- * `ProductRepository.deriveTaxonomy()` has derived the chain from both `create` and
15
- * `update` since 2026-09-14. It reads the leaf's `parentIds`, reverses them onto the
16
- * front, and writes `categorySlugs = [leaf, ...ancestors]` — byte-identical to what
17
- * the seed hand-writes. The expected answer is now ALL THREE pages.
18
- *
19
- * It stays a valuable case for a reason worth keeping: every SEEDED product already
20
- * carries a correct chain, so a regression here is invisible to any check that reads
21
- * existing data. Only a product created through a form can catch it.
22
- *
23
- * @tag domain:tester
24
- * @tag layer:seed
25
- * @tag pattern:none
26
- * @tag access:server-only
27
- * @tag consumers:seed-data/authored/index.ts
28
- * @tag sideEffects:none
29
- */
30
- export const authored = {
31
- "checklist-admin-category-brand-authoring-create-child-under-parent": {
32
- roles: ["admin"],
33
- startPage: "/admin/categories",
34
- steps: [
35
- "Sign in as admin@letitrip.in / TempPass123!.",
36
- "Open /admin/categories and create a category named 'QA Child Burst Layers'.",
37
- "Pick Burst Parts as its parent.",
38
- "Save it.",
39
- "Open /categories/category-burst-parts on the public site and read its children.",
40
- "Click down into the new category and read the path shown.",
41
- "Delete the category afterwards.",
42
- ],
43
- inputs: { name: "QA Child Burst Layers", parentId: "category-burst-parts" },
44
- expectedBehaviour: "Picking a parent files the category at that parent's depth plus one and makes it appear beneath it publicly. Depth and lineage are computed from the parent — there is nothing else for the author to get right.",
45
- expectedUiState: "The new category is listed as a child of Burst Parts on the public tree and its breadcrumb reads Spinning Tops, Beyblade Burst, Burst Parts, then itself.",
46
- endResult: "The QA category is deleted.",
47
- },
48
- "checklist-admin-category-brand-authoring-structural-fields-derived-not-typed": {
49
- roles: ["admin"],
50
- startPage: "/admin/categories",
51
- steps: [
52
- "Sign in as admin@letitrip.in / TempPass123!.",
53
- "Open /admin/categories and start creating a category.",
54
- "Read every field the form offers.",
55
- "Check there is no input for tier, path, ancestors, children, position or subtree size.",
56
- "Check the only structural input is the parent picker.",
57
- "Open an existing deep category for edit and read the same.",
58
- ],
59
- expectedBehaviour: "Every structural field is derived from the parent. Exposing one lets an author write a tier that disagrees with the parent they picked, and the tree is then internally inconsistent in a way no page reports — a category can appear at one depth in the breadcrumb and a different one in the listing.",
60
- expectedUiState: "The create and edit forms both offer a parent picker and no structural field. Any such input is the finding, named.",
61
- endResult: "Nothing is saved.",
62
- },
63
- "checklist-admin-category-brand-authoring-reparent-moves-whole-subtree": {
64
- roles: ["admin"],
65
- startPage: "/admin/categories",
66
- steps: [
67
- "Sign in as admin@letitrip.in / TempPass123!.",
68
- "Note that Burst Parts sits under Beyblade Burst and note its own children.",
69
- "Edit Burst Parts and change its parent to Beyblade X.",
70
- "Save and open /categories/category-beyblade-x publicly.",
71
- "Check Burst Parts is listed there and click into it.",
72
- "Check its children are still present and still reachable.",
73
- "Restore its parent to Beyblade Burst.",
74
- ],
75
- inputs: { categoryId: "category-burst-parts", newParentId: "category-beyblade-x" },
76
- expectedBehaviour: "Re-parenting carries the whole subtree. A move that updates only the moved row leaves its descendants pointing at a lineage that no longer describes them — they are still in the collection and reachable by direct URL, and absent from every page that walks the tree.",
77
- expectedUiState: "Burst Parts appears under Beyblade X with all its children intact and clickable. A child that 404s or vanishes from the tree is the finding.",
78
- endResult: "The original parent is restored.",
79
- },
80
- "checklist-admin-category-brand-authoring-product-created-with-deep-category-visible-at-root": {
81
- roles: ["admin"],
82
- startPage: "/admin/products",
83
- steps: [
84
- "Sign in as admin@letitrip.in / TempPass123!.",
85
- "Create a product named 'QA Ancestor Chain Probe' priced at 499 and file it under Burst Parts.",
86
- "Publish it.",
87
- "Open /categories/category-burst-parts publicly and check the product is listed.",
88
- "Open /categories/category-beyblade-burst and search for it.",
89
- "Open /categories/category-spinning-tops and search for it.",
90
- "Record on which of the three pages it appears — Burst Parts sits two levels below the root, so all three are expected.",
91
- "Delete the product afterwards.",
92
- ],
93
- inputs: { title: "QA Ancestor Chain Probe", price: 499, categoryId: "category-burst-parts" },
94
- expectedBehaviour: "A category page matches on its own id alone, which works only if the product carries its full ancestor chain — and the repository derives that chain on write, from create and update alike. A form cannot supply it: the create schema strips any categorySlugs it is sent, so if the derivation stops running there is no fallback and the product silently reaches its leaf page only.",
95
- expectedUiState: "All THREE pages list it: Burst Parts, Beyblade Burst and Spinning Tops. Visible only on Burst Parts is the failure — and it is a silent one, because the product's own page looks entirely normal and every seeded product around it still shows a correct chain.",
96
- expectedData: { categoryPagesListingIt: 3 },
97
- endResult: "The QA product is deleted.",
98
- },
99
- "checklist-admin-category-brand-authoring-brand-rename-orphan-check": {
100
- roles: ["admin"],
101
- startPage: "/admin/brands",
102
- steps: [
103
- "Sign in as admin@letitrip.in / TempPass123!.",
104
- "Open /brands/brand-takara-tomy publicly and count the products listed.",
105
- "Open /admin/brands, edit Takara-Tomy, and change its name to 'Takara Tomy QA'.",
106
- "Save it.",
107
- "Reload /brands/brand-takara-tomy and count the products again.",
108
- "Read whether any warning was shown at save time about products that would be affected.",
109
- "Restore the name to 'Takara-Tomy' and reload once more.",
110
- ],
111
- inputs: { brandId: "brand-takara-tomy", renamedTo: "Takara Tomy QA" },
112
- expectedBehaviour: "Products are matched to a brand by its display name, so a rename either carries the products with it or warns that it will not. Neither happening is the failure this case is for: the page renders its hero and its editorial panels perfectly over an empty grid, and nothing anywhere connects that to the rename.",
113
- expectedUiState: "After the rename the brand page lists the same products, or the save warned first. An empty grid with no warning is the finding, with the before and after counts.",
114
- endResult: "The brand name is restored and the products are listed again.",
115
- },
116
- "checklist-admin-category-brand-authoring-brand-cover-image-is-the-hero": {
117
- roles: ["admin"],
118
- startPage: "/admin/brands",
119
- steps: [
120
- "Sign in as admin@letitrip.in / TempPass123!.",
121
- "Open /admin/brands and edit Hasbro.",
122
- "Read every image field the form offers and note each one's label.",
123
- "Upload /test-media/sample-image.png into the field labelled as the cover image.",
124
- "Save and open /brands/brand-hasbro publicly.",
125
- "Check the uploaded image is what renders as the page's hero banner.",
126
- "If the form offers a second image field, upload a distinguishable image there and check whether anything renders it.",
127
- ],
128
- inputs: { brandId: "brand-hasbro", imagePath: "/test-media/sample-image.png" },
129
- expectedBehaviour: "The field labelled as the cover image is the one the hero renders. A form once had a Logo input and a Banner input side by side where Logo wrote the hero's field and Banner wrote a field with no readers at all — so the labels described the reverse of reality and every uploaded banner was discarded silently.",
130
- expectedUiState: "The image uploaded into the cover field is the hero on the public page. A second image field whose upload appears nowhere is a finding — that field has no reader.",
131
- endResult: "The brand carries the uploaded cover image.",
132
- },
133
- "checklist-admin-category-brand-authoring-category-type-not-guessable": {
134
- roles: ["admin"],
135
- startPage: "/admin/categories",
136
- steps: [
137
- "Sign in as admin@letitrip.in / TempPass123!.",
138
- "Open /admin/categories and start creating a category.",
139
- "Read every field the create form offers and confirm there is NO dropdown for the row's kind or type — the fields are name, slug, description, parent, order, active and show-in-menu.",
140
- "Create one named 'QA Kind Probe' with no parent and save it.",
141
- "Open /admin/brands and confirm 'QA Kind Probe' is NOT listed there.",
142
- "Create a brand named 'QA Brand Probe' on /admin/brands and save it.",
143
- "Return to /admin/categories and confirm 'QA Brand Probe' is NOT listed among the categories.",
144
- "Open /brands publicly and confirm QA Brand Probe appears; open /categories and confirm QA Kind Probe appears and QA Brand Probe does not.",
145
- "Delete both QA rows.",
146
- ],
147
- inputs: { categoryName: "QA Kind Probe", brandName: "QA Brand Probe" },
148
- expectedBehaviour: "Brands, bundles, sub-listing groups and ordinary categories are all rows in ONE collection distinguished by a kind field — but the author never picks it. The surface determines it: /admin/brands lists and writes kind=brand, /admin/categories writes an ordinary category. That is deliberate, so a missing kind dropdown is correct rather than a gap. What must hold is that the two surfaces stay disjoint.",
149
- expectedUiState: "No kind dropdown on either form. Each row appears on exactly ONE admin surface and exactly one public surface. A brand leaking into the category tree — or a category into the brand list — means the kind was not set from the surface, and that row will render in a place built for a different shape.",
150
- endResult: "Both QA rows are deleted. If a row appeared on both surfaces, record which, and delete it — a mistyped row is worse left in place than removed.",
151
- },
152
- "checklist-admin-category-brand-authoring-delete-category-with-children-refused": {
153
- roles: ["admin"],
154
- startPage: "/admin/categories",
155
- steps: [
156
- "Sign in as admin@letitrip.in / TempPass123!.",
157
- "Create a category 'QA Doomed Parent' under Beyblade Burst, then a category 'QA Orphan Child' under QA Doomed Parent.",
158
- "Create a product 'QA Cascade Probe' priced at 499 filed directly under QA Doomed Parent, and publish it.",
159
- "Open /admin/categories and delete QA Doomed Parent.",
160
- "Open /categories/category-beyblade-burst publicly and look for QA Orphan Child — it should now sit directly under Beyblade Burst.",
161
- "Open the QA Cascade Probe product's public page and read its category links.",
162
- "Open /categories/category-beyblade-burst and confirm the product is listed there.",
163
- "Delete QA Orphan Child and the product afterwards.",
164
- ],
165
- inputs: {
166
- doomedParent: "QA Doomed Parent",
167
- orphanChild: "QA Orphan Child",
168
- productTitle: "QA Cascade Probe",
169
- price: 499,
170
- grandparentId: "category-beyblade-burst",
171
- },
172
- expectedBehaviour: "Deleting a category CASCADES TO ITS PARENT rather than refusing: the children re-parent to the grandparent and the products are re-filed there, through the repository so each product's ancestor chain is rebuilt from its new leaf. This replaced an older flat refusal. The order is load-bearing — products must move while the document still exists — so the failure mode to watch for is a product left pointing at a category that is gone.",
173
- expectedUiState: "QA Orphan Child now sits directly under Beyblade Burst. QA Cascade Probe is filed under Beyblade Burst and its category links show the rebuilt chain, with no link naming the deleted QA Doomed Parent. A product with a dead category link, a one-element chain, or one missing from Beyblade Burst entirely is the failure.",
174
- expectedData: { childReparentedToGrandparent: true, deadCategoryLinks: 0 },
175
- endResult: "Only the two QA rows and the QA product were touched; the seeded tree is unchanged. Do NOT test this by deleting a seeded category — the whole Burst subtree would re-parent and every other case reading it in this run would then be testing a different tree.",
176
- },
177
- };
@@ -1,2 +0,0 @@
1
- import type { AuthoredCase } from "./_types";
2
- export declare const authored: Record<string, AuthoredCase>;