@mohasinac/appkit 4.34.1 → 4.35.1
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/_internal/client/features/lottery/LotteryAdminEditView.js +32 -2
- package/dist/features/auth/actions/profile-actions.d.ts +14 -1
- package/dist/features/auth/actions/profile-actions.js +16 -2
- package/dist/features/tester/components/TesterChecklistStepRow.d.ts +9 -1
- package/dist/features/tester/components/TesterChecklistStepRow.js +31 -2
- package/dist/features/tester/components/TesterHubView.js +8 -0
- package/dist/features/tester/schemas/firestore.d.ts +109 -0
- package/dist/features/tester/schemas/firestore.js +14 -0
- package/dist/features/tester/seed-data/_money-flows.d.ts +23 -0
- package/dist/features/tester/seed-data/_money-flows.js +430 -0
- package/dist/features/tester/seed-data/authored/_types.d.ts +33 -0
- package/dist/features/tester/seed-data/authored/_types.js +35 -0
- package/dist/features/tester/seed-data/authored/account-auth__profile-settings.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/account-auth__profile-settings.js +207 -0
- package/dist/features/tester/seed-data/authored/account-auth__signup-login.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +298 -0
- package/dist/features/tester/seed-data/authored/account-auth__testing-program--admin.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/account-auth__testing-program--admin.js +33 -0
- package/dist/features/tester/seed-data/authored/account-auth__testing-program.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/account-auth__testing-program.js +138 -0
- package/dist/features/tester/seed-data/authored/addresses__address-filters.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/addresses__address-filters.js +36 -0
- package/dist/features/tester/seed-data/authored/addresses__postal-lookup.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/addresses__postal-lookup.js +75 -0
- package/dist/features/tester/seed-data/authored/addresses__postal-validation.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/addresses__postal-validation.js +72 -0
- package/dist/features/tester/seed-data/authored/addresses__state-picker.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/addresses__state-picker.js +54 -0
- package/dist/features/tester/seed-data/authored/addresses__unban-request.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/addresses__unban-request.js +39 -0
- package/dist/features/tester/seed-data/authored/admin__bans-and-trust.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__bans-and-trust.js +226 -0
- package/dist/features/tester/seed-data/authored/admin__blog-faqs.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__blog-faqs.js +82 -0
- package/dist/features/tester/seed-data/authored/admin__bulk-actions.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__bulk-actions.js +177 -0
- package/dist/features/tester/seed-data/authored/admin__bundles.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__bundles.js +97 -0
- package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.js +232 -0
- package/dist/features/tester/seed-data/authored/admin__catalog-listings.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__catalog-listings.js +306 -0
- package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.js +158 -0
- package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.js +78 -0
- package/dist/features/tester/seed-data/authored/admin__content-deletes.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__content-deletes.js +261 -0
- package/dist/features/tester/seed-data/authored/admin__content-marketing.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__content-marketing.js +151 -0
- package/dist/features/tester/seed-data/authored/admin__coupons.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__coupons.js +214 -0
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +160 -0
- package/dist/features/tester/seed-data/authored/admin__media-watermark.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__media-watermark.js +104 -0
- package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.js +350 -0
- package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.js +105 -0
- package/dist/features/tester/seed-data/authored/admin__site-system.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__site-system.js +590 -0
- package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.js +235 -0
- package/dist/features/tester/seed-data/authored/admin__users-trust.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/admin__users-trust.js +569 -0
- package/dist/features/tester/seed-data/authored/buying__bidding.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__bidding.js +417 -0
- package/dist/features/tester/seed-data/authored/buying__browsing-search.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__browsing-search.js +653 -0
- package/dist/features/tester/seed-data/authored/buying__buying-checkout.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +533 -0
- package/dist/features/tester/seed-data/authored/buying__buying-coupons.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +379 -0
- package/dist/features/tester/seed-data/authored/buying__cart.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__cart.js +1171 -0
- package/dist/features/tester/seed-data/authored/buying__image-tile-layout.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +140 -0
- package/dist/features/tester/seed-data/authored/buying__my-orders.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__my-orders.js +257 -0
- package/dist/features/tester/seed-data/authored/buying__offers.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__offers.js +1111 -0
- package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.js +252 -0
- package/dist/features/tester/seed-data/authored/buying__product-detail.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__product-detail.js +387 -0
- package/dist/features/tester/seed-data/authored/buying__return-request.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__return-request.js +152 -0
- package/dist/features/tester/seed-data/authored/buying__reviews-pagination.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +242 -0
- package/dist/features/tester/seed-data/authored/buying__reviews.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__reviews.js +113 -0
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +283 -0
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.js +167 -0
- package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.js +90 -0
- package/dist/features/tester/seed-data/authored/buying__wishlist-history.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__wishlist-history.js +344 -0
- package/dist/features/tester/seed-data/authored/community-support__public-profile.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/community-support__public-profile.js +53 -0
- package/dist/features/tester/seed-data/authored/community-support__support-tickets.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/community-support__support-tickets.js +76 -0
- package/dist/features/tester/seed-data/authored/content-discovery__blog.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__blog.js +93 -0
- package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.js +149 -0
- package/dist/features/tester/seed-data/authored/content-discovery__coupons.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +121 -0
- package/dist/features/tester/seed-data/authored/content-discovery__event-participation.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__event-participation.js +207 -0
- package/dist/features/tester/seed-data/authored/content-discovery__events.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__events.js +318 -0
- package/dist/features/tester/seed-data/authored/content-discovery__faq-help.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__faq-help.js +65 -0
- package/dist/features/tester/seed-data/authored/content-discovery__notifications.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +147 -0
- package/dist/features/tester/seed-data/authored/content-discovery__search.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__search.js +332 -0
- package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +53 -0
- package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.js +52 -0
- package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.js +35 -0
- package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.js +141 -0
- package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.js +35 -0
- package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +95 -0
- package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.js +191 -0
- package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.js +158 -0
- package/dist/features/tester/seed-data/authored/design-ux__footer-theme.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/design-ux__footer-theme.js +106 -0
- package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.js +88 -0
- package/dist/features/tester/seed-data/authored/design-ux__general-design.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/design-ux__general-design.js +204 -0
- package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.js +301 -0
- package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.js +407 -0
- package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +214 -0
- package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +275 -0
- package/dist/features/tester/seed-data/authored/index.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/index.js +237 -0
- package/dist/features/tester/seed-data/authored/page-wiring__data-loss.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +102 -0
- package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.js +50 -0
- package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.js +66 -0
- package/dist/features/tester/seed-data/authored/page-wiring__reachability.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +115 -0
- package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +136 -0
- package/dist/features/tester/seed-data/authored/public-pages__bug-hunters.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/public-pages__bug-hunters.js +69 -0
- package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +263 -0
- package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.js +102 -0
- package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.js +234 -0
- package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.js +126 -0
- package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +255 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.js +59 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +88 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.js +51 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.js +35 -0
- package/dist/features/tester/seed-data/authored/selling__become-seller.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__become-seller.js +94 -0
- package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.js +107 -0
- package/dist/features/tester/seed-data/authored/selling__listing-a-product.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +285 -0
- package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +326 -0
- package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.js +136 -0
- package/dist/features/tester/seed-data/authored/selling__media-limits.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__media-limits.js +128 -0
- package/dist/features/tester/seed-data/authored/selling__sectionised-forms.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__sectionised-forms.js +167 -0
- package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.js +117 -0
- package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.js +88 -0
- package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.js +151 -0
- package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.js +105 -0
- package/dist/features/tester/seed-data/authored/selling__seller-guide.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__seller-guide.js +33 -0
- package/dist/features/tester/seed-data/authored/selling__seller-listing-types.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +347 -0
- package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +166 -0
- package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.js +89 -0
- package/dist/features/tester/seed-data/authored/selling__seller-orders.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__seller-orders.js +195 -0
- package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.js +180 -0
- package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.js +164 -0
- package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.js +116 -0
- package/dist/features/tester/seed-data/authored/seo__canonical-and-host.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/seo__canonical-and-host.js +111 -0
- package/dist/features/tester/seed-data/authored/seo__og-images.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/seo__og-images.js +91 -0
- package/dist/features/tester/seed-data/authored/seo__page-metadata.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/seo__page-metadata.js +122 -0
- package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +105 -0
- package/dist/features/tester/seed-data/carts-tester-seed-data.d.ts +3 -0
- package/dist/features/tester/seed-data/carts-tester-seed-data.js +70 -0
- package/dist/features/tester/seed-data/index.d.ts +1 -0
- package/dist/features/tester/seed-data/index.js +1 -0
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +744 -1
- package/dist/seed/carousel-slides-seed-data.js +1 -1
- package/dist/seed/cart-seed-data.js +11 -0
- package/dist/seed/index.d.ts +1 -1
- package/dist/seed/index.js +1 -1
- package/dist/seed/manifest.js +2 -2
- package/dist/seed/notifications-seed-data.js +5 -1
- package/dist/seed/products-standard-seed-data.js +2 -2
- package/dist/seed/reviews-seed-data.js +6 -1
- package/package.json +1 -1
- package/scripts/seed-cli.mjs +752 -746
|
@@ -0,0 +1,653 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* WHY: Authored six-part procedures for the buying/browsing-search checklist page.
|
|
3
|
+
* WHAT: 42 case(s), keyed by full checklist id.
|
|
4
|
+
*
|
|
5
|
+
* Written by hand, case by case, against the label each one states. There is no
|
|
6
|
+
* generator: the authoring scripts were deleted once it was clear they were
|
|
7
|
+
* scaffolding around work that is simply writing.
|
|
8
|
+
*
|
|
9
|
+
* @tag domain:tester
|
|
10
|
+
* @tag layer:seed
|
|
11
|
+
* @tag pattern:none
|
|
12
|
+
* @tag access:server-only
|
|
13
|
+
* @tag consumers:seed-data/authored/index.ts
|
|
14
|
+
* @tag sideEffects:none
|
|
15
|
+
*/
|
|
16
|
+
export const authored = {
|
|
17
|
+
"checklist-buying-browsing-search-art-stickers-default-not-empty": {
|
|
18
|
+
roles: ["guest"],
|
|
19
|
+
startPage: "/art",
|
|
20
|
+
steps: [
|
|
21
|
+
"Open /art.",
|
|
22
|
+
],
|
|
23
|
+
expectedBehaviour: "The /art page shows real Art and Sticker items on the Available tab without any filter or toggle needed. No Firestore error toast appears.",
|
|
24
|
+
expectedUiState: "At least one product card is visible. 'No products found' is NOT shown. No toast message mentions a missing index or a Firestore error.",
|
|
25
|
+
endResult: "Nothing is persisted.",
|
|
26
|
+
},
|
|
27
|
+
"checklist-buying-browsing-search-art-stickers-show-sold-adds-not-reveals": {
|
|
28
|
+
roles: ["guest"],
|
|
29
|
+
startPage: "/art",
|
|
30
|
+
steps: [
|
|
31
|
+
"Open /art.",
|
|
32
|
+
"Count the cards visible on the 'Available' tab.",
|
|
33
|
+
"Click the 'Sold' tab.",
|
|
34
|
+
"Count the cards on that tab.",
|
|
35
|
+
"Click back to the 'Available' tab.",
|
|
36
|
+
"Click 'Filters', tick 'Stickers', click 'Apply'.",
|
|
37
|
+
"Note the count on 'Available'.",
|
|
38
|
+
"Click the 'Sold' tab and note the count.",
|
|
39
|
+
],
|
|
40
|
+
expectedBehaviour: "The Available tab shows real items without the Sold tab being required. The Sold tab adds sold-out items on top — it is not the only place to see any results.",
|
|
41
|
+
expectedUiState: "Available tab: shows at least one card before any tab-switching. Sold tab: shows 'Beyblade Metal Fight Sticker Sheet (Sold Out)' (sticker-beyblade-metal-fight-sold-out) and/or 'Dragoon Galaxy Turbo — Fan Art Print (Sold Out)' (art-dragoon-galaxy-turbo-print-sold-out). Total cards across both tabs is greater than on Available alone.",
|
|
42
|
+
endResult: "Nothing is persisted.",
|
|
43
|
+
},
|
|
44
|
+
"checklist-buying-browsing-search-art-stickers-type-chips-narrow": {
|
|
45
|
+
roles: ["guest"],
|
|
46
|
+
startPage: "/art",
|
|
47
|
+
steps: [
|
|
48
|
+
"Open /art.",
|
|
49
|
+
"Click 'Filters'.",
|
|
50
|
+
"Read every checkbox under 'Listing type'.",
|
|
51
|
+
"Tick 'Art' only and click 'Apply'.",
|
|
52
|
+
"Click 'Filters', untick 'Art', tick 'Stickers', click 'Apply'.",
|
|
53
|
+
"Click 'Filters', untick 'Stickers', click 'Apply'.",
|
|
54
|
+
],
|
|
55
|
+
expectedBehaviour: "The Listing type section on /art shows exactly two checkboxes: Art and Stickers. Each alone narrows the grid to that type and returns at least one result. With neither ticked the grid shows both types.",
|
|
56
|
+
expectedUiState: "Drawer: exactly two Listing type checkboxes — Art and Stickers. Art only: grid shows Art cards only, at least one card present. Stickers only: grid shows Sticker cards only, at least one card present. Neither ticked: grid shows Art and Sticker cards mixed.",
|
|
57
|
+
endResult: "Nothing is persisted.",
|
|
58
|
+
},
|
|
59
|
+
"checklist-buying-browsing-search-auctions-show-ended-off-shows-live": {
|
|
60
|
+
roles: ["guest"],
|
|
61
|
+
startPage: "/products",
|
|
62
|
+
steps: [
|
|
63
|
+
"Open /products.",
|
|
64
|
+
"Click 'Filters', tick only 'Auctions', click 'Apply'.",
|
|
65
|
+
],
|
|
66
|
+
expectedBehaviour: "Live auctions appear on the Available tab without the 'Ended' toggle being turned on. The page is not empty.",
|
|
67
|
+
expectedUiState: "At least one auction card marked 'Live' is visible (e.g. 'Beyblade Burst B-100 Cho-Z Achilles' or 'Metal Fight Beyblade BB-99 Lightning L-Drago'). The grid is not empty and no error toast appears.",
|
|
68
|
+
endResult: "Nothing is persisted.",
|
|
69
|
+
},
|
|
70
|
+
"checklist-buying-browsing-search-auctions-show-ended-with-nondefault-sort": {
|
|
71
|
+
roles: ["guest"],
|
|
72
|
+
startPage: "/products",
|
|
73
|
+
steps: [
|
|
74
|
+
"Open /products.",
|
|
75
|
+
"Click 'Filters', tick only 'Auctions', click 'Apply'.",
|
|
76
|
+
"Open the 'Sort by' dropdown and select 'Highest Current Bid'.",
|
|
77
|
+
],
|
|
78
|
+
expectedBehaviour: "Sorting by 'Highest Current Bid' while 'Show ended' is off still returns only live auctions, sorted correctly by current bid descending. The grid is not empty.",
|
|
79
|
+
expectedUiState: "The grid shows live auction cards sorted from highest current bid to lowest. No ended auction cards are visible. No 'No products found' message appears.",
|
|
80
|
+
endResult: "Nothing is persisted.",
|
|
81
|
+
},
|
|
82
|
+
"checklist-buying-browsing-search-browse-categories": {
|
|
83
|
+
roles: ["guest"],
|
|
84
|
+
startPage: "/categories",
|
|
85
|
+
steps: [
|
|
86
|
+
"Open /categories.",
|
|
87
|
+
"Click the 'Beyblade Burst' card.",
|
|
88
|
+
],
|
|
89
|
+
expectedBehaviour: "The browser navigates to /categories/category-beyblade-burst and returns a listing of products in that category.",
|
|
90
|
+
expectedUiState: "The heading reads 'Beyblade Burst'. At least one product card is visible. The breadcrumb shows 'Home / Categories / Beyblade Burst'.",
|
|
91
|
+
endResult: "Nothing is persisted. Reloading /categories/category-beyblade-burst shows the same category listing.",
|
|
92
|
+
},
|
|
93
|
+
"checklist-buying-browsing-search-card-shows-seller-name": {
|
|
94
|
+
roles: ["guest"],
|
|
95
|
+
startPage: "/products",
|
|
96
|
+
steps: [
|
|
97
|
+
"Open /products in grid view.",
|
|
98
|
+
"Scan the visible cards for the 'by …' line under each title.",
|
|
99
|
+
"Click 'List view' in the toolbar to switch to list mode.",
|
|
100
|
+
"Scan the same cards in list view.",
|
|
101
|
+
"Open /auctions and scan the auction cards for a 'by …' line.",
|
|
102
|
+
"Open /pre-orders and scan the pre-order cards.",
|
|
103
|
+
"Open /prize-draws and scan the prize-draw cards.",
|
|
104
|
+
],
|
|
105
|
+
expectedBehaviour: "Every listing card on every page carries a 'by <store name>' line. The name is a readable store name, never a raw slug.",
|
|
106
|
+
expectedUiState: "Each card shows a line such as 'by Beyblade Arena' or 'by LetItRip Official'. No card shows a raw slug such as 'by store-beyblade-arena'.",
|
|
107
|
+
endResult: "Nothing is persisted. The store-name line is purely display data.",
|
|
108
|
+
},
|
|
109
|
+
"checklist-buying-browsing-search-compare-custom-fields": {
|
|
110
|
+
roles: ["buyer"],
|
|
111
|
+
startPage: "/products",
|
|
112
|
+
steps: [
|
|
113
|
+
"Sign in as vivaan.kapoor@gmail.com.",
|
|
114
|
+
"Open /products.",
|
|
115
|
+
"Tick the checkbox on 'Beyblade Burst B-97 Spryzen S2 (Video Demo, Wikimedia)' (product-beyblade-burst-spryzen-video-demo).",
|
|
116
|
+
"Tick the checkbox on 'Metal Fight Beyblade BB-118 Dark Bull (Video Demo, YouTube)' (product-beyblade-metal-dark-bull-video-demo).",
|
|
117
|
+
"Click the 'Compare' button in the bulk-action bar.",
|
|
118
|
+
],
|
|
119
|
+
expectedBehaviour: "A compare view opens that shows both items side by side. Beyond the standard rows (image, price, condition, brand, category, store), any custom spec fields defined on these products (e.g. dimensions, material, edition) appear as additional comparison rows.",
|
|
120
|
+
expectedUiState: "The compare table has columns for each selected product. Standard rows (Price, Condition, Brand, Category, Store) are present. At least one additional custom-spec row is present — it is not limited to only those six standard fields.",
|
|
121
|
+
endResult: "Nothing is persisted.",
|
|
122
|
+
},
|
|
123
|
+
"checklist-buying-browsing-search-compare-double-row-arrows": {
|
|
124
|
+
roles: ["guest"],
|
|
125
|
+
startPage: "/",
|
|
126
|
+
steps: [
|
|
127
|
+
"Open /.",
|
|
128
|
+
"Scroll to the 'Live Auctions' section.",
|
|
129
|
+
],
|
|
130
|
+
expectedBehaviour: "The scroll arrows for a double-row section span the full height of the double row.",
|
|
131
|
+
expectedUiState: "The left arrow and right arrow on the 'Live Auctions' strip are tall slivers that run the full combined height of both rows — not small circular buttons positioned at the vertical centre.",
|
|
132
|
+
endResult: "Nothing is persisted.",
|
|
133
|
+
},
|
|
134
|
+
"checklist-buying-browsing-search-default-listing-not-empty": {
|
|
135
|
+
roles: ["guest"],
|
|
136
|
+
startPage: "/products",
|
|
137
|
+
steps: [
|
|
138
|
+
"Open /products with no filters applied.",
|
|
139
|
+
"Open /auctions with no filters applied.",
|
|
140
|
+
"Open /pre-orders with no filters applied.",
|
|
141
|
+
"Open /art with no filters applied.",
|
|
142
|
+
"Open /prize-draws with no filters applied.",
|
|
143
|
+
],
|
|
144
|
+
expectedBehaviour: "Every listing page returns real items without any filter or toggle being needed. No page silently returns zero results due to a broken Firestore index.",
|
|
145
|
+
expectedUiState: "Each page shows at least one product card. None of the five pages shows 'No products found' as the default state, and no toast about a missing Firestore index appears.",
|
|
146
|
+
endResult: "Nothing is persisted.",
|
|
147
|
+
},
|
|
148
|
+
"checklist-buying-browsing-search-filter-drawer-combines-correctly": {
|
|
149
|
+
roles: ["guest"],
|
|
150
|
+
startPage: "/products",
|
|
151
|
+
steps: [
|
|
152
|
+
"Open /products.",
|
|
153
|
+
"Note the initial result count.",
|
|
154
|
+
"Click 'Filters'.",
|
|
155
|
+
"Set Price Range minimum to 500 and maximum to 1500.",
|
|
156
|
+
"Tick 'Takara-Tomy' under Brand.",
|
|
157
|
+
"Tick 'Beyblade X' under Category.",
|
|
158
|
+
"Tick 'New' under Condition.",
|
|
159
|
+
"Click 'Apply'.",
|
|
160
|
+
"Note the new result count.",
|
|
161
|
+
"Click 'Filters' and click 'Reset all', then 'Apply'.",
|
|
162
|
+
"Note the result count.",
|
|
163
|
+
],
|
|
164
|
+
inputs: { priceMin: 500, priceMax: 1500, brand: "Takara-Tomy", category: "Beyblade X", condition: "New" },
|
|
165
|
+
expectedBehaviour: "All four filters apply simultaneously and narrow the results. Every remaining card satisfies all four constraints. Reset all clears all filters and restores the full result count.",
|
|
166
|
+
expectedUiState: "After Apply: count is lower than the initial count; every card shows Takara-Tomy brand, Beyblade X category, New condition, and price between ₹500 and ₹1,500. After Reset all and Apply: count matches the original initial count and mixed types/brands reappear.",
|
|
167
|
+
endResult: "Nothing is persisted to the server.",
|
|
168
|
+
},
|
|
169
|
+
"checklist-buying-browsing-search-filter-drawer-facets-actually-filter": {
|
|
170
|
+
roles: ["guest"],
|
|
171
|
+
startPage: "/products",
|
|
172
|
+
steps: [
|
|
173
|
+
"Open /products.",
|
|
174
|
+
"Note the result count.",
|
|
175
|
+
"Click 'Filters'.",
|
|
176
|
+
"Expand 'Features' and select one feature option if any are listed.",
|
|
177
|
+
"Click 'Apply'.",
|
|
178
|
+
"Note the new result count and compare to the original.",
|
|
179
|
+
"Click 'Filters' and click 'Reset all', then 'Apply'.",
|
|
180
|
+
"Note the result count returns to the original.",
|
|
181
|
+
],
|
|
182
|
+
expectedBehaviour: "Selecting a Features value actually narrows the result set (count drops). The grid content changes to match the filter, not just the badge number.",
|
|
183
|
+
expectedUiState: "After selecting a Feature and applying: result count is lower than original, Filters badge increments, and the grid shows only items matching that feature. After Reset all: result count returns to the original count.",
|
|
184
|
+
endResult: "Nothing is persisted to the server.",
|
|
185
|
+
needsReview: true,
|
|
186
|
+
reviewNote: "The 'Tags' and 'Sublisting Type' sections described in the case label were not visible in the drawer during observation — only 'Features' was present. Steps use Features only. Revisit if Tags/Sublisting Type appear on the live site.",
|
|
187
|
+
},
|
|
188
|
+
"checklist-buying-browsing-search-filter-drawer-flips-hand-mode": {
|
|
189
|
+
roles: ["buyer"],
|
|
190
|
+
startPage: "/products",
|
|
191
|
+
steps: [
|
|
192
|
+
"Sign in as vivaan.kapoor@gmail.com.",
|
|
193
|
+
"Open /user/profile and enable 'Left-hand mode' if it is not already enabled.",
|
|
194
|
+
"Open /products.",
|
|
195
|
+
"Click 'Filters'.",
|
|
196
|
+
],
|
|
197
|
+
expectedBehaviour: "With Left-hand mode ON, the filter drawer opens from the left edge of the screen instead of the right edge.",
|
|
198
|
+
expectedUiState: "The Filters drawer slides in from the left side of the viewport. The drawer heading 'Filters' and filter sections are anchored to the left.",
|
|
199
|
+
endResult: "The Left-hand mode preference persists in the user's profile across sessions.",
|
|
200
|
+
},
|
|
201
|
+
"checklist-buying-browsing-search-filters": {
|
|
202
|
+
roles: ["guest"],
|
|
203
|
+
startPage: "/products",
|
|
204
|
+
steps: [
|
|
205
|
+
"Open /products.",
|
|
206
|
+
"Note the result count shown in pagination.",
|
|
207
|
+
"Click 'Filters'.",
|
|
208
|
+
"Under 'Price Range', set minimum to 500 and maximum to 1000.",
|
|
209
|
+
"Under 'Brand', tick 'Takara-Tomy'.",
|
|
210
|
+
"Under 'Condition', tick 'New'.",
|
|
211
|
+
"Click 'Apply'.",
|
|
212
|
+
],
|
|
213
|
+
expectedBehaviour: "The server re-queries with the price, brand, and condition constraints applied together. The result count drops below the original count.",
|
|
214
|
+
expectedUiState: "Every visible card is priced between ₹500 and ₹1,000, shows the 'Takara-Tomy' brand badge, and is listed as New. The Filters button shows a badge count of 3 or more.",
|
|
215
|
+
endResult: "Nothing is persisted on the server. Reloading the filtered URL shows the same filtered grid.",
|
|
216
|
+
},
|
|
217
|
+
"checklist-buying-browsing-search-free-shipping-toggle-actually-filters": {
|
|
218
|
+
roles: ["guest"],
|
|
219
|
+
startPage: "/products",
|
|
220
|
+
steps: [
|
|
221
|
+
"Open /products.",
|
|
222
|
+
"Note the result count in the pagination bar.",
|
|
223
|
+
"Click 'Filters'.",
|
|
224
|
+
"Toggle 'Free shipping only' ON under the Shipping section.",
|
|
225
|
+
"Click 'Apply'.",
|
|
226
|
+
"Note the new result count.",
|
|
227
|
+
"Scan the visible cards.",
|
|
228
|
+
],
|
|
229
|
+
expectedBehaviour: "Turning the free shipping toggle on reduces the result count. Every remaining card genuinely offers free shipping.",
|
|
230
|
+
expectedUiState: "The result count is lower than before the toggle. The Filters badge increments. Each visible card shows a free-shipping indicator. No card with a shipping fee is visible.",
|
|
231
|
+
endResult: "Nothing is persisted to the server.",
|
|
232
|
+
},
|
|
233
|
+
"checklist-buying-browsing-search-grid-follows-sidebar-not-viewport": {
|
|
234
|
+
roles: ["guest"],
|
|
235
|
+
startPage: "/products",
|
|
236
|
+
steps: [
|
|
237
|
+
"Open /products at 1440px wide.",
|
|
238
|
+
"Count the number of cards per row before the sidebar is open.",
|
|
239
|
+
"Click 'Filters' to open the desktop filter sidebar.",
|
|
240
|
+
"Count the number of cards per row while the sidebar is open.",
|
|
241
|
+
"Close the sidebar by clicking 'Filters' again or pressing Escape.",
|
|
242
|
+
"Count the cards per row again.",
|
|
243
|
+
],
|
|
244
|
+
expectedBehaviour: "Opening the sidebar reduces the card count per row by one because the grid container narrows. Each remaining card stays approximately the same width — the grid is not recalculated against the viewport.",
|
|
245
|
+
expectedUiState: "With sidebar open: one fewer column than without the sidebar. Card widths are visually similar before and after. Closing the sidebar restores the previous column count.",
|
|
246
|
+
endResult: "Nothing is persisted. Layout is purely CSS.",
|
|
247
|
+
},
|
|
248
|
+
"checklist-buying-browsing-search-grid-one-card-per-row-on-phone": {
|
|
249
|
+
roles: ["guest"],
|
|
250
|
+
startPage: "/products",
|
|
251
|
+
steps: [
|
|
252
|
+
"Open /products.",
|
|
253
|
+
"Resize the browser window to 375px wide.",
|
|
254
|
+
"Count how many cards appear side-by-side in the first row.",
|
|
255
|
+
"Resize to 768px wide and count again.",
|
|
256
|
+
"Resize to 1024px wide and count again.",
|
|
257
|
+
"Resize to 1440px wide and count again.",
|
|
258
|
+
"Open /stores and repeat the same four width checks.",
|
|
259
|
+
"Open /blog and repeat the same four width checks.",
|
|
260
|
+
],
|
|
261
|
+
expectedBehaviour: "At 375px exactly one card fills the row. At 768px two cards share the row. At 1024px and 1440px three or four cards share the row. Cards always fill the available width with no gap on the right.",
|
|
262
|
+
expectedUiState: "375px: 1 card per row, card fills the full content width. 768px: 2 cards per row. 1024px: 3 cards per row. 1440px: 3–4 cards per row. No half-width orphan cards at 375px.",
|
|
263
|
+
endResult: "Nothing is persisted. Layout is purely CSS.",
|
|
264
|
+
},
|
|
265
|
+
"checklist-buying-browsing-search-grid-short-last-row-not-stretched": {
|
|
266
|
+
roles: ["guest"],
|
|
267
|
+
startPage: "/products",
|
|
268
|
+
steps: [
|
|
269
|
+
"Open /products at 1440px wide (3 cards per row at desktop).",
|
|
270
|
+
"Click 'Filters', tick 'Standard' under Listing type, and click 'Apply'.",
|
|
271
|
+
"If the result count is a multiple of 3, additionally tick 'Takara-Tomy' under Brand and click 'Apply' again — repeat until the last row is short (1 or 2 cards, not a full row of 3).",
|
|
272
|
+
"Scroll to the last row of cards.",
|
|
273
|
+
],
|
|
274
|
+
expectedBehaviour: "The short last row is left-aligned. The lone card is exactly the same width as the cards in the rows above it, with empty space to its right.",
|
|
275
|
+
expectedUiState: "The last-row card(s) have the same width as full-row cards. The remaining column slots are empty whitespace — no card stretches to fill the full row width.",
|
|
276
|
+
endResult: "Nothing is persisted. Layout is purely CSS.",
|
|
277
|
+
},
|
|
278
|
+
"checklist-buying-browsing-search-homepage-event-raffles-section": {
|
|
279
|
+
roles: ["guest"],
|
|
280
|
+
startPage: "/",
|
|
281
|
+
steps: [
|
|
282
|
+
"Open /.",
|
|
283
|
+
"Scroll down looking for a 'Raffles' or 'Spin Wheels' strip.",
|
|
284
|
+
"Open /events in a new tab.",
|
|
285
|
+
"Note which events have a raffle or spin-wheel type and are currently active.",
|
|
286
|
+
],
|
|
287
|
+
expectedBehaviour: "If any raffle or spin-wheel event is active on /events, the homepage shows a 'Raffles & Spin Wheels' strip containing those events. The strip is absent only when genuinely no raffle event is active.",
|
|
288
|
+
expectedUiState: "The homepage shows a 'Raffles & Spin Wheels' heading with at least one event card beneath it (e.g. 'Daily Beyblade Pull! Spin for a Prize'). The same event must also appear on /events.",
|
|
289
|
+
endResult: "Nothing is persisted.",
|
|
290
|
+
},
|
|
291
|
+
"checklist-buying-browsing-search-homepage-prize-draws-section": {
|
|
292
|
+
roles: ["guest"],
|
|
293
|
+
startPage: "/",
|
|
294
|
+
steps: [
|
|
295
|
+
"Open /.",
|
|
296
|
+
"Scroll the full homepage from top to bottom.",
|
|
297
|
+
],
|
|
298
|
+
expectedBehaviour: "Every homepage strip either renders cards or is cleanly absent. No strip is replaced by an error message while the rest of the page loads normally.",
|
|
299
|
+
expectedUiState: "A 'Prize Draws' heading is visible with at least one prize-draw card beneath it (e.g. 'Beyblade Original Vintage Vault — Prize Draw'). No strip shows 'Something went wrong' or a blank gap where cards should be.",
|
|
300
|
+
endResult: "Nothing is persisted.",
|
|
301
|
+
},
|
|
302
|
+
"checklist-buying-browsing-search-listing-no-missing-message": {
|
|
303
|
+
roles: ["guest"],
|
|
304
|
+
startPage: "/products",
|
|
305
|
+
steps: [
|
|
306
|
+
"Open browser DevTools (F12) and go to the Console tab.",
|
|
307
|
+
"Open /products.",
|
|
308
|
+
"Wait for the page to fully load.",
|
|
309
|
+
"Read the console output.",
|
|
310
|
+
],
|
|
311
|
+
expectedBehaviour: "No 'MISSING_MESSAGE' error is logged. All translation keys resolve to readable labels.",
|
|
312
|
+
expectedUiState: "The Console tab shows no entry matching 'MISSING_MESSAGE: …'. Every visible label on the page is readable text, not a raw key string.",
|
|
313
|
+
endResult: "Nothing is persisted.",
|
|
314
|
+
},
|
|
315
|
+
"checklist-buying-browsing-search-listing-toggles-persist-across-pagination": {
|
|
316
|
+
roles: ["guest"],
|
|
317
|
+
startPage: "/products",
|
|
318
|
+
steps: [
|
|
319
|
+
"Open /products.",
|
|
320
|
+
"Click the 'Sold & Ended' tab.",
|
|
321
|
+
"Click 'Page 2' in the pagination bar.",
|
|
322
|
+
"Read the active tab and the URL.",
|
|
323
|
+
],
|
|
324
|
+
expectedBehaviour: "Navigating to page 2 while the 'Sold & Ended' tab is active keeps the tab active. Page 2 shows sold and ended items, not available items.",
|
|
325
|
+
expectedUiState: "The 'Sold & Ended' tab remains highlighted after clicking Page 2. The URL contains both the availability and page parameters. The grid on page 2 shows sold/ended items, not available ones.",
|
|
326
|
+
endResult: "Nothing is persisted to the server. State is URL-encoded.",
|
|
327
|
+
},
|
|
328
|
+
"checklist-buying-browsing-search-listing-toolbar-collapsed-on-mobile": {
|
|
329
|
+
roles: ["guest"],
|
|
330
|
+
startPage: "/products",
|
|
331
|
+
steps: [
|
|
332
|
+
"Resize the browser to 375px wide.",
|
|
333
|
+
"Open /products.",
|
|
334
|
+
"Click the 'Show Toolbar' strip.",
|
|
335
|
+
"Open /auctions.",
|
|
336
|
+
"Navigate back to /products.",
|
|
337
|
+
"Resize to 1440px wide.",
|
|
338
|
+
"Open /products.",
|
|
339
|
+
],
|
|
340
|
+
expectedBehaviour: "At 375px the toolbar opens collapsed to a single strip. Tapping it expands the full search/filter/sort toolbar. After navigating away and back the toolbar stays expanded because the user chose to expand it. At 1440px the toolbar is open by default.",
|
|
341
|
+
expectedUiState: "375px initial: a single 'Show Toolbar' strip is visible; no search box or filter chips are visible above it. After tap: a search field, Filters button, Sort control, and view toggles are all visible. After navigating away and back: toolbar is still expanded. 1440px: toolbar is fully visible without tapping.",
|
|
342
|
+
endResult: "The toolbar expanded/collapsed preference is preserved across navigation within the session but is not persisted to the server.",
|
|
343
|
+
},
|
|
344
|
+
"checklist-buying-browsing-search-listing-toolbar-forced-open-on-selection": {
|
|
345
|
+
roles: ["seller"],
|
|
346
|
+
startPage: "/store/products",
|
|
347
|
+
steps: [
|
|
348
|
+
"Resize the browser to 375px wide.",
|
|
349
|
+
"Open /store/products (the seller's own product listing).",
|
|
350
|
+
"Collapse the toolbar by clicking 'Hide Toolbar' if it is open.",
|
|
351
|
+
"Tick the checkbox on one product card to select it.",
|
|
352
|
+
],
|
|
353
|
+
expectedBehaviour: "Selecting a row while the toolbar is collapsed forces the toolbar to open so the bulk-action bar becomes visible.",
|
|
354
|
+
expectedUiState: "The toolbar is visible after the checkbox is ticked. The bulk-action bar (with actions such as 'Delete' or 'Publish') is visible and not cut off.",
|
|
355
|
+
endResult: "Nothing is persisted. The forced-open state is UI-only.",
|
|
356
|
+
},
|
|
357
|
+
"checklist-buying-browsing-search-pagination": {
|
|
358
|
+
roles: ["guest"],
|
|
359
|
+
startPage: "/products",
|
|
360
|
+
steps: [
|
|
361
|
+
"Open /products.",
|
|
362
|
+
"Note the current page indicator in the pagination bar (Page 1).",
|
|
363
|
+
"Click the 'Page 2' button in the pagination bar.",
|
|
364
|
+
"Wait for the grid to load.",
|
|
365
|
+
"Click the 'Next page' (›) button.",
|
|
366
|
+
"Click the 'Previous page' (‹) button.",
|
|
367
|
+
],
|
|
368
|
+
expectedBehaviour: "Each pagination action loads the correct page of results. The URL updates to reflect the page number. The grid is not empty on any valid page.",
|
|
369
|
+
expectedUiState: "After clicking Page 2: the pagination bar highlights Page 2 and the URL contains 'page=2'. After Next: the next page loads with different cards. After Previous: the previous page loads. No page shows 'No products found' unless the total results genuinely fit on one page.",
|
|
370
|
+
endResult: "Nothing is persisted to the server. The page parameter is URL state.",
|
|
371
|
+
},
|
|
372
|
+
"checklist-buying-browsing-search-pre-orders-reachable-from-products": {
|
|
373
|
+
roles: ["guest"],
|
|
374
|
+
startPage: "/products",
|
|
375
|
+
steps: [
|
|
376
|
+
"Open /products.",
|
|
377
|
+
"Click 'Filters'.",
|
|
378
|
+
"Tick 'Pre-Orders' under Listing type.",
|
|
379
|
+
"Click 'Apply'.",
|
|
380
|
+
"Scan the grid cards for type badges.",
|
|
381
|
+
],
|
|
382
|
+
expectedBehaviour: "The grid is filtered to show only pre-order items. At least one pre-order card with a 'Pre-Order' badge is visible.",
|
|
383
|
+
expectedUiState: "Every visible card shows a 'Pre-Order' badge. At least one card is shown — e.g. 'Beyblade X BX-08 Booster — Next Wave'. No card shows a type badge other than 'Pre-Order'.",
|
|
384
|
+
endResult: "Nothing is persisted to the server.",
|
|
385
|
+
},
|
|
386
|
+
"checklist-buying-browsing-search-product-filter-status-labels": {
|
|
387
|
+
roles: ["admin"],
|
|
388
|
+
startPage: "/products",
|
|
389
|
+
steps: [
|
|
390
|
+
"Sign in as admin@letitrip.in.",
|
|
391
|
+
"Open /products.",
|
|
392
|
+
"Click 'Filters'.",
|
|
393
|
+
"Scroll to or expand the 'Status' section in the drawer.",
|
|
394
|
+
"Read every option label under Status.",
|
|
395
|
+
],
|
|
396
|
+
expectedBehaviour: "Every Status option displays a readable word — Published, Draft, In Review, or Archived — never a raw i18n key.",
|
|
397
|
+
expectedUiState: "The Status section lists labels such as 'Published', 'Draft', 'In Review', 'Archived'. No label reads as a key like 'filters.statusInReview' or 'status.draft'.",
|
|
398
|
+
endResult: "Nothing is persisted.",
|
|
399
|
+
},
|
|
400
|
+
"checklist-buying-browsing-search-product-type-chip-dedicated-page-link": {
|
|
401
|
+
roles: ["guest"],
|
|
402
|
+
startPage: "/products",
|
|
403
|
+
steps: [
|
|
404
|
+
"Open /products.",
|
|
405
|
+
"Click 'Filters'.",
|
|
406
|
+
"Tick only 'Auctions' under Listing type.",
|
|
407
|
+
"Read the contents of the drawer below the Listing type checkboxes, without pressing Apply.",
|
|
408
|
+
"Click the 'Full Auctions filters →' link.",
|
|
409
|
+
"Navigate back to /products.",
|
|
410
|
+
"Click 'Filters', untick 'Auctions', tick only 'Pre-Orders', and read for a similar link.",
|
|
411
|
+
"Navigate back to /products.",
|
|
412
|
+
"Click 'Filters', tick 'Auctions' and 'Pre-Orders' both, and read for a link.",
|
|
413
|
+
"Navigate back to /products.",
|
|
414
|
+
"Click 'Filters', untick all, and read for a link.",
|
|
415
|
+
],
|
|
416
|
+
expectedBehaviour: "When exactly one type that has its own browse page is ticked, a 'Full <type> filters →' link appears in the drawer below the Listing type section (before pressing Apply). The link navigates to that type's dedicated page. With two types ticked or none ticked, the link does not appear.",
|
|
417
|
+
expectedUiState: "Auctions only: 'Full Auctions filters →' link is visible; clicking it lands on /auctions. Pre-Orders only: 'Full Pre-Orders filters →' link is visible. Both ticked: no link visible. None ticked: no link visible.",
|
|
418
|
+
endResult: "Nothing is persisted to the server.",
|
|
419
|
+
},
|
|
420
|
+
"checklist-buying-browsing-search-product-type-chip-drives-sort-options": {
|
|
421
|
+
roles: ["guest"],
|
|
422
|
+
startPage: "/products",
|
|
423
|
+
steps: [
|
|
424
|
+
"Open /products.",
|
|
425
|
+
"Click 'Filters', tick only 'Auctions', click 'Apply'.",
|
|
426
|
+
"Open the 'Sort by' dropdown and read the available options.",
|
|
427
|
+
"Click 'Filters', untick 'Auctions', tick only 'Pre-Orders', click 'Apply'.",
|
|
428
|
+
"Open the 'Sort by' dropdown and read the available options.",
|
|
429
|
+
"Click 'Filters', tick 'Auctions' as well (both Auctions and Pre-Orders now ticked), click 'Apply'.",
|
|
430
|
+
"Open the 'Sort by' dropdown and read the available options.",
|
|
431
|
+
],
|
|
432
|
+
expectedBehaviour: "With only Auctions selected, 'Ending Soon' appears in Sort. With only Pre-Orders, 'Earliest Delivery' appears. With both selected, only shared sorts (Newest, Price, Name) remain — 'Ending Soon' and 'Earliest Delivery' are both absent.",
|
|
433
|
+
expectedUiState: "Auctions only: Sort dropdown includes 'Ending Soon'. Pre-Orders only: Sort dropdown includes 'Earliest Delivery'; 'Ending Soon' is absent. Both: Sort dropdown contains only generic options like 'Newest First', 'Price low to high', 'Price high to low'.",
|
|
434
|
+
endResult: "Nothing is persisted to the server.",
|
|
435
|
+
},
|
|
436
|
+
"checklist-buying-browsing-search-product-type-chip-sort-resets-no-empty-page": {
|
|
437
|
+
roles: ["guest"],
|
|
438
|
+
startPage: "/products",
|
|
439
|
+
steps: [
|
|
440
|
+
"Open /products.",
|
|
441
|
+
"Click 'Filters', tick only 'Auctions', click 'Apply'.",
|
|
442
|
+
"Open the 'Sort by' dropdown and select 'Ending Soon'.",
|
|
443
|
+
"Click 'Filters', untick 'Auctions', tick 'Standard', click 'Apply'.",
|
|
444
|
+
"Open the 'Sort by' dropdown and read the selected option.",
|
|
445
|
+
],
|
|
446
|
+
expectedBehaviour: "Switching from the Auctions-only selection to Standard resets the sort to a generic option (Newest First). The grid repopulates with Standard products and is not empty.",
|
|
447
|
+
expectedUiState: "After switching to Standard: the Sort dropdown reads 'Newest First' (or another generic sort, not 'Ending Soon'). The grid shows Standard product cards. No 'No products found' state and no error is shown.",
|
|
448
|
+
endResult: "Nothing is persisted to the server.",
|
|
449
|
+
},
|
|
450
|
+
"checklist-buying-browsing-search-product-type-chips-cover-all-types": {
|
|
451
|
+
roles: ["guest"],
|
|
452
|
+
startPage: "/products",
|
|
453
|
+
steps: [
|
|
454
|
+
"Open /products.",
|
|
455
|
+
"Click 'Filters'.",
|
|
456
|
+
"Count every checkbox under the 'Listing type' heading.",
|
|
457
|
+
"Read each checkbox label.",
|
|
458
|
+
],
|
|
459
|
+
expectedBehaviour: "Exactly nine listing-type checkboxes are present. All nine are: Standard, Auctions, Pre-Orders, Prize Draws, Classifieds, Digital Codes, Live Items, Art, Stickers. No checkbox labelled 'Bundles' is present.",
|
|
460
|
+
expectedUiState: "The Listing type section shows nine checkboxes: Standard, Auctions, Pre-Orders, Prize Draws, Classifieds, Digital Codes, Live Items, Art, Stickers. No 'Bundles' checkbox is present.",
|
|
461
|
+
endResult: "Nothing is persisted.",
|
|
462
|
+
},
|
|
463
|
+
"checklist-buying-browsing-search-product-type-chips-multi-select": {
|
|
464
|
+
roles: ["guest"],
|
|
465
|
+
startPage: "/products",
|
|
466
|
+
steps: [
|
|
467
|
+
"Open /products.",
|
|
468
|
+
"Click 'Filters'.",
|
|
469
|
+
"Tick 'Auctions'.",
|
|
470
|
+
"Tick 'Pre-Orders' without unticking 'Auctions'.",
|
|
471
|
+
"Click 'Apply'.",
|
|
472
|
+
"Click 'Filters' again to reopen the drawer.",
|
|
473
|
+
"Read which boxes are ticked.",
|
|
474
|
+
"Click 'Close'.",
|
|
475
|
+
"Untick both 'Auctions' and 'Pre-Orders' in the drawer.",
|
|
476
|
+
"Click 'Apply'.",
|
|
477
|
+
],
|
|
478
|
+
expectedBehaviour: "Both checkboxes remain ticked after Apply. The grid shows a mix of Auction and Pre-Order cards. After unticking both and applying, the grid returns to showing all types.",
|
|
479
|
+
expectedUiState: "After first Apply: the Filters badge count is 2; the grid shows cards labelled 'Auction' and 'Pre-Order'. Reopening drawer: both Auctions and Pre-Orders are ticked. After second Apply with none ticked: badge count returns to 0 and cards of multiple types reappear.",
|
|
480
|
+
endResult: "Nothing is persisted to the server. Filter state is URL state.",
|
|
481
|
+
},
|
|
482
|
+
"checklist-buying-browsing-search-product-type-chips-none-means-all": {
|
|
483
|
+
roles: ["guest"],
|
|
484
|
+
startPage: "/products",
|
|
485
|
+
steps: [
|
|
486
|
+
"Open /products.",
|
|
487
|
+
"Click 'Filters' and confirm no 'Listing type' boxes are ticked.",
|
|
488
|
+
"Click 'Close'.",
|
|
489
|
+
"Scan the badges on the first page of cards.",
|
|
490
|
+
],
|
|
491
|
+
expectedBehaviour: "With no Listing type filter applied the grid shows items of multiple types — at least two different type badges are visible on the first page.",
|
|
492
|
+
expectedUiState: "At least two different type badges are visible on page 1, for example an 'Auction' card alongside a 'Digital Code' card or a 'Pre-Order' alongside a 'Classified'.",
|
|
493
|
+
endResult: "Nothing is persisted.",
|
|
494
|
+
},
|
|
495
|
+
"checklist-buying-browsing-search-product-type-filter-counts-in-badge": {
|
|
496
|
+
roles: ["guest"],
|
|
497
|
+
startPage: "/products",
|
|
498
|
+
steps: [
|
|
499
|
+
"Open /products.",
|
|
500
|
+
"Click 'Filters'.",
|
|
501
|
+
"Tick 'Auctions'.",
|
|
502
|
+
"Click 'Apply'.",
|
|
503
|
+
"Note the new number on the Filters badge.",
|
|
504
|
+
"Click 'Filters' again.",
|
|
505
|
+
"Click 'Reset all'.",
|
|
506
|
+
"Click 'Apply'.",
|
|
507
|
+
"Note the Filters badge number and the grid content.",
|
|
508
|
+
],
|
|
509
|
+
expectedBehaviour: "Ticking one Listing type box and pressing Apply increases the Filters badge by 1. 'Reset all' unticks every type box and restores the badge to 0, and the grid repopulates with all listing types.",
|
|
510
|
+
expectedUiState: "After ticking Auctions and applying: badge shows 1 (or higher if defaults add to it). After Reset all and Apply: badge shows 0 and the grid contains mixed listing types.",
|
|
511
|
+
endResult: "Nothing is persisted to the server.",
|
|
512
|
+
},
|
|
513
|
+
"checklist-buying-browsing-search-product-type-filter-lives-in-drawer": {
|
|
514
|
+
roles: ["guest"],
|
|
515
|
+
startPage: "/products",
|
|
516
|
+
steps: [
|
|
517
|
+
"Open /products.",
|
|
518
|
+
"Scan the area between the availability tabs and the product grid for any row of pill chips labelled Standard, Auctions, Pre-Orders, etc.",
|
|
519
|
+
"Click 'Filters' to open the drawer.",
|
|
520
|
+
"Scroll to the top of the drawer and look for a 'Listing type' section.",
|
|
521
|
+
],
|
|
522
|
+
expectedBehaviour: "No TYPE chip row exists between the tabs and the grid. The listing-type filter is exclusively inside the Filters drawer, under a 'Listing type' heading.",
|
|
523
|
+
expectedUiState: "The area between the 'Available / Sold & Ended / All' tabs and the product grid contains no pill chips for listing type. Inside the Filters drawer a 'Listing type' section appears at the top with checkboxes.",
|
|
524
|
+
endResult: "Nothing is persisted.",
|
|
525
|
+
},
|
|
526
|
+
"checklist-buying-browsing-search-product-type-pending-until-apply": {
|
|
527
|
+
roles: ["guest"],
|
|
528
|
+
startPage: "/products",
|
|
529
|
+
steps: [
|
|
530
|
+
"Open /products with no filters applied.",
|
|
531
|
+
"Note the types of cards visible in the grid.",
|
|
532
|
+
"Click 'Filters'.",
|
|
533
|
+
"Tick 'Auctions' and watch the grid behind the open drawer.",
|
|
534
|
+
"Click 'Apply'.",
|
|
535
|
+
"Note the grid now.",
|
|
536
|
+
"Click 'Filters' again.",
|
|
537
|
+
"Tick 'Art'.",
|
|
538
|
+
"Click the X (Close) button on the drawer — do not click Apply.",
|
|
539
|
+
"Click 'Filters' again to reopen and read which boxes are ticked.",
|
|
540
|
+
],
|
|
541
|
+
expectedBehaviour: "Ticking a box does not change the grid until Apply is pressed. Closing with X discards pending changes — the grid and the ticked state both revert to what was applied before.",
|
|
542
|
+
expectedUiState: "While drawer is open with Auctions ticked: grid behind the drawer still shows mixed types. After Apply: grid shows only Auction cards. After ticking Art and closing with X: grid still shows only Auction cards (Art was discarded). Reopening drawer: only Auctions is ticked; Art is unticked.",
|
|
543
|
+
endResult: "Nothing is persisted to the server.",
|
|
544
|
+
},
|
|
545
|
+
"checklist-buying-browsing-search-product-type-selection-survives-reload": {
|
|
546
|
+
roles: ["guest"],
|
|
547
|
+
startPage: "/products",
|
|
548
|
+
steps: [
|
|
549
|
+
"Open /products.",
|
|
550
|
+
"Click 'Filters', tick 'Auctions' and 'Art', click 'Apply'.",
|
|
551
|
+
"Copy the current URL from the address bar.",
|
|
552
|
+
"Open the copied URL in a new browser tab.",
|
|
553
|
+
"Click 'Filters' in the new tab and read which boxes are ticked.",
|
|
554
|
+
"Close the new tab.",
|
|
555
|
+
"Press the browser Back button in the original tab.",
|
|
556
|
+
"Click 'Filters' in the original tab and read which boxes are ticked.",
|
|
557
|
+
],
|
|
558
|
+
expectedBehaviour: "The applied listing types are encoded in the URL. Opening the URL in a new tab shows the same filtered grid with Auctions and Art ticked. Pressing Back restores the previous selection.",
|
|
559
|
+
expectedUiState: "New tab: grid shows Auction and Art cards; Filters drawer shows Auctions and Art ticked. After Back: the previous filter state (before the Auctions + Art selection) is restored.",
|
|
560
|
+
endResult: "Nothing is persisted to the server. Filter state is URL state.",
|
|
561
|
+
},
|
|
562
|
+
"checklist-buying-browsing-search-product-type-toggles-follow-selection": {
|
|
563
|
+
roles: ["guest"],
|
|
564
|
+
startPage: "/products",
|
|
565
|
+
steps: [
|
|
566
|
+
"Open /products.",
|
|
567
|
+
"Click 'Filters', tick only 'Auctions', click 'Apply'.",
|
|
568
|
+
"Read the label of the middle availability tab above the grid.",
|
|
569
|
+
"Click that middle tab.",
|
|
570
|
+
"Click 'Filters', untick 'Auctions', tick only 'Standard', click 'Apply'.",
|
|
571
|
+
"Read the label of the middle availability tab.",
|
|
572
|
+
"Click that middle tab.",
|
|
573
|
+
],
|
|
574
|
+
expectedBehaviour: "With only Auctions selected, the middle tab is labelled 'Ended'. With only Standard selected, the middle tab is labelled 'Sold'. Clicking the tab in each case shows the respective unavailable items of that type.",
|
|
575
|
+
expectedUiState: "Auctions only: middle tab reads 'Ended'; clicking it shows ended auction cards. Standard only: middle tab reads 'Sold'; clicking it shows sold-out product cards.",
|
|
576
|
+
endResult: "Nothing is persisted to the server.",
|
|
577
|
+
},
|
|
578
|
+
"checklist-buying-browsing-search-search": {
|
|
579
|
+
roles: ["guest"],
|
|
580
|
+
startPage: "/products",
|
|
581
|
+
steps: [
|
|
582
|
+
"Open /products and read the total result count.",
|
|
583
|
+
"Type 'Valkyrie' into the 'Search products...' field.",
|
|
584
|
+
"Click the 'Search' button.",
|
|
585
|
+
"Read the result count and every card title.",
|
|
586
|
+
"Clear the field, type 'zzzznope', and click 'Search'.",
|
|
587
|
+
"Read the result count.",
|
|
588
|
+
],
|
|
589
|
+
inputs: { matchingQuery: "Valkyrie", nonsenseQuery: "zzzznope" },
|
|
590
|
+
expectedBehaviour: "The grid narrows to titles and descriptions matching the term. The nonsense query is the control that proves it is narrowing at all — a search that silently returns everything looks exactly like a working search when the term happens to match most of a small catalogue.",
|
|
591
|
+
expectedUiState: "'Valkyrie' returns a smaller count than the unfiltered grid, and every card shown contains the word — 'Beyblade Burst B-01 Valkyrie' and 'Beyblade Burst Valtryek V3 (Sold Out)' style matches. 'zzzznope' returns zero results and an empty state, NOT the full catalogue.",
|
|
592
|
+
expectedData: { nonsenseResultCount: 0 },
|
|
593
|
+
endResult: "Nothing persists; the query lives in the URL, so reloading reproduces the same filtered grid.",
|
|
594
|
+
},
|
|
595
|
+
"checklist-buying-browsing-search-search-filter-sort-combo": {
|
|
596
|
+
roles: ["guest"],
|
|
597
|
+
startPage: "/products",
|
|
598
|
+
steps: [
|
|
599
|
+
"Open /products.",
|
|
600
|
+
"Type 'Beyblade' in the search field and click 'Search'.",
|
|
601
|
+
"Click 'Filters', tick 'Auctions', click 'Apply'.",
|
|
602
|
+
"Open the 'Sort by' dropdown and select 'Ending Soon'.",
|
|
603
|
+
"Read the URL.",
|
|
604
|
+
"Click 'Page 2' in the pagination bar if available.",
|
|
605
|
+
"Read the URL and note the result count.",
|
|
606
|
+
],
|
|
607
|
+
inputs: { query: "Beyblade", listingType: "Auctions", sort: "Ending Soon" },
|
|
608
|
+
expectedBehaviour: "All three — search query, listing type filter, and sort — stay applied together. Pagination reflects the combined narrowed result count, not the unfiltered total.",
|
|
609
|
+
expectedUiState: "The URL contains the search term, the listing-type parameter, and the sort parameter together. The grid shows only auction cards whose title includes 'Beyblade', sorted by ending soonest. Page 2 (if navigated) continues this filtered/sorted set, not the unfiltered set.",
|
|
610
|
+
endResult: "Nothing is persisted to the server. State is URL-encoded.",
|
|
611
|
+
},
|
|
612
|
+
"checklist-buying-browsing-search-show-sold-toggle-reveals-items": {
|
|
613
|
+
roles: ["guest"],
|
|
614
|
+
startPage: "/products",
|
|
615
|
+
steps: [
|
|
616
|
+
"Open /products.",
|
|
617
|
+
"Click the 'Sold & Ended' tab.",
|
|
618
|
+
"Scan the grid for 'Test Collectible — Sold Out (Hidden by Default)' (product-tester-standard-sold).",
|
|
619
|
+
"Click the 'Available' tab.",
|
|
620
|
+
"Open /auctions.",
|
|
621
|
+
"Click the 'Ended' tab.",
|
|
622
|
+
"Scan the grid for 'Test Auction — Already Won' (auction-tester-sandbox-won).",
|
|
623
|
+
"Click the 'Live' tab.",
|
|
624
|
+
"Open /prize-draws.",
|
|
625
|
+
"Click the 'Closed' tab.",
|
|
626
|
+
"Scan the grid for 'Test Prize Draw — Already Closed' (prizedraw-tester-sandbox-closed).",
|
|
627
|
+
"Click the 'Open' tab.",
|
|
628
|
+
],
|
|
629
|
+
expectedBehaviour: "The 'Available' / 'Live' / 'Open' tab hides sold-out, ended, and closed items by default. The 'Sold & Ended' / 'Ended' / 'Closed' tab reveals them.",
|
|
630
|
+
expectedUiState: "'Test Collectible — Sold Out' appears on 'Sold & Ended' tab and is absent on 'Available'. 'Test Auction — Already Won' appears on 'Ended' and is absent on 'Live'. 'Test Prize Draw — Already Closed' appears on 'Closed' and is absent on 'Open'.",
|
|
631
|
+
endResult: "Nothing is persisted. Tab state is URL state only.",
|
|
632
|
+
},
|
|
633
|
+
"checklist-buying-browsing-search-sort-options-per-listing-type": {
|
|
634
|
+
roles: ["guest"],
|
|
635
|
+
startPage: "/products",
|
|
636
|
+
steps: [
|
|
637
|
+
"Open /products with no type filter.",
|
|
638
|
+
"Open the 'Sort by' dropdown and select 'Price low to high'.",
|
|
639
|
+
"Note the order of cards (cheapest first).",
|
|
640
|
+
"Open the 'Sort by' dropdown and select 'Price high to low'.",
|
|
641
|
+
"Note the order of cards (most expensive first).",
|
|
642
|
+
"Click 'Filters', tick only 'Auctions', click 'Apply'.",
|
|
643
|
+
"Open Sort and select 'Ending Soon'.",
|
|
644
|
+
"Note the order of auction cards.",
|
|
645
|
+
"Click 'Filters', untick 'Auctions', tick only 'Pre-Orders', click 'Apply'.",
|
|
646
|
+
"Open Sort and select 'Earliest Delivery'.",
|
|
647
|
+
"Note the order of pre-order cards.",
|
|
648
|
+
],
|
|
649
|
+
expectedBehaviour: "Each sort option genuinely reorders the visible results. Price sorts change the order by price. Ending Soon reorders auctions by end date. Earliest Delivery reorders pre-orders by delivery date.",
|
|
650
|
+
expectedUiState: "Price low to high: cheapest card first (e.g. ₹149 before ₹1,299). Price high to low: most expensive first. Ending Soon: auctions with soonest end date appear first. Earliest Delivery: pre-orders with earliest expected delivery appear first.",
|
|
651
|
+
endResult: "Nothing is persisted.",
|
|
652
|
+
},
|
|
653
|
+
};
|