@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,329 +0,0 @@
1
- /*
2
- * WHY: Authored six-part procedures for the account-auth/signup-login checklist page.
3
- * WHAT: 15 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
- * 🛑 TWO CASES HERE CHANGE A PASSWORD, and each owns a persona nothing else uses —
10
- * `password-reset` has neha.op@gmail.com, `auth-email-links-single-use` has
11
- * divya.funko@gmail.com. `seed-cli` sets `TempPass123!` only when it CREATES an
12
- * Auth record and never resets an existing one, so a changed password outlives
13
- * every future re-seed. Both cases restore it in their last step. They used to
14
- * point at vivaan.kapoor@gmail.com, which four other authored pages sign in as.
15
- *
16
- * 🛑 THE GOOGLE CASES NEED REAL GOOGLE CREDENTIALS and cannot be seeded — a
17
- * provider link lives in Firebase Auth, not Firestore. They are NOT flagged
18
- * `needsReview`: their intent is perfectly clear, and a case that cannot be
19
- * reached is a `null` verdict at run time, not an authoring doubt. Confusing the
20
- * two hides the unwritten cases inside the unanswerable ones.
21
- *
22
- * @tag domain:tester
23
- * @tag layer:seed
24
- * @tag pattern:none
25
- * @tag access:server-only
26
- * @tag consumers:seed-data/authored/index.ts
27
- * @tag sideEffects:none
28
- */
29
- export const authored = {
30
- "checklist-account-auth-signup-login-auth-email-links-single-use": {
31
- roles: ["guest"],
32
- startPage: "/auth/forgot-password",
33
- steps: [
34
- "Open /auth/forgot-password.",
35
- "Type divya.funko@gmail.com in the 'Email address' field.",
36
- "Click 'Send reset link'.",
37
- "Open the inbox for divya.funko@gmail.com and copy the reset link URL out of the email before opening it.",
38
- "Open the copied URL, type QaSingleUse789! as the new password, confirm it, and submit.",
39
- "Open the same copied URL a second time.",
40
- "Register a fresh account at /auth/register using an inbox you can open, then open its verification link once, and then open that same link a second time.",
41
- "Open /auth/forgot-password, request a link for divya.funko@gmail.com again, and use it to set the password back to TempPass123!.",
42
- ],
43
- inputs: {
44
- email: "divya.funko@gmail.com",
45
- newPassword: "QaSingleUse789!",
46
- restoredPassword: "TempPass123!",
47
- },
48
- expectedBehaviour: "The action code in each link is one-time. The second open is refused by Firebase and the site turns that refusal into readable English with a way to get a fresh link. No second password change is applied and no second verification is recorded.",
49
- expectedUiState: "On the second open of the reset link: a message in the shape of 'This link has already been used or has expired', plus a control to request a new one. Not a blank page, not a raw 'auth/invalid-action-code', not a stack trace, and not a working password form. The second open of the verification link reads the same way.",
50
- expectedData: { passwordChangesApplied: 1 },
51
- endResult: "Account state after the second click is identical to after the first. divya.funko@gmail.com is back on TempPass123! by the final step — skipping that restore leaves the account unusable by every later case, since the seeder never resets an existing password.",
52
- },
53
- "checklist-account-auth-signup-login-auth-emails-sender-identity-and-inbox": {
54
- roles: ["guest"],
55
- startPage: "/auth/register",
56
- steps: [
57
- "Open /auth/register.",
58
- "Type QA Sender Test in 'Full name', a real Gmail address you can open in 'Email address', TestPass123! in both password fields, tick the terms checkbox, and click 'Create account'.",
59
- "Open that Gmail inbox, checking the Spam and Promotions tabs as well, and find the verification email.",
60
- "Read its From name and From address, and open the link inside it.",
61
- "Open /auth/forgot-password, type the same Gmail address, and click 'Send reset link'.",
62
- "Open the Gmail inbox again, find the password-reset email, and read its From name and From address.",
63
- "Repeat both flows with a non-Gmail address if one is available, and check that inbox the same way.",
64
- ],
65
- inputs: { fullName: "QA Sender Test", password: "TestPass123!" },
66
- expectedBehaviour: "Both emails are delivered to the inbox within a few minutes, from the site's own configured sender. The links inside resolve to the live site and complete their flows rather than 404ing or landing on a Firebase-hosted page the site does not control.",
67
- expectedUiState: "The From display name is spelled 'LetItRip' exactly — not 'Letitrip', not 'LetiTrip', not 'letitrip.in'. Both messages sit in the Primary inbox, not Spam or Promotions. Clicking through opens letitrip.in and the flow finishes.",
68
- expectedData: { senderDisplayName: "LetItRip" },
69
- endResult: "Verification marks the new account verified and the reset link changes its password. If Gmail and non-Gmail were both tried, note in the comment whether delivery differed — that difference is the point of testing two providers.",
70
- },
71
- "checklist-account-auth-signup-login-email-signup": {
72
- roles: ["guest"],
73
- startPage: "/auth/register",
74
- steps: [
75
- "Open /auth/register.",
76
- "Type QA Signup Tester in the 'Full name' field.",
77
- /*
78
- * 🛑 SUBSTITUTE THE RUN ID — this is the one input in the catalogue that
79
- * is deliberately not literal.
80
- *
81
- * `users` is PRESERVE tier: it survives every catalogue wipe, so an
82
- * account created here is permanent and the harness cannot clean it up.
83
- * The previous instruction ("increment the number if it already exists")
84
- * made that explicit and unbounded — one more dead account per run,
85
- * forever.
86
- *
87
- * A run-stamped address under `letitrip-qa.test` fixes both halves:
88
- * the address is unique per run so signup never collides, and
89
- * `.test` is an RFC 2606 reserved TLD that can never be registered and
90
- * can never receive mail — so no real person can ever hold one, which is
91
- * what makes `tester/scripts/purge-qa-signups.mjs` safe to point at the
92
- * PRESERVE tier at all.
93
- *
94
- * Run that purge after the run to remove exactly these accounts.
95
- */
96
- "Type qa-signup+<runId>@letitrip-qa.test in the 'Email address' field, substituting the current run id — e.g. qa-signup+run-1789483929743@letitrip-qa.test.",
97
- "Type TestPass123! in the 'Password' field.",
98
- "Type TestPass123! in the 'Confirm password' field.",
99
- "Tick the 'I accept the terms' checkbox.",
100
- "Click 'Create account'.",
101
- "Open /user.",
102
- ],
103
- inputs: {
104
- fullName: "QA Signup Tester",
105
- email: "qa-signup+<runId>@letitrip-qa.test",
106
- password: "TestPass123!",
107
- },
108
- expectedBehaviour: "A Firebase Auth record and a matching Firestore user document are created, keyed on the Auth uid rather than on a generated user-* slug. A verification email is dispatched. The browser is signed in and moved off /auth/register.",
109
- expectedUiState: "The address bar leaves /auth/register for / or /user, and the header shows a signed-in avatar with no 'Sign in' link. Submitting the same address a second time is refused with a readable 'email already in use' message, not a duplicate account.",
110
- expectedData: { displayName: "QA Signup Tester" },
111
- endResult: "Reloading /user shows 'QA Signup Tester' and the address used. The account persists — this case creates a real row that a later teardown does not remove, which is why the address is numbered rather than fixed.",
112
- },
113
- "checklist-account-auth-signup-login-email-verify": {
114
- roles: ["guest"],
115
- startPage: "/auth/register",
116
- steps: [
117
- "Open /auth/register and create an account with an inbox you can open, using TestPass123! as the password.",
118
- "Open the inbox and find the verification email from Firebase.",
119
- "Open the verification link in the email.",
120
- "Open /auth/login and sign in with that account.",
121
- "Open /user.",
122
- ],
123
- inputs: { password: "TestPass123!" },
124
- expectedBehaviour: "Following the link flips the account's emailVerified flag in Firebase Auth, and the site reads that flag rather than a separate copy of its own. The verified state survives sign-out and sign-in.",
125
- expectedUiState: "The link lands on a confirmation page. After signing in, /user carries no 'Your email is not verified' banner and no prompt to resend the verification email.",
126
- expectedData: { emailVerified: true },
127
- endResult: "Reloading /user still shows no verification warning. An account that reads as unverified after a successful link click is the failure this case catches.",
128
- },
129
- "checklist-account-auth-signup-login-forgot-password-no-account-enumeration": {
130
- roles: ["guest"],
131
- startPage: "/auth/forgot-password",
132
- steps: [
133
- "Open /auth/forgot-password.",
134
- "Type nobody-here-12345@example.com in the 'Email address' field.",
135
- "Click 'Send reset link'.",
136
- "Read the resulting message and note its exact wording.",
137
- "Reload /auth/forgot-password, type rehan.sheikh@gmail.com, and click 'Send reset link'.",
138
- "Read that message and compare the two word for word.",
139
- ],
140
- inputs: { unknownEmail: "nobody-here-12345@example.com", knownEmail: "rehan.sheikh@gmail.com" },
141
- expectedBehaviour: "The browser calls Firebase directly, so it is the client that must swallow auth/user-not-found. Both submissions produce the identical generic response; nothing in the message, the timing or an error toast distinguishes an address that has an account from one that does not.",
142
- expectedUiState: "Both attempts show the same text — 'If an account exists for that email, a reset link is on its way.' or equivalent. The unknown address produces no red toast, no 'user not found', no field-level error, and no different button state.",
143
- endResult: "No email arrives for nobody-here-12345@example.com. The two on-screen responses were indistinguishable, which is the whole point — a difference of any kind is an account-enumeration leak.",
144
- },
145
- "checklist-account-auth-signup-login-google-link-confirmation-shown": {
146
- requiresHumanChannel: true,
147
- humanChannelReason: "interactive Google account",
148
- roles: ["buyer"],
149
- startPage: "/user",
150
- steps: [
151
- "Sign in as an account that already has Google linked — or link one first through /user/settings > 'Linked Accounts' > 'Connect Google'.",
152
- "Open /user.",
153
- "Read the alert area near the top of the dashboard.",
154
- "Reload the page.",
155
- ],
156
- expectedBehaviour: "The dashboard handles the linked case explicitly, not just by omitting the unlinked prompt. Before this was fixed the whole alert block disappeared once linked, so a user had no confirmation on /user at all — only Settings showed a Connected badge.",
157
- expectedUiState: "A green confirmation alert reading 'Google account connected', carrying a Connected badge and the linked Google email address. The blue 'Connect your Google account' prompt is absent. An empty space where the alert used to be is a fail, not a pass.",
158
- endResult: "After reload the green confirmation is still there and the blue prompt has not returned. Needs a Google account to reach — answer null with that reason rather than guessing if none is available.",
159
- },
160
- "checklist-account-auth-signup-login-google-link-conflict-rejected": {
161
- requiresHumanChannel: true,
162
- humanChannelReason: "interactive Google account",
163
- roles: ["buyer"],
164
- startPage: "/user/settings",
165
- steps: [
166
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
167
- "Open /user/settings, expand 'Linked Accounts', click 'Connect Google', and complete the popup with a Google account G.",
168
- "Sign out.",
169
- "Sign in as vivaan.kapoor@gmail.com / TempPass123!.",
170
- "Open /user/settings.",
171
- "Expand the 'Linked Accounts' accordion.",
172
- "Click 'Connect Google'.",
173
- "Select the same Google account G in the popup and complete the flow.",
174
- "Reload /user/settings and expand 'Linked Accounts'.",
175
- ],
176
- inputs: { accountA: "vivaan.kapoor@gmail.com", accountB: "rehan.sheikh@gmail.com" },
177
- expectedBehaviour: "The second link is refused because G already belongs to rehan.sheikh@gmail.com. Neither account is modified: the two are not merged, and G's email is not moved from one to the other. A silent merge here would join two people's orders, addresses and wishlists.",
178
- expectedUiState: "A readable error in the shape of 'This Google account is already linked to another account'. vivaan.kapoor@gmail.com still shows a 'Connect Google' button, not a Connected badge.",
179
- endResult: "After reload vivaan.kapoor@gmail.com has no Google link and rehan.sheikh@gmail.com still has G. Unlink G from rehan.sheikh@gmail.com afterwards. Needs a real Google account — answer null if none is available.",
180
- },
181
- "checklist-account-auth-signup-login-google-link-different-email": {
182
- requiresHumanChannel: true,
183
- humanChannelReason: "interactive Google account",
184
- roles: ["buyer"],
185
- startPage: "/user/settings",
186
- steps: [
187
- "Sign in as vivaan.kapoor@gmail.com / TempPass123!.",
188
- "Open /user/settings.",
189
- "Expand the 'Linked Accounts' accordion.",
190
- "Click 'Connect Google'.",
191
- "Select a Google account whose email is NOT vivaan.kapoor@gmail.com, and complete the popup.",
192
- "Reload /user/settings and expand 'Linked Accounts'.",
193
- "Sign out, open /auth/login, and click 'Sign in with Google' choosing that same Google account.",
194
- ],
195
- inputs: { primaryEmail: "vivaan.kapoor@gmail.com" },
196
- expectedBehaviour: "Linking a differently-addressed Google account requires this explicit button press — it never happens as a side effect of merely signing in with Google. One account now answers to two emails; a second account is not created. The primary login email is unchanged.",
197
- expectedUiState: "'Linked Accounts' shows Google as Connected and displays the OTHER email. The account's own email elsewhere in Settings still reads vivaan.kapoor@gmail.com. Signing in with that Google account afterwards lands in this same account, with its existing orders and wishlist.",
198
- expectedData: { primaryEmail: "vivaan.kapoor@gmail.com" },
199
- endResult: "After reload the link persists and the primary email is still vivaan.kapoor@gmail.com. Unlink afterwards. Needs a second Google account — answer null if none is available.",
200
- },
201
- "checklist-account-auth-signup-login-google-link-existing": {
202
- requiresHumanChannel: true,
203
- humanChannelReason: "interactive Google account",
204
- roles: ["guest"],
205
- startPage: "/auth/register",
206
- steps: [
207
- "Open /auth/register.",
208
- "Type QA Google Merge in 'Full name', the email address of a Google account you control in 'Email address', TestPass123! in both password fields, tick the terms checkbox, and click 'Create account'.",
209
- "Add any product to the wishlist so the account has something identifying in it.",
210
- "Sign out.",
211
- "Open /auth/login.",
212
- "Click 'Sign in with Google'.",
213
- "Select that same Google account in the popup and complete it.",
214
- "Open /wishlist.",
215
- "Open /user/settings and expand 'Linked Accounts'.",
216
- ],
217
- inputs: { fullName: "QA Google Merge", password: "TestPass123!" },
218
- expectedBehaviour: "Because the Google email matches an existing password account exactly, the sign-in resolves to that same account automatically — no duplicate, and no explicit linking step asked of the user. Google is recorded as connected as a side effect.",
219
- expectedUiState: "No 'create account' step appears after the popup. The header shows 'QA Google Merge', and /wishlist still holds the item added before signing out — the proof it is the same account and not a fresh one wearing the same email. 'Linked Accounts' shows Google Connected.",
220
- expectedData: { displayName: "QA Google Merge" },
221
- endResult: "One account exists for that email, not two, and it kept its wishlist. Needs a Google account whose address you can also register with — answer null if none is available.",
222
- },
223
- "checklist-account-auth-signup-login-google-oauth": {
224
- requiresHumanChannel: true,
225
- humanChannelReason: "interactive Google account",
226
- roles: ["guest"],
227
- startPage: "/auth/login",
228
- steps: [
229
- "Open /auth/login.",
230
- "Click 'Sign in with Google'.",
231
- "Complete the Google popup by choosing an account.",
232
- "Wait for the popup to close and the site to respond.",
233
- "Open /user.",
234
- ],
235
- expectedBehaviour: "The popup opens, Google authenticates, the popup closes, and the site establishes its own session cookie from the returned credential. An account is created if the email is new, or signed into if it already exists.",
236
- expectedUiState: "The address bar leaves /auth/login. The header shows a signed-in avatar and no 'Sign in' link. No error toast, and no popup left hanging open after authentication.",
237
- endResult: "Reloading /user keeps the session. Needs a Google account — answer null with that reason if none is available.",
238
- },
239
- "checklist-account-auth-signup-login-google-popup-blocked-fallback": {
240
- requiresHumanChannel: true,
241
- humanChannelReason: "interactive Google account",
242
- roles: ["guest"],
243
- startPage: "/auth/login",
244
- steps: [
245
- "Set the browser to block popups for letitrip.in.",
246
- "Open /auth/login.",
247
- "Click 'Sign in with Google'.",
248
- "Leave the blocked-popup notification alone without unblocking it.",
249
- "Wait up to 30 seconds and watch the page.",
250
- "Open /user.",
251
- ],
252
- expectedBehaviour: "The site notices the popup never opened and falls back — either to a full-page redirect flow, or to the RTDB signal plus postMessage path — and completes sign-in without asking the user to change browser settings.",
253
- expectedUiState: "Within 30 seconds the page reaches a signed-in state: avatar in the header, no 'Sign in' link. What must NOT happen is a button stuck in a loading state forever, or an error toast telling the user to allow popups and nothing else.",
254
- endResult: "Reloading /user keeps the session. Needs a Google account plus popup blocking — answer null if either is unavailable.",
255
- },
256
- "checklist-account-auth-signup-login-login": {
257
- roles: ["guest"],
258
- startPage: "/auth/login",
259
- steps: [
260
- "Open /auth/login.",
261
- "Type vivaan.kapoor@gmail.com in the 'Email address' field.",
262
- "Type TempPass123! in the 'Password' field.",
263
- "Click 'Sign in'.",
264
- "Open /user.",
265
- ],
266
- inputs: { email: "vivaan.kapoor@gmail.com", password: "TempPass123!" },
267
- expectedBehaviour: "Firebase validates the credential, the site exchanges it for its own __session cookie, and the browser is moved off /auth/login. A wrong password is refused with a readable message rather than a raw Firebase code.",
268
- expectedUiState: "The address bar leaves /auth/login for / or /user, and the header shows the avatar for Vivaan Kapoor. No error toast.",
269
- expectedData: { signedInUid: "user-seto-kaiba" },
270
- endResult: "Reloading /user keeps the session as user-seto-kaiba. Every seeded account uses TempPass123!, so no separate credential lookup is needed.",
271
- },
272
- "checklist-account-auth-signup-login-logout": {
273
- roles: ["buyer"],
274
- startPage: "/user",
275
- steps: [
276
- "Sign in as vivaan.kapoor@gmail.com / TempPass123!.",
277
- "Open /user.",
278
- "Click 'Log out' in the sidebar.",
279
- "Open /user again.",
280
- ],
281
- expectedBehaviour: "Both halves of the session end: the server __session cookie is cleared and the Firebase client session is revoked. Clearing only one leaves the browser able to re-mint a session on the next request, which is what makes the second navigation the real check.",
282
- expectedUiState: "After Log out the page redirects and the header shows the signed-out state. Opening /user afterwards redirects to /auth/login rather than rendering the dashboard, even briefly with real data in it.",
283
- expectedData: { redirectTarget: "/auth/login" },
284
- endResult: "Navigating to /user lands on /auth/login and no data for Vivaan Kapoor is rendered at any point. A back-button press does not restore the dashboard.",
285
- },
286
- "checklist-account-auth-signup-login-password-reset": {
287
- roles: ["guest"],
288
- startPage: "/auth/login",
289
- steps: [
290
- "Open /auth/login.",
291
- "Click 'Forgot password?'.",
292
- "Type neha.op@gmail.com in the 'Email address' field.",
293
- "Click 'Send reset link'.",
294
- "Open the inbox for neha.op@gmail.com and open the reset link.",
295
- "Type QaReset321! as the new password, confirm it, and submit.",
296
- "Open /auth/login, type neha.op@gmail.com and TempPass123!, and click 'Sign in'.",
297
- "Type neha.op@gmail.com and QaReset321! instead, and click 'Sign in'.",
298
- "Request another reset link for neha.op@gmail.com and use it to set the password back to TempPass123!.",
299
- ],
300
- inputs: {
301
- email: "neha.op@gmail.com",
302
- newPassword: "QaReset321!",
303
- restoredPassword: "TempPass123!",
304
- },
305
- expectedBehaviour: "The reset email arrives, its link opens a set-password form, and the submitted password replaces the old one in Firebase Auth. The old password stops working at that moment — a reset that leaves both passwords valid is the failure worth catching.",
306
- expectedUiState: "'Send reset link' produces the generic 'If an account exists for that email…' message. Signing in with TempPass123! after the reset is refused with a readable error; signing in with QaReset321! succeeds and lands on the dashboard.",
307
- endResult: "The password is back at TempPass123! by the final step. That restore is mandatory: the seeder never resets an existing password, so skipping it leaves this account permanently signed out of every later case.",
308
- },
309
- "checklist-account-auth-signup-login-signup-verification-email-arrives": {
310
- roles: ["guest"],
311
- startPage: "/auth/register",
312
- steps: [
313
- "Open /auth/register.",
314
- "Type QA Verify Tester in the 'Full name' field.",
315
- "Type a real inbox address you can open in the 'Email address' field.",
316
- "Type TestPass123! in the 'Password' field.",
317
- "Type TestPass123! in the 'Confirm password' field.",
318
- "Tick the 'I accept the terms' checkbox.",
319
- "Click 'Create account'.",
320
- "Open that inbox, checking Spam as well, and wait up to five minutes.",
321
- "Open the verification link in the email.",
322
- ],
323
- inputs: { fullName: "QA Verify Tester", password: "TestPass123!" },
324
- expectedBehaviour: "Firebase's client SDK sends the verification mail directly, so it carries Firebase's own template and sender rather than the branded LetItRip one. The link resolves to the live site and marks the account verified. The on-screen 'check your email' message is not the thing being tested — the arrival is.",
325
- expectedUiState: "An email is present in the inbox within a few minutes. It looks like Firebase's default template, and that difference from the branded Resend emails is expected here, not a defect. Its link opens letitrip.in and reports success.",
326
- expectedData: { emailVerified: true },
327
- endResult: "Signing in and reloading /user shows no 'email not verified' warning. A 'check your email' screen with no email ever arriving is exactly the failure this case exists to separate from success.",
328
- },
329
- };
@@ -1,2 +0,0 @@
1
- import type { AuthoredCase } from "./_types";
2
- export declare const authored: Record<string, AuthoredCase>;
@@ -1,41 +0,0 @@
1
- /*
2
- * WHY: Authored six-part procedures for the addresses/address-filters page.
3
- * WHAT: 1 case, keyed by full checklist id.
4
- *
5
- * Written by hand, case by case, against the label each one states. There is no
6
- * generator: the authoring scripts were deleted once it was clear they were
7
- * scaffolding around work that is simply writing.
8
- *
9
- * @tag domain:tester
10
- * @tag layer:seed
11
- * @tag pattern:none
12
- * @tag access:server-only
13
- * @tag consumers:seed-data/authored/index.ts
14
- * @tag sideEffects:none
15
- */
16
- export const authored = {
17
- "checklist-addresses-address-filters-filters-actually-filter": {
18
- roles: ["buyer"],
19
- startPage: "/user/addresses",
20
- steps: [
21
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
22
- "Open /user/addresses. No address is seeded for this buyer, so create two — one labelled 'Home' at '7 Test Lane', Indore, Madhya Pradesh, 452010, and one labelled 'Office' at '8 Test Lane', Bengaluru, Karnataka, 560001.",
23
- "Back on /user/addresses, read the controls above the list: a Search input and a Label select. There is no filter drawer and no filter badge.",
24
- "Type Indore in Search and read which addresses remain.",
25
- "Clear Search, type zzzznope, and read the count.",
26
- "Clear Search. Choose Office in the Label select and read which addresses remain.",
27
- "Set the Label select back to 'All labels' and confirm both return.",
28
- "Finally type Office into Search, with the Label select on All labels, and read the result.",
29
- ],
30
- inputs: {
31
- firstLabel: "Home",
32
- secondLabel: "Office",
33
- searchHit: "Indore",
34
- searchMiss: "zzzznope",
35
- },
36
- expectedBehaviour: "Both controls narrow the list they sit above, and both are in-memory over the already-fetched addresses rather than a refetch. Search matches the name, street, city, state and postal code; the Label select matches the label, which Search deliberately does not cover. A control that changes nothing is the failure this case exists for.",
37
- expectedUiState: "Searching Indore leaves the Indore address and hides the Bengaluru one. 'zzzznope' leaves NONE — that is the control that separates filtering from returning everything. Choosing Office in the Label select leaves only the Office address, and 'All labels' restores both.\n\n🛑 Typing Office into SEARCH returns nothing, and that is CORRECT: search covers name, street, city, state and postal code, not the label. Do not record it as broken search. The Label select does not appear at all until at least one address has a label.",
38
- expectedData: { searchMissCount: 0, labelFilteredCount: 1 },
39
- endResult: "Both controls are cleared. Delete the two addresses afterwards — the addresses collection is PRESERVE tier and is never wiped between runs, so anything left here accumulates forever."
40
- },
41
- };
@@ -1,2 +0,0 @@
1
- import type { AuthoredCase } from "./_types";
2
- export declare const authored: Record<string, AuthoredCase>;
@@ -1,76 +0,0 @@
1
- /*
2
- * WHY: Authored six-part procedures for the addresses/postal-lookup page.
3
- * WHAT: 3 case(s), keyed by full checklist id.
4
- *
5
- * Written by hand, case by case, against the label each one states. There is no
6
- * generator: the authoring scripts were deleted once it was clear they were
7
- * scaffolding around work that is simply writing.
8
- *
9
- * The three cases are hit / don't-clobber / miss. The miss is the one that
10
- * matters most: coverage is thinner than India Post's, so an unrecognised code
11
- * is the COMMON path and has to be a non-event rather than an error state.
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-addresses-postal-lookup-pin-fills-city-and-state": {
22
- roles: ["buyer"],
23
- startPage: "/user/addresses/new",
24
- steps: [
25
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
26
- "Open /user/addresses/new.",
27
- "Select India as the country.",
28
- "Leave the City and State fields empty.",
29
- "Type 560001 in the PIN code field.",
30
- "Wait one second without typing anything else.",
31
- "Read the City field and the 'State / region' picker, then read the rest of the form.",
32
- "If neither filled, open the network panel and find the api.zippopotam.us request before judging.",
33
- ],
34
- inputs: { country: "India", pincode: "560001", expectedState: "Karnataka" },
35
- expectedBehaviour: "A complete PIN code triggers one debounced lookup that fills only City and State. Nothing else on the form moves — a lookup that also rewrites the street or the label is doing more than it was asked and the user has no way to undo it.",
36
- expectedUiState: "Within about half a second City and 'State / region' are filled for 560001; the state reads Karnataka. Record the city string rather than asserting one — it is whatever Zippopotam returns for that code. Every other field holds exactly what it held before, including any name or street already typed. No spinner is left running and no error appears.",
37
- expectedData: { pincode: "560001" },
38
- endResult: "Nothing is saved unless the form is submitted. Two dead modules once carried the shape of a lookup that had been removed, which is why this looked built long before it was.",
39
- },
40
- "checklist-addresses-postal-lookup-lookup-never-overwrites": {
41
- roles: ["buyer"],
42
- startPage: "/user/addresses/new",
43
- steps: [
44
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
45
- "Open /user/addresses/new.",
46
- "Select India as the country.",
47
- "Type Whitefield in the City field FIRST, before touching the PIN code.",
48
- "Type 560001 in the PIN code field.",
49
- "Wait one second.",
50
- "Read the City field.",
51
- ],
52
- inputs: { country: "India", city: "Whitefield", pincode: "560001" },
53
- expectedBehaviour: "Autofill only ever lands in an EMPTY field. A lookup that corrects deliberate typing produces a bug the user cannot report — they simply watch their own text disappear and assume they mistyped.",
54
- expectedUiState: "City still reads 'Whitefield' after the lookup completes. 'State / region', which was empty, has been filled. Nothing flashes the typed value away and back.",
55
- expectedData: { city: "Whitefield" },
56
- endResult: "Nothing persists until the form is submitted. 'Whitefield' is chosen because it is a real Bengaluru locality that the 560001 lookup will not return — a city name the lookup agrees with would prove nothing.",
57
- },
58
- "checklist-addresses-postal-lookup-lookup-miss-is-a-non-event": {
59
- roles: ["buyer"],
60
- startPage: "/user/addresses/new",
61
- steps: [
62
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
63
- "Open /user/addresses/new.",
64
- "Select India as the country.",
65
- "Type 999999 in the PIN code field.",
66
- "Wait two seconds and read the whole form.",
67
- "Type 'QA Address lookup-miss' as the name, '3 Test Lane' as the street and 'Indore' as the city, then SELECT 'Madhya Pradesh' from the 'State / region' picker — for India it is a 36-option list, not a text box.",
68
- "Save the address.",
69
- ],
70
- inputs: { country: "India", pincode: "999999", city: "Indore", state: "Madhya Pradesh" },
71
- expectedBehaviour: "An unknown but well-formed code resolves to nothing and the form carries on. The code is still valid — six digits — so it must save; only the convenience lookup missed.",
72
- expectedUiState: "No error banner, no red PIN code field, no disabled Save. City stays empty and editable and the 'State / region' picker stays on its placeholder, and the typed and selected values are accepted. The address saves with PIN code 999999, which matches the IN postal pattern of six digits not starting with zero.",
73
- expectedData: { pincode: "999999", saved: true },
74
- endResult: "The address exists in /user/addresses after a reload. Delete it afterwards. Treating a miss as a validation failure would block every address in the many areas the lookup does not cover.",
75
- },
76
- };
@@ -1,2 +0,0 @@
1
- import type { AuthoredCase } from "./_types";
2
- export declare const authored: Record<string, AuthoredCase>;
@@ -1,78 +0,0 @@
1
- /*
2
- * WHY: Authored six-part procedures for the addresses/postal-validation page.
3
- * WHAT: 3 case(s), keyed by full checklist id.
4
- *
5
- * Written by hand, case by case, against the label each one states. There is no
6
- * generator: the authoring scripts were deleted once it was clear they were
7
- * scaffolding around work that is simply writing.
8
- *
9
- * @tag domain:tester
10
- * @tag layer:seed
11
- * @tag pattern:none
12
- * @tag access:server-only
13
- * @tag consumers:seed-data/authored/index.ts
14
- * @tag sideEffects:none
15
- */
16
- export const authored = {
17
- "checklist-addresses-postal-validation-letters-rejected-on-the-field": {
18
- roles: ["buyer"],
19
- startPage: "/user/addresses/new",
20
- steps: [
21
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
22
- "Open /user/addresses/new.",
23
- "Select India as the country.",
24
- "Type 'QA Address letters-rejected' as the name, '4 Test Lane' as the street and 'Indore' as the city, then SELECT 'Madhya Pradesh' from the 'State / region' picker.",
25
- "Type abcdef in the PIN code field.",
26
- "Click Save.",
27
- "Read where the error appears.",
28
- ],
29
- inputs: { country: "India", pincode: "abcdef" },
30
- expectedBehaviour: "The format is checked in the browser against the country's own rule, so the request is never sent. A length-only rule passes 'abcdef' — six characters — which is exactly how one admin route treated it as a valid Indian PIN code.",
31
- expectedUiState: "An error appears directly under the PIN code field naming the format, before any network request. There is no server 400 with nothing marked, and no error banner detached from the field that caused it.",
32
- expectedData: { saved: false },
33
- endResult: "No address is created. The form keeps the other typed values so the user only has to fix the one field.",
34
- },
35
- "checklist-addresses-postal-validation-country-decides-the-rule": {
36
- roles: ["buyer"],
37
- startPage: "/user/addresses/new",
38
- steps: [
39
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
40
- "Open /user/addresses/new.",
41
- "Select Canada as the country.",
42
- "Read the label on the postal code field.",
43
- "Type K1A 0B1 in that field, then fill the name 'QA Address country-rule', the street '5 Test Lane' and the city 'Ottawa', and SELECT 'Ontario' from the 'State / region' picker — Canada has one too.",
44
- "Click Save.",
45
- "Open the address for editing, switch the country to India, and type K1A 0B1 in the PIN code field.",
46
- "Type 560001 instead and read the field.",
47
- ],
48
- inputs: { canadaPostcode: "K1A 0B1", indiaPincode: "560001" },
49
- expectedBehaviour: "The postal rule and its label both follow the selected country. An India-only six-digit rule made every real Canadian postcode unsaveable from every surface in the app.",
50
- expectedUiState: "With Canada selected the field is labelled 'Postal code' and K1A 0B1 saves. With India selected the field is labelled 'PIN code', K1A 0B1 is rejected, and 560001 is accepted. The rejection is on the field, not a banner.",
51
- expectedData: { canadaAccepted: true, indiaRejectsCanadaFormat: true },
52
- endResult: "Delete the address afterwards. The reversal is the whole case — a rule that accepts both formats for both countries is not country-aware, it is just permissive.",
53
- },
54
- "checklist-addresses-postal-validation-unknown-country-never-blocks": {
55
- roles: ["buyer"],
56
- startPage: "/user/addresses/new",
57
- steps: [
58
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
59
- "Open /user/addresses/new.",
60
- "Select United Arab Emirates as the country.",
61
- "Type 'QA Address unknown-country' as the name, '6 Test Lane' as the street and 'Dubai' as the city.",
62
- "Type 00000 in the postal code field.",
63
- "Click Save.",
64
- "Open the address for editing, replace the postal code with ABC-1234, and save again.",
65
- ],
66
- inputs: {
67
- country: "United Arab Emirates",
68
- firstCode: "00000",
69
- secondCode: "ABC-1234",
70
- postalMin: 3,
71
- postalMax: 12,
72
- },
73
- expectedBehaviour: "For a country with no known format any code of 3 to 12 characters is accepted, which is the POSTAL_MIN and POSTAL_MAX fallback in the one shared validator. A postal rule exists to catch a typo, never to refuse a real address whose pattern we simply do not have — and an EMPTY code is still refused, because a blank is not a postal code in any country.",
74
- expectedUiState: "Both codes save without an error. The field is not marked red and Save is never disabled. What must not happen is India's six-digit rule being applied by default to a country it does not describe.",
75
- expectedData: { bothCodesAccepted: true },
76
- endResult: "The address holds ABC-1234 after a reload. Delete it afterwards.",
77
- },
78
- };
@@ -1,2 +0,0 @@
1
- import type { AuthoredCase } from "./_types";
2
- export declare const authored: Record<string, AuthoredCase>;
@@ -1,59 +0,0 @@
1
- /*
2
- * WHY: Authored six-part procedures for the addresses/state-picker page.
3
- * WHAT: 2 case(s), keyed by full checklist id.
4
- *
5
- * Written by hand, case by case, against the label each one states. There is no
6
- * generator: the authoring scripts were deleted once it was clear they were
7
- * scaffolding around work that is simply writing.
8
- *
9
- * @tag domain:tester
10
- * @tag layer:seed
11
- * @tag pattern:none
12
- * @tag access:server-only
13
- * @tag consumers:seed-data/authored/index.ts
14
- * @tag sideEffects:none
15
- */
16
- export const authored = {
17
- "checklist-addresses-state-picker-state-is-a-picker-for-india": {
18
- roles: ["buyer"],
19
- startPage: "/user/addresses/new",
20
- steps: [
21
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
22
- "Open /user/addresses/new.",
23
- "Select India as the country.",
24
- "Click the 'State / region' field and try to type free text into it.",
25
- "Type karn in the picker's search box and read the options offered.",
26
- "Select Karnataka.",
27
- "Change the country to United Arab Emirates.",
28
- "Click 'State / region' again and try to type free text.",
29
- ],
30
- inputs: { country: "India", stateSearch: "karn", state: "Karnataka" },
31
- expectedBehaviour: "Where a country's regions are enumerated, State is a searchable picker; where they are not, it is a plain text box. The picker is what stops one column holding 'Karnataka', 'karnataka' and 'KA' depending on which screen created the row — which is what happened while this form and the seller drawer wrote free text into the same field the admin editor filled from a 36-option list.",
32
- expectedUiState: "With India selected, 'State / region' cannot be typed into freely and searching 'karn' narrows a list of India's 36 states and union territories to Karnataka. With United Arab Emirates selected the same label becomes an ordinary text input that accepts anything, because the UAE has no subdivisions in the registry.",
33
- expectedData: { indiaStateOptionCount: 36 },
34
- endResult: "Nothing persists unless the form is submitted. A picker offering 28 or 29 options is missing the union territories.",
35
- },
36
- "checklist-addresses-state-picker-changing-country-clears-state": {
37
- roles: ["buyer"],
38
- startPage: "/user/addresses/new",
39
- steps: [
40
- "Sign in as rehan.sheikh@gmail.com / TempPass123!.",
41
- "Open /user/addresses/new.",
42
- "Select India as the country.",
43
- "Select Karnataka in the 'State / region' picker.",
44
- "Change the country to Canada.",
45
- "Read the 'State / region' field, and count the options it now offers.",
46
- "Change the country back to India and read it again.",
47
- ],
48
- inputs: {
49
- firstCountry: "India",
50
- state: "Karnataka",
51
- secondCountry: "Canada",
52
- canadaOptionCount: 13,
53
- },
54
- expectedBehaviour: "Changing the country clears the state, because a state only means something inside the country it belongs to. An address carrying Karnataka under Canada is a row nothing can group, rate for shipping, or tax correctly.",
55
- expectedUiState: "After switching to Canada 'State / region' is empty and offers 13 Canadian options, its 10 provinces and 3 territories — an emptied field still listing India's 36 would mean the clear ran and the option source did not. Switching back to India leaves it empty too: the clear fires on every country change and does not restore 'Karnataka', which would reintroduce the mismatch it exists to prevent.",
56
- expectedData: { stateAfterCountryChange: "", canadaOptionCount: 13 },
57
- endResult: "Nothing persists unless the form is submitted. A retained 'Karnataka' under Canada is the failure.",
58
- },
59
- };
@@ -1,2 +0,0 @@
1
- import type { AuthoredCase } from "./_types";
2
- export declare const authored: Record<string, AuthoredCase>;