@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.
- package/dist/.build-stamp.json +3 -3
- package/dist/_internal/server/jobs/handlers/messages.d.ts +1 -1
- package/dist/_internal/server/jobs/handlers/messages.js +1 -1
- package/dist/_internal/shared/types/base-document.d.ts +1 -1
- package/dist/constants/seed-meta.d.ts +113 -0
- package/dist/constants/seed-meta.js +91 -0
- package/dist/index.d.ts +0 -131
- package/dist/index.js +50 -294
- package/dist/server.d.ts +0 -69
- package/dist/server.js +0 -69
- package/package.json +4 -2
- package/scripts/seed-cli.mjs +69 -1
- package/dist/features/tester/seed-data/_happy-path.d.ts +0 -23
- package/dist/features/tester/seed-data/_happy-path.js +0 -710
- package/dist/features/tester/seed-data/_money-flows.d.ts +0 -23
- package/dist/features/tester/seed-data/_money-flows.js +0 -610
- package/dist/features/tester/seed-data/authored/_types.d.ts +0 -57
- package/dist/features/tester/seed-data/authored/_types.js +0 -35
- package/dist/features/tester/seed-data/authored/account-auth__profile-settings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/account-auth__profile-settings.js +0 -226
- package/dist/features/tester/seed-data/authored/account-auth__signup-login.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +0 -329
- package/dist/features/tester/seed-data/authored/addresses__address-filters.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__address-filters.js +0 -41
- package/dist/features/tester/seed-data/authored/addresses__postal-lookup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__postal-lookup.js +0 -76
- package/dist/features/tester/seed-data/authored/addresses__postal-validation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__postal-validation.js +0 -78
- package/dist/features/tester/seed-data/authored/addresses__state-picker.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__state-picker.js +0 -59
- package/dist/features/tester/seed-data/authored/addresses__unban-request.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__unban-request.js +0 -77
- package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +0 -151
- package/dist/features/tester/seed-data/authored/admin__bans-and-trust.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bans-and-trust.js +0 -265
- package/dist/features/tester/seed-data/authored/admin__blog-faqs.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__blog-faqs.js +0 -131
- package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.js +0 -143
- package/dist/features/tester/seed-data/authored/admin__bulk-actions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bulk-actions.js +0 -207
- package/dist/features/tester/seed-data/authored/admin__bundles.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bundles.js +0 -144
- package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.js +0 -265
- package/dist/features/tester/seed-data/authored/admin__catalog-listings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__catalog-listings.js +0 -318
- package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.js +0 -177
- package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.js +0 -165
- package/dist/features/tester/seed-data/authored/admin__content-deletes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__content-deletes.js +0 -267
- package/dist/features/tester/seed-data/authored/admin__content-marketing.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__content-marketing.js +0 -188
- package/dist/features/tester/seed-data/authored/admin__coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__coupons.js +0 -215
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +0 -202
- package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.js +0 -249
- package/dist/features/tester/seed-data/authored/admin__media-watermark.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__media-watermark.js +0 -148
- package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.js +0 -350
- package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.js +0 -129
- package/dist/features/tester/seed-data/authored/admin__site-system.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__site-system.js +0 -586
- package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.js +0 -260
- package/dist/features/tester/seed-data/authored/admin__users-trust.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__users-trust.js +0 -569
- package/dist/features/tester/seed-data/authored/buying__bidding.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__bidding.js +0 -449
- package/dist/features/tester/seed-data/authored/buying__browsing-search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__browsing-search.js +0 -684
- package/dist/features/tester/seed-data/authored/buying__buying-checkout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +0 -546
- package/dist/features/tester/seed-data/authored/buying__buying-coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +0 -379
- package/dist/features/tester/seed-data/authored/buying__cart.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__cart.js +0 -1264
- package/dist/features/tester/seed-data/authored/buying__image-tile-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +0 -122
- package/dist/features/tester/seed-data/authored/buying__my-orders.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__my-orders.js +0 -279
- package/dist/features/tester/seed-data/authored/buying__offers.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__offers.js +0 -1127
- package/dist/features/tester/seed-data/authored/buying__order-detail-actions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__order-detail-actions.js +0 -153
- package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.js +0 -252
- package/dist/features/tester/seed-data/authored/buying__product-detail.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__product-detail.js +0 -474
- package/dist/features/tester/seed-data/authored/buying__return-request.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__return-request.js +0 -165
- package/dist/features/tester/seed-data/authored/buying__reviews-pagination.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +0 -260
- package/dist/features/tester/seed-data/authored/buying__reviews.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__reviews.js +0 -128
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +0 -96
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +0 -283
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.js +0 -169
- package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.js +0 -105
- package/dist/features/tester/seed-data/authored/buying__wishlist-history.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__wishlist-history.js +0 -374
- package/dist/features/tester/seed-data/authored/community-support__messages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__messages.js +0 -200
- package/dist/features/tester/seed-data/authored/community-support__public-profile.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__public-profile.js +0 -54
- package/dist/features/tester/seed-data/authored/community-support__support-tickets.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__support-tickets.js +0 -76
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +0 -4
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +0 -590
- package/dist/features/tester/seed-data/authored/content-discovery__blog.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__blog.js +0 -110
- package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.js +0 -149
- package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +0 -145
- package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +0 -174
- package/dist/features/tester/seed-data/authored/content-discovery__coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +0 -169
- package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.js +0 -209
- package/dist/features/tester/seed-data/authored/content-discovery__event-participation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__event-participation.js +0 -207
- package/dist/features/tester/seed-data/authored/content-discovery__events.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__events.js +0 -377
- package/dist/features/tester/seed-data/authored/content-discovery__faq-help.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__faq-help.js +0 -87
- package/dist/features/tester/seed-data/authored/content-discovery__notifications.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +0 -147
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +0 -209
- package/dist/features/tester/seed-data/authored/content-discovery__parts-database.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +0 -167
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +0 -73
- package/dist/features/tester/seed-data/authored/content-discovery__search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__search.js +0 -363
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +0 -340
- package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.js +0 -88
- package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +0 -78
- package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.js +0 -76
- package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.js +0 -62
- package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.js +0 -163
- package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.js +0 -61
- package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.js +0 -89
- package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +0 -95
- package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.js +0 -191
- package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.js +0 -158
- package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.js +0 -82
- package/dist/features/tester/seed-data/authored/design-ux__footer-theme.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__footer-theme.js +0 -106
- package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.js +0 -88
- package/dist/features/tester/seed-data/authored/design-ux__general-design.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__general-design.js +0 -204
- package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.js +0 -301
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +0 -90
- package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +0 -85
- package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.js +0 -407
- package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.js +0 -88
- package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.js +0 -84
- package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +0 -214
- package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +0 -275
- package/dist/features/tester/seed-data/authored/index.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/index.js +0 -301
- package/dist/features/tester/seed-data/authored/page-wiring__data-loss.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +0 -125
- package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.js +0 -85
- package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.js +0 -92
- package/dist/features/tester/seed-data/authored/page-wiring__reachability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -115
- package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +0 -137
- package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +0 -263
- package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.js +0 -229
- package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.js +0 -325
- package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.js +0 -126
- package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.js +0 -141
- package/dist/features/tester/seed-data/authored/public-pages__store-tabs.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__store-tabs.js +0 -115
- package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +0 -253
- package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.js +0 -93
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +0 -3
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +0 -185
- package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.js +0 -82
- package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.js +0 -60
- package/dist/features/tester/seed-data/authored/selling__become-seller.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__become-seller.js +0 -117
- package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.js +0 -148
- package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.js +0 -108
- package/dist/features/tester/seed-data/authored/selling__listing-a-product.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +0 -274
- package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.js +0 -145
- package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +0 -336
- package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.js +0 -136
- package/dist/features/tester/seed-data/authored/selling__media-limits.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__media-limits.js +0 -135
- package/dist/features/tester/seed-data/authored/selling__product-upload-details.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +0 -155
- package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.js +0 -138
- package/dist/features/tester/seed-data/authored/selling__sectionised-forms.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__sectionised-forms.js +0 -191
- package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.js +0 -138
- package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.js +0 -106
- package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.js +0 -192
- package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.js +0 -109
- package/dist/features/tester/seed-data/authored/selling__seller-guide.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-guide.js +0 -34
- package/dist/features/tester/seed-data/authored/selling__seller-listing-types.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +0 -348
- package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +0 -87
- package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.js +0 -90
- package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.js +0 -85
- package/dist/features/tester/seed-data/authored/selling__seller-orders.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-orders.js +0 -213
- package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.js +0 -192
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +0 -77
- package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.js +0 -165
- package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.js +0 -116
- package/dist/features/tester/seed-data/authored/seo__canonical-and-host.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__canonical-and-host.js +0 -127
- package/dist/features/tester/seed-data/authored/seo__og-images.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__og-images.js +0 -107
- package/dist/features/tester/seed-data/authored/seo__page-metadata.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__page-metadata.js +0 -120
- package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +0 -105
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +0 -58
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +0 -284
- package/dist/features/tester/seed-data/index.d.ts +0 -2
- package/dist/features/tester/seed-data/index.js +0 -2
- package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +0 -7601
- package/dist/features/tester/seed-data/tester-responses-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/tester-responses-seed-data.js +0 -95
- package/dist/features/tester/seed-data/tester-window.d.ts +0 -25
- package/dist/features/tester/seed-data/tester-window.js +0 -66
- package/dist/seed/_helpers/brand-rows.d.ts +0 -35
- package/dist/seed/_helpers/brand-rows.js +0 -600
- package/dist/seed/_helpers/category-content-generated.d.ts +0 -24
- package/dist/seed/_helpers/category-content-generated.js +0 -1853
- package/dist/seed/_helpers/category-content.d.ts +0 -68
- package/dist/seed/_helpers/category-content.js +0 -731
- package/dist/seed/_helpers/category-forest.d.ts +0 -4
- package/dist/seed/_helpers/category-forest.js +0 -824
- package/dist/seed/_helpers/category-images-generated.d.ts +0 -57
- package/dist/seed/_helpers/category-images-generated.js +0 -618
- package/dist/seed/_helpers/category-models/chunk0.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk0.js +0 -2648
- package/dist/seed/_helpers/category-models/chunk1.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk1.js +0 -2318
- package/dist/seed/_helpers/category-models/chunk2.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk2.js +0 -2560
- package/dist/seed/_helpers/category-models/chunk3.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk3.js +0 -2196
- package/dist/seed/_helpers/category-models/chunk4.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk4.js +0 -1732
- package/dist/seed/_helpers/category-models.d.ts +0 -12
- package/dist/seed/_helpers/category-models.js +0 -45
- package/dist/seed/_helpers/category-names.d.ts +0 -54
- package/dist/seed/_helpers/category-names.js +0 -118
- package/dist/seed/_helpers/category-parts-glossary-map.d.ts +0 -1
- package/dist/seed/_helpers/category-parts-glossary-map.js +0 -2499
- package/dist/seed/_helpers/category-parts.d.ts +0 -9
- package/dist/seed/_helpers/category-parts.js +0 -15022
- package/dist/seed/_helpers/category-tree.d.ts +0 -27
- package/dist/seed/_helpers/category-tree.js +0 -119
- package/dist/seed/_helpers/character-features.d.ts +0 -10
- package/dist/seed/_helpers/character-features.js +0 -120
- package/dist/seed/_helpers/final-sale-fixtures.d.ts +0 -35
- package/dist/seed/_helpers/final-sale-fixtures.js +0 -61
- package/dist/seed/_helpers/franchise-rows.d.ts +0 -43
- package/dist/seed/_helpers/franchise-rows.js +0 -189
- package/dist/seed/_helpers/media.d.ts +0 -67
- package/dist/seed/_helpers/media.js +0 -172
- package/dist/seed/_helpers/part-colours-generated.d.ts +0 -18
- package/dist/seed/_helpers/part-colours-generated.js +0 -273
- package/dist/seed/_helpers/product-search-txt.d.ts +0 -18
- package/dist/seed/_helpers/product-search-txt.js +0 -23
- package/dist/seed/_helpers/search-txt-wrappers.d.ts +0 -26
- package/dist/seed/_helpers/search-txt-wrappers.js +0 -58
- package/dist/seed/addresses-seed-data.d.ts +0 -2
- package/dist/seed/addresses-seed-data.js +0 -78
- package/dist/seed/authenticity-knowledge-seed-data.d.ts +0 -78
- package/dist/seed/authenticity-knowledge-seed-data.js +0 -10729
- package/dist/seed/bey-products-seed-data.d.ts +0 -18
- package/dist/seed/bey-products-seed-data.js +0 -18011
- package/dist/seed/beys/chunk0.d.ts +0 -17
- package/dist/seed/beys/chunk0.js +0 -36733
- package/dist/seed/beys/chunk1.d.ts +0 -17
- package/dist/seed/beys/chunk1.js +0 -35728
- package/dist/seed/beys/chunk2.d.ts +0 -17
- package/dist/seed/beys/chunk2.js +0 -35857
- package/dist/seed/beys/chunk3.d.ts +0 -17
- package/dist/seed/beys/chunk3.js +0 -34476
- package/dist/seed/beys-seed-data.d.ts +0 -18
- package/dist/seed/beys-seed-data.js +0 -11
- package/dist/seed/bids-seed-data.d.ts +0 -2
- package/dist/seed/bids-seed-data.js +0 -206
- package/dist/seed/blog-posts-seed-data.d.ts +0 -6
- package/dist/seed/blog-posts-seed-data.js +0 -442
- package/dist/seed/carousel-slides-seed-data.d.ts +0 -2
- package/dist/seed/carousel-slides-seed-data.js +0 -411
- package/dist/seed/carousels-seed-data.d.ts +0 -2
- package/dist/seed/carousels-seed-data.js +0 -36
- package/dist/seed/cart-seed-data.d.ts +0 -2
- package/dist/seed/cart-seed-data.js +0 -241
- package/dist/seed/catalogue-seed-data.d.ts +0 -2
- package/dist/seed/catalogue-seed-data.js +0 -112
- package/dist/seed/categories-seed-data.d.ts +0 -3
- package/dist/seed/categories-seed-data.js +0 -816
- package/dist/seed/claimed-coupons-seed-data.d.ts +0 -2
- package/dist/seed/claimed-coupons-seed-data.js +0 -85
- package/dist/seed/coupon-usage-seed-data.d.ts +0 -9
- package/dist/seed/coupon-usage-seed-data.js +0 -55
- package/dist/seed/coupons-seed-data.d.ts +0 -2
- package/dist/seed/coupons-seed-data.js +0 -226
- package/dist/seed/defaults/categories.d.ts +0 -2
- package/dist/seed/defaults/categories.js +0 -12
- package/dist/seed/defaults/faqs.d.ts +0 -2
- package/dist/seed/defaults/faqs.js +0 -40
- package/dist/seed/events-seed-data.d.ts +0 -7
- package/dist/seed/events-seed-data.js +0 -482
- package/dist/seed/factories/address.factory.d.ts +0 -21
- package/dist/seed/factories/address.factory.js +0 -44
- package/dist/seed/factories/bid.factory.d.ts +0 -15
- package/dist/seed/factories/bid.factory.js +0 -33
- package/dist/seed/factories/blog-post.factory.d.ts +0 -15
- package/dist/seed/factories/blog-post.factory.js +0 -22
- package/dist/seed/factories/carousel.factory.d.ts +0 -11
- package/dist/seed/factories/carousel.factory.js +0 -17
- package/dist/seed/factories/cart.factory.d.ts +0 -25
- package/dist/seed/factories/cart.factory.js +0 -35
- package/dist/seed/factories/category.factory.d.ts +0 -11
- package/dist/seed/factories/category.factory.js +0 -16
- package/dist/seed/factories/coupon.factory.d.ts +0 -21
- package/dist/seed/factories/coupon.factory.js +0 -43
- package/dist/seed/factories/faq.factory.d.ts +0 -10
- package/dist/seed/factories/faq.factory.js +0 -15
- package/dist/seed/factories/notification.factory.d.ts +0 -18
- package/dist/seed/factories/notification.factory.js +0 -39
- package/dist/seed/factories/order.factory.d.ts +0 -20
- package/dist/seed/factories/order.factory.js +0 -20
- package/dist/seed/factories/payout.factory.d.ts +0 -21
- package/dist/seed/factories/payout.factory.js +0 -38
- package/dist/seed/factories/product.factory.d.ts +0 -27
- package/dist/seed/factories/product.factory.js +0 -80
- package/dist/seed/factories/review.factory.d.ts +0 -14
- package/dist/seed/factories/review.factory.js +0 -52
- package/dist/seed/factories/session.factory.d.ts +0 -15
- package/dist/seed/factories/session.factory.js +0 -31
- package/dist/seed/factories/store.factory.d.ts +0 -23
- package/dist/seed/factories/store.factory.js +0 -47
- package/dist/seed/factories/user.factory.d.ts +0 -19
- package/dist/seed/factories/user.factory.js +0 -56
- package/dist/seed/faq-seed-data.d.ts +0 -18
- package/dist/seed/faq-seed-data.js +0 -1956
- package/dist/seed/firestore-indexes.d.ts +0 -12
- package/dist/seed/firestore-indexes.js +0 -31
- package/dist/seed/grouped-listings-seed-data.d.ts +0 -2
- package/dist/seed/grouped-listings-seed-data.js +0 -283
- package/dist/seed/history-seed-data.d.ts +0 -12
- package/dist/seed/history-seed-data.js +0 -70
- package/dist/seed/homepage-sections-seed-data.d.ts +0 -2
- package/dist/seed/homepage-sections-seed-data.js +0 -1034
- package/dist/seed/index.d.ts +0 -100
- package/dist/seed/index.js +0 -115
- package/dist/seed/lottery-entries-seed-data.d.ts +0 -2
- package/dist/seed/lottery-entries-seed-data.js +0 -108
- package/dist/seed/manifest.d.ts +0 -16
- package/dist/seed/manifest.js +0 -235
- package/dist/seed/media-assets-seed-data.d.ts +0 -22
- package/dist/seed/media-assets-seed-data.js +0 -5593
- package/dist/seed/model-composition-seed-data.d.ts +0 -15
- package/dist/seed/model-composition-seed-data.js +0 -9032
- package/dist/seed/notifications-seed-data.d.ts +0 -2
- package/dist/seed/notifications-seed-data.js +0 -606
- package/dist/seed/offers-seed-data.d.ts +0 -2
- package/dist/seed/offers-seed-data.js +0 -398
- package/dist/seed/orders-seed-data.d.ts +0 -2
- package/dist/seed/orders-seed-data.js +0 -845
- package/dist/seed/part-glossary/chunk0.d.ts +0 -9
- package/dist/seed/part-glossary/chunk0.js +0 -35448
- package/dist/seed/part-glossary/chunk1.d.ts +0 -9
- package/dist/seed/part-glossary/chunk1.js +0 -40494
- package/dist/seed/part-glossary/chunk2.d.ts +0 -9
- package/dist/seed/part-glossary/chunk2.js +0 -51242
- package/dist/seed/part-glossary/chunk3.d.ts +0 -9
- package/dist/seed/part-glossary/chunk3.js +0 -53337
- package/dist/seed/part-glossary/chunk4.d.ts +0 -9
- package/dist/seed/part-glossary/chunk4.js +0 -51454
- package/dist/seed/part-glossary-seed-data.d.ts +0 -15
- package/dist/seed/part-glossary-seed-data.js +0 -25
- package/dist/seed/payouts-seed-data.d.ts +0 -2
- package/dist/seed/payouts-seed-data.js +0 -302
- package/dist/seed/product-features-seed-data.d.ts +0 -3
- package/dist/seed/product-features-seed-data.js +0 -366
- package/dist/seed/products-art-seed-data.d.ts +0 -2
- package/dist/seed/products-art-seed-data.js +0 -289
- package/dist/seed/products-auctions-seed-data.d.ts +0 -2
- package/dist/seed/products-auctions-seed-data.js +0 -475
- package/dist/seed/products-beyblade-x-seed-data.d.ts +0 -2
- package/dist/seed/products-beyblade-x-seed-data.js +0 -476
- package/dist/seed/products-catalogue/chunk0.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk0.js +0 -7262
- package/dist/seed/products-catalogue/chunk1.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk1.js +0 -7290
- package/dist/seed/products-catalogue/chunk10.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk10.js +0 -7290
- package/dist/seed/products-catalogue/chunk11.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk11.js +0 -7005
- package/dist/seed/products-catalogue/chunk12.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk12.js +0 -7002
- package/dist/seed/products-catalogue/chunk13.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk13.js +0 -7002
- package/dist/seed/products-catalogue/chunk14.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk14.js +0 -7002
- package/dist/seed/products-catalogue/chunk15.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk15.js +0 -7002
- package/dist/seed/products-catalogue/chunk16.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk16.js +0 -7002
- package/dist/seed/products-catalogue/chunk17.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk17.js +0 -7002
- package/dist/seed/products-catalogue/chunk18.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk18.js +0 -4398
- package/dist/seed/products-catalogue/chunk2.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk2.js +0 -7268
- package/dist/seed/products-catalogue/chunk3.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk3.js +0 -7264
- package/dist/seed/products-catalogue/chunk4.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk4.js +0 -7268
- package/dist/seed/products-catalogue/chunk5.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk5.js +0 -7258
- package/dist/seed/products-catalogue/chunk6.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk6.js +0 -7268
- package/dist/seed/products-catalogue/chunk7.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk7.js +0 -7311
- package/dist/seed/products-catalogue/chunk8.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk8.js +0 -7304
- package/dist/seed/products-catalogue/chunk9.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk9.js +0 -7309
- package/dist/seed/products-catalogue-seed-data.d.ts +0 -2
- package/dist/seed/products-catalogue-seed-data.js +0 -60
- package/dist/seed/products-classifieds-seed-data.d.ts +0 -7
- package/dist/seed/products-classifieds-seed-data.js +0 -435
- package/dist/seed/products-digital-codes-seed-data.d.ts +0 -7
- package/dist/seed/products-digital-codes-seed-data.js +0 -395
- package/dist/seed/products-live-items-seed-data.d.ts +0 -7
- package/dist/seed/products-live-items-seed-data.js +0 -269
- package/dist/seed/products-preorders-seed-data.d.ts +0 -2
- package/dist/seed/products-preorders-seed-data.js +0 -360
- package/dist/seed/products-prize-draws-seed-data.d.ts +0 -7
- package/dist/seed/products-prize-draws-seed-data.js +0 -427
- package/dist/seed/products-spares-seed-data.d.ts +0 -2
- package/dist/seed/products-spares-seed-data.js +0 -368
- package/dist/seed/products-standard-seed-data.d.ts +0 -2
- package/dist/seed/products-standard-seed-data.js +0 -632
- package/dist/seed/products-stickers-seed-data.d.ts +0 -2
- package/dist/seed/products-stickers-seed-data.js +0 -319
- package/dist/seed/reviews-seed-data.d.ts +0 -1
- package/dist/seed/reviews-seed-data.js +0 -185
- package/dist/seed/runner.d.ts +0 -2
- package/dist/seed/runner.js +0 -125
- package/dist/seed/scammers-seed-data.d.ts +0 -2
- package/dist/seed/scammers-seed-data.js +0 -235
- package/dist/seed/seed-market-config.d.ts +0 -48
- package/dist/seed/seed-market-config.js +0 -199
- package/dist/seed/seed-purpose.d.ts +0 -299
- package/dist/seed/seed-purpose.js +0 -440
- package/dist/seed/sessions-seed-data.d.ts +0 -3
- package/dist/seed/sessions-seed-data.js +0 -116
- package/dist/seed/shipments-seed-data.d.ts +0 -5
- package/dist/seed/shipments-seed-data.js +0 -185
- package/dist/seed/site-settings-seed-data.d.ts +0 -2
- package/dist/seed/site-settings-seed-data.js +0 -1069
- package/dist/seed/store-addresses-seed-data.d.ts +0 -18
- package/dist/seed/store-addresses-seed-data.js +0 -71
- package/dist/seed/store-extensions-seed-data.d.ts +0 -11
- package/dist/seed/store-extensions-seed-data.js +0 -292
- package/dist/seed/stores-seed-data.d.ts +0 -6
- package/dist/seed/stores-seed-data.js +0 -242
- package/dist/seed/support-tickets-seed-data.d.ts +0 -16
- package/dist/seed/support-tickets-seed-data.js +0 -239
- package/dist/seed/tax-codes-seed-data.d.ts +0 -34
- package/dist/seed/tax-codes-seed-data.js +0 -100
- package/dist/seed/test-data-ttl.d.ts +0 -29
- package/dist/seed/test-data-ttl.js +0 -31
- package/dist/seed/test-utils.d.ts +0 -49
- package/dist/seed/test-utils.js +0 -110
- package/dist/seed/types.d.ts +0 -89
- package/dist/seed/types.js +0 -15
- package/dist/seed/users-seed-data.d.ts +0 -2
- package/dist/seed/users-seed-data.js +0 -597
- package/dist/seed/wishlists-seed-data.d.ts +0 -12
- package/dist/seed/wishlists-seed-data.js +0 -54
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: Authored six-part procedures for the admin/bundles page.
|
|
3
|
-
* WHAT: 4 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
|
-
* 🛑 A BUNDLE IS A CATEGORY ROW, not a listing type, and its member list is
|
|
10
|
-
* MIRRORED onto the bundle for index-friendly reads. Every public reader consults
|
|
11
|
-
* that mirror, so a write path that updates the rule and forgets the mirror
|
|
12
|
-
* produces a bundle that renders as "0 items" with no error anywhere.
|
|
13
|
-
*
|
|
14
|
-
* 🛑 THREE MEMBERS MINIMUM, AND EVERY CASE HERE ASKED FOR TWO (fixed 2026-09-29).
|
|
15
|
-
*
|
|
16
|
-
* BUNDLE_MIN_ITEMS is 3 (bundle-config.ts:10) and bundle-form.ts's superRefine
|
|
17
|
-
* enforces it with "Select at least 3 products (currently 2)." So the create
|
|
18
|
-
* case could never save, and the two cases that READ that bundle were testing
|
|
19
|
-
* something which had never been created — three verdicts of "could not test"
|
|
20
|
-
* for a rule the editor states on its own field label.
|
|
21
|
-
*
|
|
22
|
-
* Every member is now a real seeded id with its real price, so the undiscounted
|
|
23
|
-
* total is arithmetic a tester can check rather than a number to trust.
|
|
24
|
-
*
|
|
25
|
-
* 🛑 EVERY STANDARD LISTING IN THE CATALOGUE BELONGS TO store-beyblade-arena.
|
|
26
|
-
* The only other seller with stock is store-letitrip-official, whose six
|
|
27
|
-
* listings are all prize draws — so the cross-store refusal is exercised with
|
|
28
|
-
* one of those. The guard reads storeId and does not care about listing type.
|
|
29
|
-
* (CLAUDE.md claims product-tester-crossstore-a/b are seeded for exactly this;
|
|
30
|
-
* they are not, anywhere — recorded in OUTOFSCOPE.)
|
|
31
|
-
*
|
|
32
|
-
* 🛑 THE SLUG IS DERIVED AND THEREFORE KNOWABLE: the route slugifies the name
|
|
33
|
-
* and prefixes "bundle-", so 'QA Bundle admin-create' is always
|
|
34
|
-
* /bundles/bundle-qa-bundle-admin-create. The cases used to say "/bundles/{slug}"
|
|
35
|
-
* without saying how to learn it.
|
|
36
|
-
*
|
|
37
|
-
* audit-tester-created-id: bundle-qa-bundle-admin-create — created by case 1 step 2
|
|
38
|
-
* and visited by cases 1-3. It is not a seed fixture and must not be one: the point
|
|
39
|
-
* is to exercise the CREATE path, and a pre-seeded bundle would skip it.
|
|
40
|
-
*
|
|
41
|
-
* @tag domain:tester
|
|
42
|
-
* @tag layer:seed
|
|
43
|
-
* @tag pattern:none
|
|
44
|
-
* @tag access:server-only
|
|
45
|
-
* @tag consumers:seed-data/authored/index.ts
|
|
46
|
-
* @tag sideEffects:none
|
|
47
|
-
*/
|
|
48
|
-
export const authored = {
|
|
49
|
-
"checklist-admin-bundles-bundle-create": {
|
|
50
|
-
roles: ["admin", "guest"],
|
|
51
|
-
startPage: "/admin/bundles",
|
|
52
|
-
steps: [
|
|
53
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
54
|
-
"Open /admin/bundles/new and set Name to 'QA Bundle admin-create'.",
|
|
55
|
-
"Leave the member-source select on its static option, add exactly TWO members — product-beyblade-burst-valkyrie and product-beyblade-x-wizard-arrow — set 'Bundle price (₹)' to 1500, and try to save.",
|
|
56
|
-
"Read the refusal: the minimum is three, and the field label states the range.",
|
|
57
|
-
"Add product-beyblade-x-knife-shinobi (₹949) as the third member and save.",
|
|
58
|
-
"RELOAD the editor and read the members, the price and the original total.",
|
|
59
|
-
"Open /bundles/bundle-qa-bundle-admin-create — the slug is the name slugified under a 'bundle-' prefix — and read the members, price and discount badge.",
|
|
60
|
-
"Back in the editor add prizedraw-beyblade-mystery-box, which belongs to store-letitrip-official, as a fourth member, save, and read what happens.",
|
|
61
|
-
"Remove that fourth member and save, leaving the bundle at its three arena members.",
|
|
62
|
-
],
|
|
63
|
-
inputs: {
|
|
64
|
-
name: "QA Bundle admin-create",
|
|
65
|
-
member1: "product-beyblade-burst-valkyrie",
|
|
66
|
-
member2: "product-beyblade-x-wizard-arrow",
|
|
67
|
-
member3: "product-beyblade-x-knife-shinobi",
|
|
68
|
-
crossStoreMember: "prizedraw-beyblade-mystery-box",
|
|
69
|
-
bundlePrice: 1500,
|
|
70
|
-
memberTotal: 2847,
|
|
71
|
-
},
|
|
72
|
-
expectedBehaviour: "A bundle holds at least three members, stores its locked price, and derives the members' undiscounted total SERVER-SIDE — the editor never sends that total, and it is what drives the discount badge, so a bundle without it shows a price and no saving. Members must come from one store: the store id is the order-splitting and payout key, so a cross-store bundle would produce an order belonging to one seller while holding another seller's products.",
|
|
73
|
-
expectedUiState: "The two-member save is refused inline with 'Select at least 3 products (currently 2).' — not a silent no-op and not a generic banner. With the third added, the reload lists all three, a bundle price of ₹1,500 against an original total of ₹2,847, and the public page shows the three members with a discount badge of roughly 47% off. The cross-store save is refused with a message naming how many sellers the members span, not a 500.",
|
|
74
|
-
expectedData: { memberCount: 3, bundlePrice: 1500, bundleOriginalTotal: 2847 },
|
|
75
|
-
endResult: "The bundle survives with its three arena members — the next two cases read it. The cross-store member is NOT part of it.",
|
|
76
|
-
},
|
|
77
|
-
"checklist-admin-bundles-bundle-stock-sync": {
|
|
78
|
-
roles: ["admin", "seller", "guest"],
|
|
79
|
-
startPage: "/admin/bundles",
|
|
80
|
-
steps: [
|
|
81
|
-
"Open /bundles/bundle-qa-bundle-admin-create signed out and note that it offers purchase.",
|
|
82
|
-
"Sign in as tyson@beybladearena.in / TempPass123!, open /store/products, edit product-beyblade-x-wizard-arrow, and set its stock quantity from 12 to 0.",
|
|
83
|
-
"Reload /bundles/bundle-qa-bundle-admin-create and read its availability.",
|
|
84
|
-
"Sign in as admin@letitrip.in / TempPass123!, open /admin/bundles and read the bundle's row.",
|
|
85
|
-
"Sign back in as tyson@beybladearena.in and set that product's stock back to 12.",
|
|
86
|
-
"Reload /bundles/bundle-qa-bundle-admin-create and read its availability again.",
|
|
87
|
-
],
|
|
88
|
-
inputs: { member: "product-beyblade-x-wizard-arrow", stockBefore: 12, stockDuring: 0 },
|
|
89
|
-
expectedBehaviour: "A bundle is all-or-nothing, so one member going out of stock makes the whole bundle unavailable. That is kept in sync by a hook on the member's stock change rather than computed per request — which is what makes the reverse direction worth testing too: restoring the stock must restore the bundle.",
|
|
90
|
-
expectedUiState: "With the member at zero the bundle reads as unavailable and offers no purchase control. After the stock is restored it becomes purchasable again. A bundle still offering purchase with a zero-stock member is the failure; so is one that stays unavailable after the stock returns.",
|
|
91
|
-
expectedData: { stockAfterRestore: 12 },
|
|
92
|
-
endResult: "The member's stock is back at 12 and the bundle is purchasable. Both directions matter — a sync that only ever disables is half a sync, and leaving the stock at zero silently breaks the next case.",
|
|
93
|
-
},
|
|
94
|
-
"checklist-admin-bundles-bundle-edit-delete": {
|
|
95
|
-
roles: ["admin", "guest"],
|
|
96
|
-
startPage: "/admin/bundles",
|
|
97
|
-
steps: [
|
|
98
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
99
|
-
"Open /admin/bundles, open 'QA Bundle admin-create' for editing, and write down every field — name, description, price, the three members, cover image, brand and active.",
|
|
100
|
-
"Change ONLY 'Bundle price (₹)' to 1400 and save.",
|
|
101
|
-
"RELOAD the editor and compare every field against what was written down.",
|
|
102
|
-
"SWAP one member rather than dropping one: remove product-beyblade-x-knife-shinobi (₹949), add product-beyblade-burst-regalia-genesis (₹1,399), keeping three. Save, RELOAD, and read the member list and the original total.",
|
|
103
|
-
"Open /bundles/bundle-qa-bundle-admin-create and read the members and the discount badge.",
|
|
104
|
-
"Back in the editor click the delete control, confirm, and check the bundle is gone from /admin/bundles and from /bundles.",
|
|
105
|
-
],
|
|
106
|
-
inputs: {
|
|
107
|
-
priceBefore: 1500,
|
|
108
|
-
priceAfter: 1400,
|
|
109
|
-
memberRemoved: "product-beyblade-x-knife-shinobi",
|
|
110
|
-
memberAdded: "product-beyblade-burst-regalia-genesis",
|
|
111
|
-
totalBefore: 2847,
|
|
112
|
-
totalAfter: 3297,
|
|
113
|
-
},
|
|
114
|
-
expectedBehaviour: "An edit writes back only what changed, and changing the member list recomputes the undiscounted total server-side — a stale total makes the discount badge claim a saving that no longer exists. A SWAP rather than a bare removal is what makes this readable: the count stays at the legal minimum of three while the total must move, so a total that did not change cannot be excused as the member rule having been left alone.",
|
|
115
|
-
expectedUiState: "After the price edit only the price differs — every other field matches what was written down. After the swap the list holds three members and the original total reads ₹3,297 rather than ₹2,847, so the badge's saving shrinks. After the delete the bundle is absent from /admin/bundles and /bundles, and its own URL no longer renders it.",
|
|
116
|
-
expectedData: { memberCountAfterSwap: 3, bundleOriginalTotalAfterSwap: 3297 },
|
|
117
|
-
endResult: "The bundle is deleted. A public page still rendering a deleted bundle is a cache or projection failure worth naming.",
|
|
118
|
-
},
|
|
119
|
-
"checklist-admin-bundles-bundle-brand-picker": {
|
|
120
|
-
roles: ["admin", "guest"],
|
|
121
|
-
startPage: "/admin/bundles",
|
|
122
|
-
steps: [
|
|
123
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
124
|
-
"Open /admin/bundles/new, set Name to 'QA Bundle brand-picker', and add THREE members from Beyblade Arena — product-beyblade-burst-valkyrie, product-beyblade-x-wizard-arrow and product-beyblade-x-knife-shinobi. Fewer than three is refused.",
|
|
125
|
-
"Set 'Bundle price (₹)' to 2000.",
|
|
126
|
-
"Find the 'Brand' select and read what it offers.",
|
|
127
|
-
"Select Beyblade and save.",
|
|
128
|
-
"RELOAD the editor and read the brand.",
|
|
129
|
-
"Open /brands/brand-beyblade signed out and find the bundle in its Bundles tab.",
|
|
130
|
-
"Back in the editor set Brand to 'No specific brand', save, reload the brand page, and check the bundle has left that tab.",
|
|
131
|
-
"Delete the bundle.",
|
|
132
|
-
],
|
|
133
|
-
inputs: {
|
|
134
|
-
name: "QA Bundle brand-picker",
|
|
135
|
-
brand: "Beyblade",
|
|
136
|
-
clearedTo: "No specific brand",
|
|
137
|
-
bundlePrice: 2000,
|
|
138
|
-
},
|
|
139
|
-
expectedBehaviour: "A bundle's own brand tag is a DIFFERENT field from any brand filter inside a dynamic member rule — the tag says which brand the bundle belongs to regardless of how its members were resolved, and it is what the brand page's Bundles tab filters on. Not every bundle needs one; a genuinely cross-brand bundle leaves it unset.",
|
|
140
|
-
expectedUiState: "The select offers the real seeded brands plus a 'No specific brand' option — not a free-text box and not an empty list. With Beyblade set the bundle appears in that brand's Bundles tab; with it cleared it leaves. Worth watching: two of the three members are tagged Takara-Tomy rather than Beyblade, so a bundle still appearing under Beyblade after the tag is cleared means the tab is filtering on the MEMBERS instead of the tag.",
|
|
141
|
-
expectedData: { brandAfterReload: "Beyblade" },
|
|
142
|
-
endResult: "The bundle is deleted by the final step, so /brands/brand-beyblade's Bundles tab holds only the seeded bundles again.",
|
|
143
|
-
},
|
|
144
|
-
};
|
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: Authored six-part procedures for the admin/buyer-data-admin page.
|
|
3
|
-
* WHAT: 12 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
|
-
* 🛑 THIS PAGE IS BUYER DATA, so two questions run through every case: can the
|
|
10
|
-
* admin READ a row before acting on it, and is more PII exposed than the task
|
|
11
|
-
* needs. Several of these listings were dead ends — a row you could see and never
|
|
12
|
-
* open — and two of them are dead ends for a legitimate reason: their list query
|
|
13
|
-
* returns a per-user summary only, so the honest fix was to route to the owning
|
|
14
|
-
* user rather than widen the payload.
|
|
15
|
-
*
|
|
16
|
-
* 🛑 /admin/addresses IS AN OWNER-SCOPED LOOKUP, NOT A LISTING (fixed 2026-09-29).
|
|
17
|
-
*
|
|
18
|
-
* It renders `AdminAddressBookView`: an 'Owner type' select (user | store), an
|
|
19
|
-
* 'Owner ID' text field placeholdered `user-...` / `store-...`, and a Search
|
|
20
|
-
* button. There are no columns, no sort dropdown, no filter drawer and no
|
|
21
|
-
* free-text search of addresses — and nothing at all is shown until an owner id
|
|
22
|
-
* is searched. Three cases here described a listing with owner-type filters and
|
|
23
|
-
* a sort default; none of that exists on this page.
|
|
24
|
-
*
|
|
25
|
-
* The banned-address queue those descriptions actually fit is a DIFFERENT
|
|
26
|
-
* route, `ROUTES.ADMIN.BANNED_ADDRESSES` ("Banned Addresses"), backed by
|
|
27
|
-
* `AdminAddressesView` — similar name, different page. Worth stating because
|
|
28
|
-
* reading the plausibly-named component instead of following the route is how
|
|
29
|
-
* this was nearly mis-audited.
|
|
30
|
-
*
|
|
31
|
-
* Its editor DOES exist, at /admin/addresses/new and /admin/addresses/[id]/edit,
|
|
32
|
-
* and per its own header the postal code is now validated per country by schema
|
|
33
|
-
* rather than by `length === 6` — so 'abcdef' should be REJECTED, and the CRUD
|
|
34
|
-
* case expects a pass.
|
|
35
|
-
*
|
|
36
|
-
* @tag domain:tester
|
|
37
|
-
* @tag layer:seed
|
|
38
|
-
* @tag pattern:none
|
|
39
|
-
* @tag access:server-only
|
|
40
|
-
* @tag consumers:seed-data/authored/index.ts
|
|
41
|
-
* @tag sideEffects:none
|
|
42
|
-
*/
|
|
43
|
-
export const authored = {
|
|
44
|
-
"checklist-admin-buyer-data-admin-carts-admin-view": {
|
|
45
|
-
roles: ["admin"],
|
|
46
|
-
startPage: "/admin/carts",
|
|
47
|
-
steps: [
|
|
48
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
49
|
-
"Open /admin/carts and read every column.",
|
|
50
|
-
"Check each row identifies whose cart it is and how many items it holds.",
|
|
51
|
-
"Read whether guest carts are distinguishable from signed-in ones.",
|
|
52
|
-
"Use every filter and sort offered, confirming each changes the rows.",
|
|
53
|
-
"Search zzzznope and read the count.",
|
|
54
|
-
],
|
|
55
|
-
inputs: { nonsenseQuery: "zzzznope" },
|
|
56
|
-
expectedBehaviour: "The list identifies each cart and its size. A cart document is keyed on the user id for signed-in buyers and on a session id for guests, so both kinds appear and the row has to say which it is — an unattributed row is a cart nobody can act on.",
|
|
57
|
-
expectedUiState: "Rows show an owner and an item count. Guest carts are marked as such rather than showing a blank owner. Filters and sorts change the rows and 'zzzznope' returns none.",
|
|
58
|
-
expectedData: { nonsenseResultCount: 0 },
|
|
59
|
-
endResult: "Read-only; nothing persists beyond the URL.",
|
|
60
|
-
},
|
|
61
|
-
"checklist-admin-buyer-data-admin-carts-admin-row-opens-items": {
|
|
62
|
-
roles: ["admin"],
|
|
63
|
-
startPage: "/admin/carts",
|
|
64
|
-
steps: [
|
|
65
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
66
|
-
"Open /admin/carts and find a row whose item count is greater than one.",
|
|
67
|
-
"Click the row and read what opens — it should be a 'Cart Details' modal.",
|
|
68
|
-
"Read its badge: a guest cart reads 'Guest' and a signed-in one reads 'Authenticated'.",
|
|
69
|
-
"Read its fields — Session or User, Last updated, Cart ID.",
|
|
70
|
-
"Read the 'Items in cart' section and check each item carries a title, a quantity and a price.",
|
|
71
|
-
"Close and open a different row the same way.",
|
|
72
|
-
],
|
|
73
|
-
inputs: { modalTitle: "Cart Details", itemsHeading: "Items in cart" },
|
|
74
|
-
expectedBehaviour: "A row opens to show the cart's items. The list already computes the item count from the items array and then discards it, so the data needed to render the detail is present at list time — this is a UI wiring gap rather than a missing query, and the fix is a detail view rather than a wider payload.",
|
|
75
|
-
expectedUiState: "Clicking a row opens the 'Cart Details' modal showing each item with its title, quantity and price under 'Items in cart'. A row that does nothing on click, or opens a modal whose items section is empty for a cart the list counted as non-empty, is the dead-end failure this page family exists to close.",
|
|
76
|
-
endResult: "Read-only; close without acting.",
|
|
77
|
-
},
|
|
78
|
-
"checklist-admin-buyer-data-admin-wishlists-admin-view": {
|
|
79
|
-
roles: ["admin"],
|
|
80
|
-
startPage: "/admin/wishlists",
|
|
81
|
-
steps: [
|
|
82
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
83
|
-
"Open /admin/wishlists and read every column.",
|
|
84
|
-
"Check each row names the owning user and the number of items.",
|
|
85
|
-
"Read whether the item titles themselves are shown in the list.",
|
|
86
|
-
"Use every filter and sort offered.",
|
|
87
|
-
"Search zzzznope and read the count.",
|
|
88
|
-
],
|
|
89
|
-
inputs: { nonsenseQuery: "zzzznope" },
|
|
90
|
-
expectedBehaviour: "One wishlist exists per user, so the list is one row per owner with a count. The list query deliberately returns a per-user SUMMARY rather than every item — widening it to carry each wishlist's contents would load unbounded data on a page that only needs counts.",
|
|
91
|
-
expectedUiState: "Rows name the owner and the item count. Item titles are not expected in the list itself. Filters change the rows and 'zzzznope' returns none.",
|
|
92
|
-
endResult: "Read-only; nothing persists beyond the URL.",
|
|
93
|
-
},
|
|
94
|
-
"checklist-admin-buyer-data-admin-wishlists-history-admin-row-opens-user": {
|
|
95
|
-
roles: ["admin"],
|
|
96
|
-
startPage: "/admin/wishlists",
|
|
97
|
-
steps: [
|
|
98
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
99
|
-
"Open /admin/wishlists and click a row.",
|
|
100
|
-
"Read the URL it lands on — it should be that row's owner under /admin/users/{userId}, not a wishlist detail.",
|
|
101
|
-
"Go back, open /admin/history, and click a row there.",
|
|
102
|
-
"Read the URL that lands on.",
|
|
103
|
-
"From the user page reached, check the wishlist or history is readable in context.",
|
|
104
|
-
],
|
|
105
|
-
inputs: { expectedDestination: "/admin/users/{userId}" },
|
|
106
|
-
expectedBehaviour: "These two rows route to the owning user rather than to a per-record detail, and that is the correct answer rather than a shortcut: their list queries return only a per-user summary, so a detail view would have to fetch separately, and the user page is where the rest of that person's data already is.",
|
|
107
|
-
expectedUiState: "Both rows navigate to /admin/users/{userId} for that row's owner. Neither is inert. From there the wishlist or history contents are reachable. A row that does nothing at all is the failure; a row routing to the user is a pass. A row whose owner id is missing, so the click does nothing, is also a failure — the navigation is guarded on it.",
|
|
108
|
-
endResult: "Read-only; close without acting.",
|
|
109
|
-
},
|
|
110
|
-
"checklist-admin-buyer-data-admin-history-admin-view": {
|
|
111
|
-
roles: ["admin"],
|
|
112
|
-
startPage: "/admin/history",
|
|
113
|
-
steps: [
|
|
114
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
115
|
-
"Open /admin/history and read every column.",
|
|
116
|
-
"Check each row names the owning user and the number of entries.",
|
|
117
|
-
"Read the highest entry count in the list.",
|
|
118
|
-
"Use every filter and sort offered.",
|
|
119
|
-
"Search zzzznope and read the count.",
|
|
120
|
-
],
|
|
121
|
-
inputs: { nonsenseQuery: "zzzznope", historyCap: 50 },
|
|
122
|
-
expectedBehaviour: "History is one document per user, capped at fifty entries with the oldest silently evicted. So no row should report more than fifty — a higher count means the cap is not being applied on write and the document grows without bound.",
|
|
123
|
-
expectedUiState: "Rows name the owner and an entry count, and no count exceeds fifty. Filters change the rows and 'zzzznope' returns none.",
|
|
124
|
-
expectedData: { maxEntryCount: 50 },
|
|
125
|
-
endResult: "Read-only; nothing persists beyond the URL.",
|
|
126
|
-
},
|
|
127
|
-
"checklist-admin-buyer-data-admin-notifications-admin-view": {
|
|
128
|
-
roles: ["admin"],
|
|
129
|
-
startPage: "/admin/notifications",
|
|
130
|
-
steps: [
|
|
131
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
132
|
-
"Open /admin/notifications and read every column.",
|
|
133
|
-
"Read every type filter offered and select each, noting any that returns nothing.",
|
|
134
|
-
"For each empty filter, check the unfiltered list for rows of that type.",
|
|
135
|
-
"Open a row menu's 'View details' action and read the full body and payload in the modal it opens.",
|
|
136
|
-
"Read whether the recipient is identified.",
|
|
137
|
-
"Search zzzznope and read the count.",
|
|
138
|
-
],
|
|
139
|
-
inputs: { nonsenseQuery: "zzzznope" },
|
|
140
|
-
expectedBehaviour: "Every type chip names a value notifications actually carry, and the union has THIRTY values today. The type union is a single runtime list, and for a long time the filters were built from a nine-value copy — most types were unfilterable and two could not be allow-listed for any channel at all. Count the chips against thirty rather than against the seeded data, which covers only ten of them.",
|
|
141
|
-
expectedUiState: "Every type filter returns its own rows or is empty with none unfiltered either. A row opens to show the full body and payload rather than only the title. 'zzzznope' returns none. A chip MISSING for a real type is as much a finding as a chip that matches nothing — record the count you saw.",
|
|
142
|
-
expectedData: { nonsenseResultCount: 0, typeChipCount: 30 },
|
|
143
|
-
endResult: "Read-only. A chip empty while matching rows sit unfiltered is the finding, named by type.",
|
|
144
|
-
},
|
|
145
|
-
"checklist-admin-buyer-data-admin-reviews-admin-view": {
|
|
146
|
-
roles: ["admin"],
|
|
147
|
-
startPage: "/admin/reviews",
|
|
148
|
-
steps: [
|
|
149
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
150
|
-
"Open /admin/reviews and read every column, including any review images. Roughly 15-20% of the 79 seeded reviews carry one.",
|
|
151
|
-
"Check each image tile renders rather than showing a placeholder icon.",
|
|
152
|
-
"Read the search box's placeholder for how it matches.",
|
|
153
|
-
"Type a reviewer's FULL name and read the results.",
|
|
154
|
-
"Type only the first half and read the results.",
|
|
155
|
-
"Search zzzznope and read the count.",
|
|
156
|
-
"Open a review and read its full body, rating and any seller response.",
|
|
157
|
-
],
|
|
158
|
-
inputs: { nonsenseQuery: "zzzznope" },
|
|
159
|
-
expectedBehaviour: "Reviewer names are PII-encrypted at rest, so they match exactly through a blind index and a partial cannot match — by design rather than omission, which is why the box must SAY so. Review images are stored as plain URL strings; a renderer expecting objects reads undefined off each and falls back to a placeholder, which makes every review photo vanish at once.",
|
|
160
|
-
expectedUiState: "Image tiles render real photos rather than placeholder icons. The full name returns rows, the partial returns none, and the box states that matching is exact. 'zzzznope' returns none.",
|
|
161
|
-
expectedData: { partialMatchCount: 0 },
|
|
162
|
-
endResult: "Read-only; nothing persists beyond the URL.",
|
|
163
|
-
},
|
|
164
|
-
"checklist-admin-buyer-data-admin-store-addresses-admin": {
|
|
165
|
-
roles: ["admin"],
|
|
166
|
-
startPage: "/admin/addresses",
|
|
167
|
-
steps: [
|
|
168
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
169
|
-
"Open /admin/addresses and read what the page offers before any input — an 'Owner type' select, an 'Owner ID' field and a Search button.",
|
|
170
|
-
"Read whether anything is listed before a search is run.",
|
|
171
|
-
"Leave Owner type on 'user', enter user-admin-letitrip, and click Search.",
|
|
172
|
-
"Read every field shown for each address returned, and record exactly how much of the name and phone number is displayed.",
|
|
173
|
-
"Switch Owner type to 'store', enter store-beyblade-arena, and Search.",
|
|
174
|
-
"Enter zzzznope as the Owner ID and Search.",
|
|
175
|
-
],
|
|
176
|
-
inputs: {
|
|
177
|
-
userOwner: "user-admin-letitrip",
|
|
178
|
-
storeOwner: "store-beyblade-arena",
|
|
179
|
-
nonsenseOwner: "zzzznope",
|
|
180
|
-
},
|
|
181
|
-
expectedBehaviour: "Both buyer delivery and store pickup addresses live in one collection discriminated by owner type, and this page reaches them one OWNER at a time rather than as a browsable list — which is why the owner type is an input rather than a filter. Names, phones and street lines are PII-encrypted at rest, so how much this page decrypts and displays is worth recording rather than assuming.",
|
|
182
|
-
expectedUiState: "Before a search the page lists nothing, which is correct here rather than an empty-state bug. A searched owner returns their addresses; a nonsense owner id returns 'No addresses found for this owner.' rather than an error or the full collection. Record exactly how much of each name and phone is shown.\n\nNote what this page is NOT: there are no columns, no sort dropdown, no filter drawer and no free-text address search. A case expecting those is describing the Banned Addresses queue, which is a different route.",
|
|
183
|
-
expectedData: { listedBeforeSearch: 0, nonsenseOwnerResultCount: 0 },
|
|
184
|
-
endResult: "Read-only; nothing persists beyond the URL.",
|
|
185
|
-
},
|
|
186
|
-
"checklist-admin-buyer-data-admin-store-addresses-admin-row-opens-detail": {
|
|
187
|
-
roles: ["admin"],
|
|
188
|
-
startPage: "/admin/addresses",
|
|
189
|
-
steps: [
|
|
190
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
191
|
-
"Open /admin/addresses, search Owner type 'store' with store-beyblade-arena, and read the card rendered for each address.",
|
|
192
|
-
"Record which fields the card shows — label, full name, street, city, state, postal code, phone — and specifically whether the LANDMARK appears.",
|
|
193
|
-
"Check whether the card is openable at all: a link, a click target or an edit affordance leading to /admin/addresses/{id}/edit.",
|
|
194
|
-
"Search Owner type 'user' with user-admin-letitrip and read the same for a buyer-owned address.",
|
|
195
|
-
"Open /admin/addresses/{one of those ids}/edit directly and compare the fields there against what the card showed.",
|
|
196
|
-
],
|
|
197
|
-
inputs: { storeOwner: "store-beyblade-arena", userOwner: "user-admin-letitrip" },
|
|
198
|
-
expectedBehaviour: "An admin can read every stored field of an address, for both owner types. The landmark is the field worth naming: a form that cannot express it sends undefined and overwrites, so a surface that never shows it hides whether the value survived.",
|
|
199
|
-
expectedUiState: "Both owner types render cards carrying the stored fields. The editor at /admin/addresses/{id}/edit shows every field including the landmark. Record any field the editor has and the card does not — a card that omits the landmark while the editor can write it is the gap this case is for.",
|
|
200
|
-
endResult: "Read-only; close the editor without saving.",
|
|
201
|
-
},
|
|
202
|
-
"checklist-admin-buyer-data-admin-addresses-crud-admin": {
|
|
203
|
-
roles: ["admin"],
|
|
204
|
-
startPage: "/admin/addresses",
|
|
205
|
-
steps: [
|
|
206
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
207
|
-
"Open /admin/addresses/new and create one for Owner type 'user', Owner ID user-admin-letitrip: label 'QA Address admin-crud', '13 Test Lane', Indore, Madhya Pradesh, 452010, landmark 'Beside the arena'.",
|
|
208
|
-
"Save, then find it again via /admin/addresses searching that owner, open /admin/addresses/{its id}/edit, and read every field including the landmark.",
|
|
209
|
-
"Edit ONLY the street to '14 Test Lane', save, REOPEN the editor, and read every field again.",
|
|
210
|
-
"Type abcdef into the postal code field and attempt to save.",
|
|
211
|
-
"Read where the error appears — on the field, or as a banner, or not at all.",
|
|
212
|
-
"Restore the postal code, then delete the address and search that owner again to confirm it is gone.",
|
|
213
|
-
],
|
|
214
|
-
inputs: {
|
|
215
|
-
name: "QA Address admin-crud",
|
|
216
|
-
streetBefore: "13 Test Lane",
|
|
217
|
-
streetAfter: "14 Test Lane",
|
|
218
|
-
landmark: "Beside the arena",
|
|
219
|
-
badPostcode: "abcdef",
|
|
220
|
-
},
|
|
221
|
-
expectedBehaviour: "Create, edit and delete persist and an edit to one field leaves the rest alone. The postal code is validated by FORMAT rather than by length: a length-only rule accepts 'abcdef' as a valid six-character Indian PIN code, and one admin route did exactly that.",
|
|
222
|
-
expectedUiState: "After each reopen every value holds, including the landmark after the street edit — a landmark that vanishes when only the street changed is the overwrite this case is for. 'abcdef' is rejected ON THE POSTAL CODE FIELD before any request is sent, not returned as a server error with nothing marked. This half is expected to PASS: the form validates per country by schema now, where it once checked only that the value was six characters long — which 'abcdef' satisfies.",
|
|
223
|
-
endResult: "The address is deleted by the final step.",
|
|
224
|
-
},
|
|
225
|
-
"checklist-admin-buyer-data-admin-stores-admin-view": {
|
|
226
|
-
roles: ["admin"],
|
|
227
|
-
startPage: "/admin/stores",
|
|
228
|
-
steps: [
|
|
229
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
230
|
-
"Open /admin/stores and read every column and status chip.",
|
|
231
|
-
"Select each status chip in turn and read the rows returned — the seed carries store-blader-bazaar as pending and store-vintage-vault-co as suspended, so neither chip should be empty.",
|
|
232
|
-
"Open store-letitrip-official — verified and featured — for editing and write down its verified flag, its featured flag, its capabilities and its admin notes.",
|
|
233
|
-
"Change ONLY its description and save.",
|
|
234
|
-
"RELOAD and read all four of those back.",
|
|
235
|
-
"Restore the description.",
|
|
236
|
-
],
|
|
237
|
-
inputs: {
|
|
238
|
-
store: "store-letitrip-official",
|
|
239
|
-
pendingStore: "store-blader-bazaar",
|
|
240
|
-
suspendedStore: "store-vintage-vault-co",
|
|
241
|
-
},
|
|
242
|
-
expectedBehaviour: "🛑 This is the highest-severity case on the page. The list serializer once omitted the verified, featured, capabilities and notes fields, so the editor seeded them as undefined and the save handler sent those defaults back unconditionally — saving ANY unrelated field silently un-verified the store and reset its capabilities. The seed carries a pending and a suspended store precisely so those chips are not permanently empty.",
|
|
243
|
-
expectedUiState: "Every status chip returns rows; the pending and suspended chips have a seeded store each. After the description save and reload the store is STILL verified, still featured, its capabilities are unchanged and its admin notes are intact. A store that quietly lost its verified badge is the failure, and the save reported success. This is expected to PASS — the list serializer now carries all five of those fields — but it is the case worth re-running after any change to that route, because the failure is silent and destructive.",
|
|
244
|
-
expectedData: { verifiedPreserved: true, featuredPreserved: true, capabilitiesPreserved: true },
|
|
245
|
-
endResult: "The description is restored and the store's flags are as they were. Re-read every flag after the reload, not just the one that was edited.",
|
|
246
|
-
},
|
|
247
|
-
"checklist-admin-buyer-data-admin-admin-store-detail-page": {
|
|
248
|
-
roles: ["admin"],
|
|
249
|
-
startPage: "/admin/stores",
|
|
250
|
-
steps: [
|
|
251
|
-
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
252
|
-
"Open /admin/stores and open store-beyblade-arena's detail panel from the list.",
|
|
253
|
-
"Write down every field label it shows, then close the panel.",
|
|
254
|
-
"Open /admin/stores/store-beyblade-arena/view directly.",
|
|
255
|
-
"Write down every field label there and compare the two lists.",
|
|
256
|
-
"Reload that page and confirm it loads the same store rather than 404ing or resetting.",
|
|
257
|
-
"Search both surfaces, and the page source of the standalone one, for a WhatsApp access token.",
|
|
258
|
-
],
|
|
259
|
-
inputs: { store: "store-beyblade-arena", standalonePage: "/admin/stores/{id}/view" },
|
|
260
|
-
expectedBehaviour: "The panel and the page render from one shared content component, so their fields match by construction. The store document's WhatsApp token is decrypted on every read, so any surface that does not deliberately project it is handling plaintext — an admin page is allowed to show more than a public one, but not the raw credential.",
|
|
261
|
-
expectedUiState: "Both surfaces show the same fields and the standalone page survives a reload. The access token is masked or absent on both. A field in one and not the other means a second copy of the content component has appeared.",
|
|
262
|
-
expectedData: { rawTokenShown: 0 },
|
|
263
|
-
endResult: "Read-only; nothing persists.",
|
|
264
|
-
},
|
|
265
|
-
};
|