@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,348 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: Authored six-part procedures for the selling/seller-listing-types page.
|
|
3
|
-
* WHAT: 18 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
|
-
* 🛑 ADDING A LISTING TYPE IS A FIVE-PLACE CHANGE and the compiler catches three.
|
|
10
|
-
* The two it misses are the repository's filter-alias map — omit a type there and
|
|
11
|
-
* the alias returns an empty value that is then DROPPED, so the query runs with no
|
|
12
|
-
* type filter and returns everything — and the enabled-types map. Several cases
|
|
13
|
-
* here exist to make that specific silence visible from the UI.
|
|
14
|
-
*
|
|
15
|
-
* The seller coupon cases mirror the buyer-side stacking ones deliberately: the
|
|
16
|
-
* buckets are one coupon per store plus one platform-wide, and a seller must not
|
|
17
|
-
* be able to mint the platform-wide kind.
|
|
18
|
-
*
|
|
19
|
-
* @tag domain:tester
|
|
20
|
-
* @tag layer:seed
|
|
21
|
-
* @tag pattern:none
|
|
22
|
-
* @tag access:server-only
|
|
23
|
-
* @tag consumers:seed-data/authored/index.ts
|
|
24
|
-
* @tag sideEffects:none
|
|
25
|
-
*/
|
|
26
|
-
export const authored = {
|
|
27
|
-
"checklist-selling-seller-listing-types-seller-listing-type-dropdown-all-types": {
|
|
28
|
-
roles: ["seller"],
|
|
29
|
-
startPage: "/store/products",
|
|
30
|
-
steps: [
|
|
31
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
32
|
-
"Open /store/products and open the listing-type dropdown.",
|
|
33
|
-
"Write down every option offered.",
|
|
34
|
-
"Compare that list against the nine types the catalogue supports.",
|
|
35
|
-
"Select each option in turn and read the rows returned.",
|
|
36
|
-
"Write down any option returning the full unfiltered list rather than its own type.",
|
|
37
|
-
],
|
|
38
|
-
expectedBehaviour: "Every type is offered and each filters to its own. A type present in the union and the plugin registry but missing from the repository's alias map produces an empty filter value that is silently dropped — so the page returns EVERYTHING under that heading, which reads as the seller owning far more than they do rather than as a broken filter.",
|
|
39
|
-
expectedUiState: "Nine options, and each returns only its own type. An option showing the full catalogue is the dropped-filter failure; an option missing entirely is the other half of the same defect. `bundle` must NOT be offered — it stopped being a listing type and a chip for it matches zero rows forever.",
|
|
40
|
-
expectedData: { typeOptionCount: 9 },
|
|
41
|
-
endResult: "Read-only; nothing persists beyond the URL.",
|
|
42
|
-
},
|
|
43
|
-
"checklist-selling-seller-listing-types-seller-products-badge-per-type": {
|
|
44
|
-
roles: ["seller"],
|
|
45
|
-
startPage: "/store/products",
|
|
46
|
-
steps: [
|
|
47
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
48
|
-
"Open /store/products with no type filter so every type is listed.",
|
|
49
|
-
"Read the badge on a row of each type present.",
|
|
50
|
-
"Write down any two types sharing an identical badge.",
|
|
51
|
-
"Switch to dark mode and read the badges again.",
|
|
52
|
-
],
|
|
53
|
-
expectedBehaviour: "Each type renders its own badge. The badge map is keyed on the type union, and a map covering only some types renders an identical fallback for the rest — five of nine once looked the same, which makes the list unreadable at a glance without telling anyone anything is wrong.",
|
|
54
|
-
expectedUiState: "Every type shows a distinct badge and each is readable in both themes. Two types sharing a badge is the failure, named by the pair.",
|
|
55
|
-
endResult: "Read-only; return the site to light mode afterwards.",
|
|
56
|
-
},
|
|
57
|
-
"checklist-selling-seller-listing-types-seller-products-featured-promoted-sorts": {
|
|
58
|
-
roles: ["seller"],
|
|
59
|
-
startPage: "/store/products",
|
|
60
|
-
steps: [
|
|
61
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
62
|
-
"Open /store/products and read the sort dropdown's options.",
|
|
63
|
-
"Select 'Featured first' and read the row order.",
|
|
64
|
-
"Select 'Promoted first' and read the row order.",
|
|
65
|
-
"Compare both against the default order.",
|
|
66
|
-
"Reload with one applied and read the order on first paint.",
|
|
67
|
-
],
|
|
68
|
-
expectedBehaviour: "Both sorts reorder the rows. A sort whose field is not marked sortable is dropped before the query runs, so the dropdown changes and nothing moves — these two shipped exactly that way and were dead on arrival, unreported, because a sort that does nothing looks like a list that happens to already be in that order.",
|
|
69
|
-
expectedUiState: "Featured rows rise to the top under the first sort and promoted rows under the second, and both orders differ from the default. After a reload the chosen order holds on first paint. An unchanged order under either is the failure.",
|
|
70
|
-
endResult: "Read-only; nothing persists beyond the URL.",
|
|
71
|
-
},
|
|
72
|
-
"checklist-selling-seller-listing-types-seller-products-auctions-default-load": {
|
|
73
|
-
roles: ["seller"],
|
|
74
|
-
startPage: "/store/products",
|
|
75
|
-
steps: [
|
|
76
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
77
|
-
"Open /store/products with no query parameters and read the availability scope selected.",
|
|
78
|
-
"Read the rows and note whether sold or ended listings are among them.",
|
|
79
|
-
"Open the store's auctions listing the same way and read its scope and rows.",
|
|
80
|
-
"Switch each to the 'All' scope and compare the counts.",
|
|
81
|
-
],
|
|
82
|
-
expectedBehaviour: "A seller's own listing pages default to a scope that shows their live inventory, and the scope is derived from one shared helper so the server's first paint and the control agree. Where they are computed separately the first paint shows one set and the control claims another — and because the client caches the server's data indefinitely, the disagreement never resolves.",
|
|
83
|
-
expectedUiState: "Both pages open on the same declared scope with the tabs reflecting it. The All scope returns more rows than the default on at least one of them, which is what proves the default is scoping rather than showing everything already.",
|
|
84
|
-
endResult: "Read-only; nothing persists beyond the URL.",
|
|
85
|
-
},
|
|
86
|
-
"checklist-selling-seller-listing-types-auction-row-shows-bid-info": {
|
|
87
|
-
roles: ["seller"],
|
|
88
|
-
startPage: "/store/auctions",
|
|
89
|
-
steps: [
|
|
90
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
91
|
-
"Open /store/auctions — it redirects to /store/products?listingType=auction, which is the auctions listing; landing there is correct, not a wrong turn.",
|
|
92
|
-
"Read each row.",
|
|
93
|
-
"Check each shows the current bid, the bid count and time remaining.",
|
|
94
|
-
"Compare one row's figures against that auction's public page.",
|
|
95
|
-
"Find an ended auction and read what its row shows in place of time remaining.",
|
|
96
|
-
],
|
|
97
|
-
expectedBehaviour: "An auction row carries the three figures a seller needs to decide anything — current bid, bid count, time left. A row showing only a title and a price is a row that forces them to open every auction to learn its state.",
|
|
98
|
-
expectedUiState: "Every live row shows current bid, bid count and remaining time, and they match the public page. An ended row reads as ended rather than showing a negative or frozen countdown.",
|
|
99
|
-
endResult: "Read-only; nothing persists.",
|
|
100
|
-
},
|
|
101
|
-
"checklist-selling-seller-listing-types-seller-coupons-crud": {
|
|
102
|
-
roles: ["seller"],
|
|
103
|
-
startPage: "/store/coupons",
|
|
104
|
-
steps: [
|
|
105
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
106
|
-
"Open the store's coupons page and read the existing coupons.",
|
|
107
|
-
"Create one with the code QASELLER10, 10% off, a minimum purchase of 500 and an end date a week out.",
|
|
108
|
-
"Save, RELOAD, and read every field.",
|
|
109
|
-
"Edit only the minimum purchase to 800, save, RELOAD, and read every field again.",
|
|
110
|
-
// A coupon field was once labelled with this word while storing decimal rupees —
|
|
111
|
-
// a 100x data-entry hazard — and a tester cannot search for a word the case
|
|
112
|
-
// refuses to name. The literal IS the thing being looked for.
|
|
113
|
-
// audit-money-units-ok: the word is the search target, not a stale reference
|
|
114
|
-
"Read the label and helper text on every money field, looking for the word 'paise'.",
|
|
115
|
-
"Type 799.50 into the minimum purchase and read whether it is accepted.",
|
|
116
|
-
"Delete the coupon and RELOAD to confirm.",
|
|
117
|
-
],
|
|
118
|
-
inputs: { code: "QASELLER10", percent: 10, minPurchaseBefore: 500, minPurchaseAfter: 800 },
|
|
119
|
-
expectedBehaviour: "Create, edit and delete persist, and an edit to one field leaves the rest alone — including the validity dates, which a wholesale replace would wipe when only one sub-field was sent. Money is stored in rupees with decimals throughout, so a money field labelled or validated in the hundredth sub-unit is a hundredfold data-entry hazard.",
|
|
120
|
-
expectedUiState: "Each operation survives its reload. After the minimum-purchase edit the dates and percentage are unchanged. No money field's label or helper text names a sub-unit, and 799.50 is accepted rather than rejected as a non-integer.",
|
|
121
|
-
endResult: "The coupon is deleted by the final step.",
|
|
122
|
-
},
|
|
123
|
-
"checklist-selling-seller-listing-types-seller-coupon-auto-scoped-to-own-store": {
|
|
124
|
-
roles: ["seller"],
|
|
125
|
-
startPage: "/store/coupons",
|
|
126
|
-
steps: [
|
|
127
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
128
|
-
"Open the store's coupons page and start creating a coupon.",
|
|
129
|
-
"Read every field for a store or scope selector.",
|
|
130
|
-
"Create one coded QASCOPE10 and save.",
|
|
131
|
-
"RELOAD and read which store it is attached to.",
|
|
132
|
-
"Sign out, sign in as admin@letitrip.in / TempPass123! (who owns store-letitrip-official), open /store/coupons, and check QASCOPE10 does not appear in that seller's coupons.",
|
|
133
|
-
"Sign back in as tyson and delete it.",
|
|
134
|
-
],
|
|
135
|
-
inputs: { code: "QASCOPE10" },
|
|
136
|
-
expectedBehaviour: "The store is resolved from the session and written server-side — the form never offers it. A seller choosing their own scope could attach a discount to someone else's catalogue, so the absence of that control IS the security property.",
|
|
137
|
-
expectedUiState: "No store or scope selector is offered. The saved coupon is attached to Beyblade Arena and is absent from the other seller's list.",
|
|
138
|
-
expectedData: { scope: "seller" },
|
|
139
|
-
endResult: "The coupon is deleted by the final step.",
|
|
140
|
-
},
|
|
141
|
-
"checklist-selling-seller-listing-types-seller-coupon-cannot-be-site-wide": {
|
|
142
|
-
roles: ["seller"],
|
|
143
|
-
startPage: "/store/coupons",
|
|
144
|
-
steps: [
|
|
145
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
146
|
-
"Open the store's coupon creation form and read every option.",
|
|
147
|
-
"Look for any control that would make the coupon platform-wide or apply it to all stores.",
|
|
148
|
-
"Create one coded QASITEWIDE10 and save.",
|
|
149
|
-
"Sign out and sign in as admin@letitrip.in / TempPass123!.",
|
|
150
|
-
"Open /admin/coupons, find QASITEWIDE10, and read its scope and store.",
|
|
151
|
-
"Sign back in as tyson and delete it.",
|
|
152
|
-
],
|
|
153
|
-
inputs: { code: "QASITEWIDE10" },
|
|
154
|
-
expectedBehaviour: "A seller cannot mint a platform-wide coupon. There is exactly one platform-wide slot per cart, and a discount in it is paid for across every store — that is an admin decision by definition.",
|
|
155
|
-
expectedUiState: "No site-wide or all-stores option is offered. In the admin list the coupon reads as seller-scoped and attached to Beyblade Arena, not as an admin coupon.",
|
|
156
|
-
expectedData: { scope: "seller" },
|
|
157
|
-
endResult: "The coupon is deleted by the final step.",
|
|
158
|
-
},
|
|
159
|
-
"checklist-selling-seller-listing-types-seller-coupon-no-stacking-toggle": {
|
|
160
|
-
roles: ["seller"],
|
|
161
|
-
startPage: "/store/coupons",
|
|
162
|
-
steps: [
|
|
163
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
164
|
-
"Open the store's coupon creation form and read every field and toggle.",
|
|
165
|
-
"Look for any control about combining with other coupons or with platform coupons.",
|
|
166
|
-
"Open the store's 'How coupons work' help panel if one is offered and read the rules it states.",
|
|
167
|
-
"Compare those rules against what the form lets the seller configure.",
|
|
168
|
-
],
|
|
169
|
-
expectedBehaviour: "Stacking is a platform rule, not a per-coupon setting — one coupon per store plus one platform-wide, unconditionally. The old opt-out toggle was removed because nothing read it, and a control that appears to configure a rule it cannot change is worse than no control.",
|
|
170
|
-
expectedUiState: "No combine-with-other-coupons toggle is offered. Any help copy shown states the platform rule rather than implying the seller controls it.",
|
|
171
|
-
endResult: "Read-only; leave the form without saving.",
|
|
172
|
-
},
|
|
173
|
-
"checklist-selling-seller-listing-types-seller-coupon-second-for-same-store-rejected": {
|
|
174
|
-
roles: ["seller", "buyer"],
|
|
175
|
-
startPage: "/store/coupons",
|
|
176
|
-
steps: [
|
|
177
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
178
|
-
"Create two seller coupons on this store: QAFIRST10 at 10% and QASECOND10 at 10%, both with no minimum purchase.",
|
|
179
|
-
"Sign out and sign in as vivaan.kapoor@gmail.com / TempPass123!.",
|
|
180
|
-
"Add product-beyblade-burst-regalia-genesis (₹1,399, Beyblade Arena) to the cart.",
|
|
181
|
-
"Open /checkout, complete the address and add-ons steps, and apply QAFIRST10.",
|
|
182
|
-
"Apply QASECOND10 and read the error.",
|
|
183
|
-
"Sign back in as tyson and delete both coupons.",
|
|
184
|
-
],
|
|
185
|
-
inputs: { coupon1: "QAFIRST10", coupon2: "QASECOND10" },
|
|
186
|
-
expectedBehaviour: "Two coupons from the same store cannot both apply. The second is refused rather than swapped in — silently replacing the first would change the discount under a buyer who thought they were adding to it.",
|
|
187
|
-
expectedUiState: "QAFIRST10 stays applied with its amount unchanged, and the error names it as the coupon already occupying the store's slot. QASECOND10 does not enter the applied list.",
|
|
188
|
-
expectedData: { storeCouponCount: 1 },
|
|
189
|
-
endResult: "Both coupons are deleted by the final step, and the cart is emptied.",
|
|
190
|
-
},
|
|
191
|
-
"checklist-selling-seller-listing-types-seller-coupon-stacks-with-admin-coupon": {
|
|
192
|
-
roles: ["seller", "buyer"],
|
|
193
|
-
startPage: "/store/coupons",
|
|
194
|
-
steps: [
|
|
195
|
-
"Sign in as tyson@beybladearena.in / TempPass123! and create QASTACK10 at 10% with no minimum purchase.",
|
|
196
|
-
"Sign out and sign in as vivaan.kapoor@gmail.com / TempPass123!.",
|
|
197
|
-
"Add product-beyblade-burst-regalia-genesis (₹1,399) and product-beyblade-original-driger-v (₹1,799) to the cart.",
|
|
198
|
-
"Open /checkout, complete the address and add-ons steps, and apply QASTACK10.",
|
|
199
|
-
"Apply FREESHIP499, a platform-wide coupon.",
|
|
200
|
-
"Read the applied list, both discount amounts and the total.",
|
|
201
|
-
"Sign back in as tyson and delete QASTACK10.",
|
|
202
|
-
],
|
|
203
|
-
inputs: { sellerCoupon: "QASTACK10", adminCoupon: "FREESHIP499" },
|
|
204
|
-
expectedBehaviour: "A seller coupon and a platform-wide one occupy different buckets, so both apply at once. This is the positive case the two rejection cases mirror — without it, a rule that refused everything would also pass them.",
|
|
205
|
-
expectedUiState: "Both codes are listed, each with its own amount and remove control, and the total falls by the sum. The seller coupon's amount is computed from this store's items only.",
|
|
206
|
-
expectedData: { appliedCouponCount: 2 },
|
|
207
|
-
endResult: "The coupon is deleted and the cart emptied by the final step.",
|
|
208
|
-
},
|
|
209
|
-
"checklist-selling-seller-listing-types-seller-coupon-category-restriction-works": {
|
|
210
|
-
roles: ["seller", "buyer"],
|
|
211
|
-
startPage: "/store/coupons",
|
|
212
|
-
steps: [
|
|
213
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
214
|
-
"Create QACAT20 at 20%, restricted to the Beyblade Burst category, with no minimum purchase.",
|
|
215
|
-
"Sign out and sign in as vivaan.kapoor@gmail.com / TempPass123!.",
|
|
216
|
-
"Add product-beyblade-metal-storm-pegasus (₹1,299, Metal Fight) to the cart alone.",
|
|
217
|
-
"Open /checkout, complete the address and add-ons steps, and apply QACAT20 — read the error.",
|
|
218
|
-
"Add product-beyblade-burst-regalia-genesis (₹1,399, Burst) and apply QACAT20 again.",
|
|
219
|
-
"Read the discount amount and compare it against 20% of ₹1,399.",
|
|
220
|
-
"Sign back in as tyson and delete QACAT20.",
|
|
221
|
-
],
|
|
222
|
-
inputs: { code: "QACAT20", percent: 20, burstItemPrice: 1399, metalItemPrice: 1299 },
|
|
223
|
-
expectedBehaviour: "The restriction is tested by set intersection against the product's full category chain, and the discount applies only to the eligible items. The category is resolved lazily — the cart snapshots none — so the lookup fires only when a coupon actually carries a restriction.",
|
|
224
|
-
expectedUiState: "The Metal-only cart is refused with a message naming the category rather than reading 'Invalid coupon'. With the Burst item added the coupon applies, and its amount is about ₹279.80 — 20% of ₹1,399 — not 20% of the ₹2,698 combined subtotal.",
|
|
225
|
-
expectedData: { eligibleSubtotal: 1399 },
|
|
226
|
-
endResult: "The coupon is deleted and the cart emptied by the final step.",
|
|
227
|
-
},
|
|
228
|
-
"checklist-selling-seller-listing-types-seller-bundles-crud": {
|
|
229
|
-
roles: ["seller"],
|
|
230
|
-
startPage: "/store/bundles",
|
|
231
|
-
steps: [
|
|
232
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
233
|
-
"Open the store's bundles page and create one named 'QA Bundle seller-crud'.",
|
|
234
|
-
"Add product-beyblade-burst-valkyrie (₹999) and product-beyblade-x-wizard-arrow (₹899) as members, and set the bundle price to 1500.",
|
|
235
|
-
"Save, RELOAD, and read the members, the price and the discount shown.",
|
|
236
|
-
"Attempt to add product-beyblade-burst-valkyrie, which belongs to a different store, as a member and read what happens.",
|
|
237
|
-
"Open the bundle's public page and read its members and price.",
|
|
238
|
-
"Delete the bundle.",
|
|
239
|
-
],
|
|
240
|
-
inputs: {
|
|
241
|
-
name: "QA Bundle seller-crud",
|
|
242
|
-
member1: "product-beyblade-burst-valkyrie",
|
|
243
|
-
member2: "product-beyblade-x-wizard-arrow",
|
|
244
|
-
bundlePrice: 1500,
|
|
245
|
-
memberTotal: 1898,
|
|
246
|
-
},
|
|
247
|
-
expectedBehaviour: "A bundle is all-or-nothing at a locked price below the sum of its members, and its members must come from ONE store — the store id is the key orders split on, so a cross-store bundle produces an order belonging to one seller containing another's products, with no notification, no shipping resolution and no payout for the second. That is refused at SAVE time rather than at add-to-cart, so existing bundles keep working.",
|
|
248
|
-
expectedUiState: "After the reload the bundle holds both members at ₹1,500 against a ₹1,898 total, with a discount shown. The cross-store member is refused with a message naming the reason. The public page lists both members rather than reading '0 items'.",
|
|
249
|
-
expectedData: { memberCount: 2, bundlePrice: 1500 },
|
|
250
|
-
endResult: "The bundle is deleted by the final step.",
|
|
251
|
-
},
|
|
252
|
-
"checklist-selling-seller-listing-types-seller-classified-crud": {
|
|
253
|
-
roles: ["seller"],
|
|
254
|
-
startPage: "/store/classified",
|
|
255
|
-
steps: [
|
|
256
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
257
|
-
"Open the store's classifieds page and create one titled 'QA Classified seller-crud' at 900, city Pune, contact method phone, negotiable off.",
|
|
258
|
-
"Save, RELOAD, and read all four type-specific values.",
|
|
259
|
-
"Edit only the price to 1100, save, RELOAD, and read all four again.",
|
|
260
|
-
"Open the public page and read the purchase panel.",
|
|
261
|
-
"Delete the listing.",
|
|
262
|
-
],
|
|
263
|
-
inputs: { title: "QA Classified seller-crud", price: 900, city: "Pune", contactMethod: "phone" },
|
|
264
|
-
expectedBehaviour: "Classified-specific fields round-trip and the public purchase panel offers the contact path only — classifieds are capability-blocked from the cart entirely, so an Add to Cart here would be a purchase route the checkout cannot honour.",
|
|
265
|
-
expectedUiState: "After each reload all four values hold, including negotiable staying off. The public panel offers Make Offer or Request to Buy and no cart control.",
|
|
266
|
-
endResult: "The listing is deleted by the final step.",
|
|
267
|
-
},
|
|
268
|
-
"checklist-selling-seller-listing-types-seller-digitalcodes-crud": {
|
|
269
|
-
roles: ["seller"],
|
|
270
|
-
startPage: "/store/digital-codes",
|
|
271
|
-
steps: [
|
|
272
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
273
|
-
"Open the store's digital-codes page and create one titled 'QA Digital Code seller-crud' at 350 with auto-claim delivery.",
|
|
274
|
-
"Add three codes to the pool, save, RELOAD, and read the mode and the pool count.",
|
|
275
|
-
"Remove one code, save, RELOAD, and read the pool count.",
|
|
276
|
-
"Open the public page and read the availability shown.",
|
|
277
|
-
"Delete the listing.",
|
|
278
|
-
],
|
|
279
|
-
inputs: { title: "QA Digital Code seller-crud", price: 350, codeCount: 3 },
|
|
280
|
-
expectedBehaviour: "The pool and the delivery mode round-trip, and availability for this type reads the NESTED pool count rather than a separate stock figure — a listing with stock remaining and an empty pool must read as unavailable, which is the one case that proves the right field is being consulted.",
|
|
281
|
-
expectedUiState: "After each reload the mode holds and the pool count matches what was saved. The public page's availability follows the pool.",
|
|
282
|
-
expectedData: { codesAvailable: 2 },
|
|
283
|
-
endResult: "The listing is deleted by the final step.",
|
|
284
|
-
},
|
|
285
|
-
"checklist-selling-seller-listing-types-seller-live-crud": {
|
|
286
|
-
roles: ["seller"],
|
|
287
|
-
startPage: "/store/live",
|
|
288
|
-
steps: [
|
|
289
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
290
|
-
"Open the store's live-items page and create one titled 'QA Live Item seller-crud' at 3000, species Dog, breed Labrador, sex female, age 8 months.",
|
|
291
|
-
"Set the allowed jurisdictions to Maharashtra only.",
|
|
292
|
-
"Attempt to save WITHOUT a video and read the error.",
|
|
293
|
-
"Upload public/test-media/sample-video.mp4 and save.",
|
|
294
|
-
"RELOAD and read every type-specific value including the jurisdiction list.",
|
|
295
|
-
"Open the public page and read the species line and delivery restrictions.",
|
|
296
|
-
"Delete the listing.",
|
|
297
|
-
],
|
|
298
|
-
inputs: {
|
|
299
|
-
title: "QA Live Item seller-crud",
|
|
300
|
-
price: 3000,
|
|
301
|
-
species: "Dog",
|
|
302
|
-
jurisdictions: "Maharashtra",
|
|
303
|
-
video: "public/test-media/sample-video.mp4",
|
|
304
|
-
},
|
|
305
|
-
expectedBehaviour: "A live listing requires a video where every other type treats it as optional, and its jurisdiction list gates who may buy it at all. A list that saves empty silently removes the restriction rather than failing loudly, which is the one failure here with a consequence beyond the page.",
|
|
306
|
-
expectedUiState: "The videoless save is refused inline with the typed values preserved. After the reload every field holds, with Maharashtra still selected. The public page states the species line and the delivery restriction.",
|
|
307
|
-
endResult: "The listing is deleted by the final step.",
|
|
308
|
-
},
|
|
309
|
-
"checklist-selling-seller-listing-types-seller-prizedraws-crud": {
|
|
310
|
-
roles: ["seller"],
|
|
311
|
-
startPage: "/store/prize-draws",
|
|
312
|
-
steps: [
|
|
313
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
314
|
-
"Open /store/prize-draws — it redirects to /store/products?listingType=prize-draw, which is the prize-draws listing. Create one titled 'QA Prize Draw seller-crud' at 75 per entry, 20 entries, instant-reveal mode.",
|
|
315
|
-
"Save, RELOAD, and read the mode, the per-entry price and the entry count.",
|
|
316
|
-
"Open the public page and read the purchase panel's wording.",
|
|
317
|
-
"Check the panel describes buying an ENTRY rather than buying the prize.",
|
|
318
|
-
"Delete the listing.",
|
|
319
|
-
],
|
|
320
|
-
inputs: { title: "QA Prize Draw seller-crud", pricePerEntry: 75, entryCount: 20 },
|
|
321
|
-
expectedBehaviour: "A prize draw sells entries at a per-entry price, in one of two modes. The public wording matters as much as the data: a panel reading 'Buy now' beside a price misrepresents what the money buys, and that is a consumer claim rather than a copy preference.",
|
|
322
|
-
expectedUiState: "After the reload the mode, price and entry count hold. The public panel names an entry and its per-entry price rather than presenting the prize as the thing being bought.",
|
|
323
|
-
endResult: "The listing is deleted by the final step.",
|
|
324
|
-
},
|
|
325
|
-
"checklist-selling-seller-listing-types-seller-art-stickers-crud": {
|
|
326
|
-
roles: ["seller", "guest"],
|
|
327
|
-
startPage: "/store/products",
|
|
328
|
-
steps: [
|
|
329
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
330
|
-
"Create an art listing titled 'QA Art Print seller-crud' at 650 with a size, material, finish and edition size.",
|
|
331
|
-
"Save, RELOAD, and read all four print fields.",
|
|
332
|
-
"Open /stores/store-beyblade-arena/art in a private window and look for the listing.",
|
|
333
|
-
"Read every other card in that tab and check none is an ordinary product.",
|
|
334
|
-
"Create a sticker listing titled 'QA Sticker Sheet seller-crud' at 200 and check it appears in the same tab.",
|
|
335
|
-
"Delete both listings.",
|
|
336
|
-
],
|
|
337
|
-
inputs: {
|
|
338
|
-
artTitle: "QA Art Print seller-crud",
|
|
339
|
-
artPrice: 650,
|
|
340
|
-
stickerTitle: "QA Sticker Sheet seller-crud",
|
|
341
|
-
stickerPrice: 200,
|
|
342
|
-
},
|
|
343
|
-
expectedBehaviour: "Art and stickers are real listing types with their own fields and their own public tab. They were added to the type union and the plugin registry without being added to the repository's alias map, so their queries ran with NO type filter — the tab rendered and returned the whole catalogue, which looks like a working page.",
|
|
344
|
-
expectedUiState: "Both listings round-trip their print fields and both appear in the store's Art & Stickers tab. Every card in that tab is an art or sticker listing — an ordinary Beyblade product among them is the dropped-filter failure.",
|
|
345
|
-
expectedData: { ordinaryProductsInTab: 0 },
|
|
346
|
-
endResult: "Both listings are deleted by the final step.",
|
|
347
|
-
},
|
|
348
|
-
};
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: Authored six-part procedures for the selling/seller-marketing-extras page.
|
|
3
|
-
* WHAT: 9 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 WHATSAPP ACCESS TOKEN IS DOUBLE-ENCRYPTED and decrypted on EVERY read of
|
|
10
|
-
* the store document, so any code path that forgets to project is handling
|
|
11
|
-
* plaintext. Four pages once passed the raw document into a client component and
|
|
12
|
-
* published that token in the page HTML. The token case therefore reads the page
|
|
13
|
-
* source rather than trusting the masked field.
|
|
14
|
-
*
|
|
15
|
-
* @tag domain:tester
|
|
16
|
-
* @tag layer:seed
|
|
17
|
-
* @tag pattern:none
|
|
18
|
-
* @tag access:server-only
|
|
19
|
-
* @tag consumers:seed-data/authored/index.ts
|
|
20
|
-
* @tag sideEffects:none
|
|
21
|
-
*/
|
|
22
|
-
export const authored = {
|
|
23
|
-
"checklist-selling-seller-marketing-extras-seller-offers-list": {
|
|
24
|
-
roles: ["seller"],
|
|
25
|
-
startPage: "/store/offers",
|
|
26
|
-
steps: [
|
|
27
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
28
|
-
"Open /store/offers and read every row — product, offered amount, listed price, status and round.",
|
|
29
|
-
"Read every status filter offered and select each in turn, noting any that returns nothing.",
|
|
30
|
-
"For each empty filter, check the unfiltered list for rows carrying that status.",
|
|
31
|
-
"Open one offer and read its detail, including any earlier rounds.",
|
|
32
|
-
"Read the row actions offered and check at least one lets you VIEW rather than only act.",
|
|
33
|
-
],
|
|
34
|
-
expectedBehaviour: "The list shows offers against this store with enough context to decide — the offered amount against the listed price is the entire negotiation. A chain of counters is one story: each round is its own document, linked forwards and backwards and denormalised to the chain's root so a row can say 'Round 2' with no extra reads.",
|
|
35
|
-
expectedUiState: "Rows show product, offered amount, listed price and round number. Every status filter either returns its own rows or is empty with none unfiltered either — the real statuses include countered and withdrawn, and a chip naming 'Rejected' when the stored value is 'Declined' matches nothing forever. A view affordance exists; a menu of pure mutations lets a seller act on an offer they never read.",
|
|
36
|
-
endResult: "Read-only; nothing persists beyond the URL.",
|
|
37
|
-
},
|
|
38
|
-
"checklist-selling-seller-marketing-extras-seller-features-crud": {
|
|
39
|
-
roles: ["seller"],
|
|
40
|
-
startPage: "/store/features",
|
|
41
|
-
steps: [
|
|
42
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
43
|
-
"Open /store/features and read the existing features.",
|
|
44
|
-
"Create one named 'QA Feature marketing-extras' with an icon and a description, and save.",
|
|
45
|
-
"RELOAD and read every field.",
|
|
46
|
-
"Open /store/products, find 'Beyblade Burst B-01 Valkyrie', open its editor, attach that feature and save.",
|
|
47
|
-
"Open the product's public page at /products/{its slug} and read whether the feature is shown.",
|
|
48
|
-
"Detach it, then delete the feature.",
|
|
49
|
-
],
|
|
50
|
-
inputs: { name: "QA Feature marketing-extras", productId: "product-beyblade-burst-valkyrie" },
|
|
51
|
-
expectedBehaviour: "A feature is created once and attached to many listings, and it reaches the public page. A feature that saves in its own list but never renders on a product is a field with no reader — the seller believes they have said something the buyer never sees.",
|
|
52
|
-
expectedUiState: "After the reload the feature holds its name, icon and description. The product's public page shows it. A public page with no trace of the attached feature is the failure.",
|
|
53
|
-
endResult: "The feature is detached and deleted by the final step, so the seeded product is left as it was.",
|
|
54
|
-
},
|
|
55
|
-
"checklist-selling-seller-marketing-extras-seller-google-reviews-sync": {
|
|
56
|
-
roles: ["seller"],
|
|
57
|
-
startPage: "/store/google-reviews",
|
|
58
|
-
steps: [
|
|
59
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
60
|
-
"Open /store/google-reviews and read what it asks for.",
|
|
61
|
-
"Read whether it states that credentials are required and which ones.",
|
|
62
|
-
"Trigger a sync without credentials configured and read the message.",
|
|
63
|
-
"Read whether any error mentions a provider, a key, or a raw response.",
|
|
64
|
-
"Read the store's public page for any Google reviews section.",
|
|
65
|
-
],
|
|
66
|
-
expectedBehaviour: "With no Google credentials configured the sync declines cleanly and says so. The Places credentials are seeded as EMPTY strings rather than placeholders precisely so an unconfigured consumer skips instead of making a billed call that fails — a placeholder would be treated as a usable key.",
|
|
67
|
-
expectedUiState: "The message names the missing configuration in plain English. It does not surface a provider error code, an API key, or a raw response body. The public store page shows no empty Google reviews section.",
|
|
68
|
-
endResult: "Nothing is synced. If credentials ARE configured on this environment, record that and read what the sync actually imported instead.",
|
|
69
|
-
},
|
|
70
|
-
"checklist-selling-seller-marketing-extras-seller-reviews-response": {
|
|
71
|
-
roles: ["seller", "guest"],
|
|
72
|
-
startPage: "/store/reviews",
|
|
73
|
-
steps: [
|
|
74
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
75
|
-
"Open /store/reviews and open a review with no seller response.",
|
|
76
|
-
"Type 'QA Response seller-reviews-response — thanks for the feedback.' as the response and save.",
|
|
77
|
-
"RELOAD and read the response.",
|
|
78
|
-
"Open that review on the product's public page in a private window.",
|
|
79
|
-
"Read whether the response is shown and how it is attributed.",
|
|
80
|
-
"Edit the response, save, reload, and read it again.",
|
|
81
|
-
],
|
|
82
|
-
inputs: { response: "QA Response seller-reviews-response — thanks for the feedback." },
|
|
83
|
-
expectedBehaviour: "A seller response is stored on the review and rendered publicly, attributed to the store rather than to a person. It can be edited afterwards — a response that can only be written once leaves a typo permanent on a public page.",
|
|
84
|
-
expectedUiState: "After the reload the response is on the review in the dashboard AND on the public product page, attributed to the store. The edit persists too. The reviewer's own name stays masked; a response does not unmask it.",
|
|
85
|
-
endResult: "Delete the response afterwards so the seeded review is left as it was.",
|
|
86
|
-
},
|
|
87
|
-
};
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: Authored six-part procedures for the selling/seller-ops-comms 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
|
-
* 🛑 THE LAST TWO CASES OVERLAP ON PURPOSE. One print surface is the real one and
|
|
10
|
-
* the other is a degraded duplicate of it rendered with no store — two features
|
|
11
|
-
* that look alike is exactly how one of them ships broken and unnoticed, so both
|
|
12
|
-
* are opened and compared rather than either being trusted.
|
|
13
|
-
*
|
|
14
|
-
* @tag domain:tester
|
|
15
|
-
* @tag layer:seed
|
|
16
|
-
* @tag pattern:none
|
|
17
|
-
* @tag access:server-only
|
|
18
|
-
* @tag consumers:seed-data/authored/index.ts
|
|
19
|
-
* @tag sideEffects:none
|
|
20
|
-
*/
|
|
21
|
-
export const authored = {
|
|
22
|
-
"checklist-selling-seller-ops-comms-seller-addresses-crud": {
|
|
23
|
-
roles: ["seller"],
|
|
24
|
-
startPage: "/store/addresses",
|
|
25
|
-
steps: [
|
|
26
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
27
|
-
"Open /store/addresses and read the existing addresses.",
|
|
28
|
-
"Create one: 'QA Address ops-comms', '11 Test Lane', Indore, Madhya Pradesh, 452010, landmark 'Next to the arena'.",
|
|
29
|
-
"Save, RELOAD, and read every field including the landmark.",
|
|
30
|
-
"Edit only the street to '12 Test Lane', save, RELOAD, and read every field again.",
|
|
31
|
-
"Mark it as the default pickup location, save and RELOAD.",
|
|
32
|
-
"Delete it and RELOAD to confirm.",
|
|
33
|
-
],
|
|
34
|
-
inputs: {
|
|
35
|
-
name: "QA Address ops-comms",
|
|
36
|
-
streetBefore: "11 Test Lane",
|
|
37
|
-
streetAfter: "12 Test Lane",
|
|
38
|
-
landmark: "Next to the arena",
|
|
39
|
-
},
|
|
40
|
-
expectedBehaviour: "Create, edit, default-set and delete all persist, and an edit touching one field leaves the others alone. The edit step is the important one: a form that cannot name a field sends undefined for it, and undefined overwrites — which is how the landmark disappeared on every edit.",
|
|
41
|
-
expectedUiState: "After each reload the address holds exactly what was typed. Following the street edit, the landmark still reads 'Next to the arena'. A blank landmark after an unrelated edit is the failure.",
|
|
42
|
-
endResult: "The address is deleted by the final step.",
|
|
43
|
-
},
|
|
44
|
-
"checklist-selling-seller-ops-comms-seller-fulfillment-queue": {
|
|
45
|
-
roles: ["seller"],
|
|
46
|
-
startPage: "/store/fulfillment",
|
|
47
|
-
steps: [
|
|
48
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
49
|
-
"Open /store/fulfillment and stay on its Queue tab — the page is a two-tab shell, Queue and 'Print centre', and the other tab is a different case.",
|
|
50
|
-
"Read each row's primary label and check it names the ITEM rather than only an order id.",
|
|
51
|
-
"Read every filter offered and select each in turn, reading the rows.",
|
|
52
|
-
"Open one row and read the order it opens.",
|
|
53
|
-
"Check the queue's ordering — whether the oldest unfulfilled order is first.",
|
|
54
|
-
],
|
|
55
|
-
expectedBehaviour: "The queue lists orders needing action, keyed on what the seller has to pack rather than on an identifier they cannot act on. Order documents denormalise the item title and image precisely so a list row needs no extra fetch — a row reading only 'Order {id}' is a row-mapper that never read them.",
|
|
56
|
-
expectedUiState: "Each row names the product and shows its thumbnail, with the order id de-emphasised rather than being the whole label. Every filter returns rows or a named empty state. Rows open the order.",
|
|
57
|
-
endResult: "Read-only; nothing persists beyond the URL.",
|
|
58
|
-
},
|
|
59
|
-
"checklist-selling-seller-ops-comms-seller-print-center": {
|
|
60
|
-
roles: ["seller"],
|
|
61
|
-
startPage: "/store/print-center",
|
|
62
|
-
steps: [
|
|
63
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
64
|
-
"Open /store/print-center and note that it REDIRECTS to /store/fulfillment, carrying the query string with it. Landing on a differently-named page is expected, not a fault.",
|
|
65
|
-
"Switch to the 'Print centre' tab — note the British spelling — and read what it offers.",
|
|
66
|
-
"Select one or more items or orders to print.",
|
|
67
|
-
"Read the preview and check the store's own name, logo and address appear on it.",
|
|
68
|
-
"Generate the printable output and read it.",
|
|
69
|
-
"Check the barcode or code shown resolves to the right product.",
|
|
70
|
-
],
|
|
71
|
-
expectedBehaviour: "The print centre renders with the seller's own store context — name, logo, pickup address — because that context is what makes a label usable. A barcode is derived deterministically from the product id, so the same product always produces the same code.",
|
|
72
|
-
expectedUiState: "The preview carries the store's name, logo and address rather than blanks or placeholders. The output includes the selected items. The barcode matches the product it is printed for.",
|
|
73
|
-
endResult: "Nothing is persisted by previewing. Do not send anything to a physical printer.",
|
|
74
|
-
},
|
|
75
|
-
"checklist-selling-seller-ops-comms-seller-inventory-print": {
|
|
76
|
-
roles: ["seller"],
|
|
77
|
-
startPage: "/store/fulfillment",
|
|
78
|
-
steps: [
|
|
79
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
80
|
-
"Open /store/fulfillment, switch to the 'Print centre' tab, and write down what it offers and whether the store context is present — name, logo, pickup address.",
|
|
81
|
-
"Open /store/inventory/print directly by URL. It should NOT resolve: the degraded duplicate was removed when Print Centre became a tab.",
|
|
82
|
-
"Open /store/print-center and confirm it redirects here rather than rendering a second copy.",
|
|
83
|
-
"Read the sidebar and check exactly ONE entry leads to this surface, under whichever name it uses.",
|
|
84
|
-
"Confirm there is no second, store-less print surface reachable from anywhere in the sidebar.",
|
|
85
|
-
],
|
|
86
|
-
expectedBehaviour: "The duplicate is RESOLVED and this case now guards the resolution rather than measuring the gap. /store/inventory/print used to render the same component with no store attached — a preview with no name, no logo and no address, a page that looked built and produced an unusable label. It was removed when Print Centre became a tab of /store/fulfillment, and /store/print-center became a redirect. What must stay true is that exactly one print surface exists and it has the store context.",
|
|
87
|
-
expectedUiState: "The Print centre tab carries the store name, logo and pickup address. /store/inventory/print does not resolve. /store/print-center redirects here rather than rendering a second copy. The sidebar offers exactly one route to it. A second print surface reappearing — or this one rendering without store context — is the finding.",
|
|
88
|
-
endResult: "Read-only; nothing persists. /store/inventory/print resolving at all is a REGRESSION, not a discovery: it was deliberately deleted, so its return means something reinstated it.",
|
|
89
|
-
},
|
|
90
|
-
};
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: Authored six-part procedures for selling/seller-orders-at-scale.
|
|
3
|
-
* WHAT: 3 cases, keyed by full checklist id.
|
|
4
|
-
*
|
|
5
|
-
* 🛑 SCALE IS THE WHOLE POINT OF THIS PAGE. The seller order list queried
|
|
6
|
-
* `productId in [...]` with the seller's entire product list, against Firestore's
|
|
7
|
-
* 30-value cap on `in`. So it was a permanent 500 for the only real seller
|
|
8
|
-
* (65 products) and perfectly fine for both small stores — which is exactly why
|
|
9
|
-
* it survived: every existing case exercised a store below the cap.
|
|
10
|
-
*
|
|
11
|
-
* On the dashboard the same throw was caught by `.catch(() => ({items: []}))`
|
|
12
|
-
* and rendered as zero orders and ₹0 revenue with no error anywhere, so the
|
|
13
|
-
* second case asserts a NUMBER rather than that a page loaded.
|
|
14
|
-
*
|
|
15
|
-
* Always run these against Beyblade Arena. A store with fewer than 30 listings
|
|
16
|
-
* passes them all while broken.
|
|
17
|
-
*
|
|
18
|
-
* @tag domain:tester
|
|
19
|
-
* @tag layer:seed
|
|
20
|
-
* @tag pattern:none
|
|
21
|
-
* @tag access:server-only
|
|
22
|
-
* @tag consumers:seed-data/authored/index.ts
|
|
23
|
-
* @tag sideEffects:none
|
|
24
|
-
*/
|
|
25
|
-
export const authored = {
|
|
26
|
-
"checklist-selling-seller-orders-at-scale-orders-list-loads-for-large-store": {
|
|
27
|
-
roles: ["seller"],
|
|
28
|
-
startPage: "/store/orders",
|
|
29
|
-
steps: [
|
|
30
|
-
"Sign in as tyson@beybladearena.in / TempPass123! — this store has more than 30 listings, which is the condition under test.",
|
|
31
|
-
"Open /store/products and read the total listing count shown by the pager.",
|
|
32
|
-
"Open /store/orders.",
|
|
33
|
-
"Wait for the list to finish loading.",
|
|
34
|
-
"Open the browser network panel and read the status of the /api/store/orders request.",
|
|
35
|
-
],
|
|
36
|
-
expectedBehaviour: "The list is scoped by the store, not by a list of its product ids. Firestore rejects an `in` clause of more than 30 values, so a per-product query breaks at exactly the 31st listing and cannot be reproduced on a small store.",
|
|
37
|
-
expectedUiState: "Order rows are listed, or a genuine empty state. Not an error boundary and not a perpetual skeleton.",
|
|
38
|
-
expectedData: { ordersApiStatus: 200 },
|
|
39
|
-
endResult: "Reloading shows the same list.",
|
|
40
|
-
},
|
|
41
|
-
"checklist-selling-seller-orders-at-scale-dashboard-revenue-not-zero": {
|
|
42
|
-
roles: ["seller"],
|
|
43
|
-
startPage: "/store",
|
|
44
|
-
steps: [
|
|
45
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
46
|
-
"Open /store/orders and count how many orders are listed.",
|
|
47
|
-
/*
|
|
48
|
-
* 🛑 ZERO IS ONE FAILURE HERE; TOO HIGH IS THE OTHER, AND ONLY ZERO WAS
|
|
49
|
-
* BEING CHECKED.
|
|
50
|
-
*
|
|
51
|
-
* The route documents two real bugs it fixed, and this case only caught
|
|
52
|
-
* the first: an unbounded `in` query that threw for any store past its
|
|
53
|
-
* 30th listing and was swallowed into ₹0 (Root Cause #59's shape). The
|
|
54
|
-
* second was the opposite direction — `o.status !== "CANCELLED"` against
|
|
55
|
-
* a lowercase OrderStatusValues, so the exclusion never excluded anything
|
|
56
|
-
* and headline revenue counted cancelled and refunded orders.
|
|
57
|
-
*
|
|
58
|
-
* A "> ₹0" assertion passes cheerfully against that. The cancelled and
|
|
59
|
-
* refunded totals are what tell the two apart, so the steps below read
|
|
60
|
-
* them.
|
|
61
|
-
*/
|
|
62
|
-
"Filter /store/orders to Cancelled and note the total of any one cancelled order.",
|
|
63
|
-
"Open /store.",
|
|
64
|
-
"Read the total-orders figure and the revenue figure on the dashboard.",
|
|
65
|
-
],
|
|
66
|
-
expectedBehaviour: "The dashboard's headline numbers come from the same query as the order list, so they must agree with it. A failed query here is swallowed into an empty array, which renders as a confident zero rather than as an error. Revenue additionally EXCLUDES cancelled and refunded orders — money that was never kept is not revenue — so a figure that silently includes them is wrong in the opposite direction and looks healthier than the truth.",
|
|
67
|
-
expectedUiState: "The order count matches what /store/orders listed, and revenue is greater than ₹0 for a store with delivered orders. Revenue is also strictly LESS than the sum of every order's total, because this store has cancelled and refunded orders that must not be counted — a revenue figure equal to the all-orders sum is the exclusion silently not applying.",
|
|
68
|
-
expectedData: { revenueIsZero: false, cancelledOrdersCountedAsRevenue: false },
|
|
69
|
-
endResult: "The same figures survive a reload.",
|
|
70
|
-
},
|
|
71
|
-
"checklist-selling-seller-orders-at-scale-orders-only-this-store": {
|
|
72
|
-
roles: ["seller"],
|
|
73
|
-
startPage: "/store/orders",
|
|
74
|
-
steps: [
|
|
75
|
-
"Sign in as tyson@beybladearena.in / TempPass123! and open /store/orders.",
|
|
76
|
-
"Open any order and read which product it is for.",
|
|
77
|
-
"In a second tab open that product's public page and read which store it belongs to.",
|
|
78
|
-
"Repeat for two more orders, choosing rows from different pages of the list.",
|
|
79
|
-
],
|
|
80
|
-
expectedBehaviour: "Scoping by store must not widen what a seller can see. A cart splits into one order per store, so every row here belongs to this store and no other seller's order is reachable.",
|
|
81
|
-
expectedUiState: "Every product checked belongs to Beyblade Arena.",
|
|
82
|
-
expectedData: { foreignOrdersFound: 0 },
|
|
83
|
-
endResult: "Nothing is changed; this case only reads.",
|
|
84
|
-
},
|
|
85
|
-
};
|