@mohasinac/appkit 4.34.1 → 4.35.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/_internal/client/features/lottery/LotteryAdminEditView.js +32 -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/tester-checklist-seed-data.js +744 -1
- package/dist/seed/carousel-slides-seed-data.js +1 -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 +6 -0
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* WHY: Authored six-part procedures for the buying/buying-checkout checklist page.
|
|
3
|
+
* WHAT: 30 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-buying-checkout-add-to-cart": {
|
|
18
|
+
roles: ["buyer"],
|
|
19
|
+
startPage: "/products/product-tester-standard-1",
|
|
20
|
+
steps: [
|
|
21
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
22
|
+
"Open /products/product-tester-standard-1.",
|
|
23
|
+
"Click 'Add to Cart'.",
|
|
24
|
+
"Open /cart.",
|
|
25
|
+
],
|
|
26
|
+
inputs: { productId: "product-tester-standard-1", quantity: 1, price: 199 },
|
|
27
|
+
expectedBehaviour: "The item is added to the buyer's cart and persists when the cart page is opened.",
|
|
28
|
+
expectedUiState: "The Cart tab on /cart shows 'Test Gadget — Standard Listing #1' with quantity 1 and price ₹199.00. The cart item count badge in the header has increased.",
|
|
29
|
+
expectedData: { cartLineQuantity: 1, cartLinePrice: 199 },
|
|
30
|
+
endResult: "After reloading /cart, 'Test Gadget — Standard Listing #1' is still listed in the Cart tab.",
|
|
31
|
+
},
|
|
32
|
+
"checklist-buying-buying-checkout-add-to-cart-max-quantity": {
|
|
33
|
+
roles: ["buyer"],
|
|
34
|
+
startPage: "/products/product-tester-standard-1",
|
|
35
|
+
steps: [
|
|
36
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
37
|
+
"Open /products/product-tester-standard-1.",
|
|
38
|
+
"Click 'Add to Cart'.",
|
|
39
|
+
"Open /cart.",
|
|
40
|
+
"Click the '+' (Increase quantity) button for 'Test Gadget — Standard Listing #1' repeatedly until it stops incrementing.",
|
|
41
|
+
],
|
|
42
|
+
inputs: { productId: "product-tester-standard-1", stockQuantity: 10 },
|
|
43
|
+
expectedBehaviour: "The quantity control caps at the listing's available stock and does not allow the buyer to exceed it. A message or disabled state makes the limit clear.",
|
|
44
|
+
expectedUiState: "The '+' (Increase quantity) button becomes disabled or unresponsive once the quantity matches the available stock shown on the product page ('Only 10 left — order soon!'). A message indicating the cap is visible.",
|
|
45
|
+
expectedData: { maxSelectableQuantity: 10 },
|
|
46
|
+
endResult: "After reloading /cart, the quantity shown does not exceed the stock cap that was enforced.",
|
|
47
|
+
},
|
|
48
|
+
"checklist-buying-buying-checkout-add-to-cart-out-of-stock": {
|
|
49
|
+
roles: ["buyer"],
|
|
50
|
+
startPage: "/products/product-beyblade-burst-valtryek-v3-sold-out",
|
|
51
|
+
steps: [
|
|
52
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
53
|
+
"Open /products/product-beyblade-burst-valtryek-v3-sold-out.",
|
|
54
|
+
],
|
|
55
|
+
expectedBehaviour: "The system prevents the buyer from adding an out-of-stock listing to the cart. No cart mutation occurs.",
|
|
56
|
+
expectedUiState: "The product detail page shows '✗ Out of Stock'. No 'Add to Cart' button is present — the purchase action area is absent or replaced by the out-of-stock indicator.",
|
|
57
|
+
expectedData: { addToCartButtonPresent: false },
|
|
58
|
+
endResult: "After reloading /products/product-beyblade-burst-valtryek-v3-sold-out, the page still shows '✗ Out of Stock' with no 'Add to Cart' button.",
|
|
59
|
+
},
|
|
60
|
+
"checklist-buying-buying-checkout-checkout-back-navigation": {
|
|
61
|
+
roles: ["buyer"],
|
|
62
|
+
startPage: "/checkout",
|
|
63
|
+
steps: [
|
|
64
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
65
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
66
|
+
"Open /cart and click 'Proceed to checkout'.",
|
|
67
|
+
"On Step 1, select the existing address and click 'Continue' to advance to Step 2.",
|
|
68
|
+
"Press the browser back button.",
|
|
69
|
+
"Click 'Continue' again to advance to Step 2.",
|
|
70
|
+
"Click 'Continue to payment' to advance to Step 3.",
|
|
71
|
+
"Press the browser back button again.",
|
|
72
|
+
"Click 'Continue to payment' and complete checkout normally.",
|
|
73
|
+
],
|
|
74
|
+
expectedBehaviour: "Using the browser back button mid-checkout returns the buyer to the previous step with the cart state intact and does not double-submit or duplicate any order.",
|
|
75
|
+
expectedUiState: "After pressing back from Step 2, Step 1 is shown with the previously selected address still selected. After pressing back from Step 3, Step 2 is shown. The Order Summary consistently shows the correct cart items throughout.",
|
|
76
|
+
expectedData: { ordersCreated: 1 },
|
|
77
|
+
endResult: "Only one order is created at the end. No duplicate orders appear in the buyer's order history.",
|
|
78
|
+
},
|
|
79
|
+
"checklist-buying-buying-checkout-checkout-cash-payment-no-validation-error": {
|
|
80
|
+
roles: ["buyer"],
|
|
81
|
+
startPage: "/checkout",
|
|
82
|
+
steps: [
|
|
83
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
84
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
85
|
+
"Complete Steps 1 and 2 of checkout.",
|
|
86
|
+
"On Step 3 (Payment), select 'UPI / Cash' (manual payment).",
|
|
87
|
+
"Check the consent checkbox.",
|
|
88
|
+
"Click 'Pay via UPI / Cash'.",
|
|
89
|
+
],
|
|
90
|
+
inputs: { paymentMethod: "UPI / Cash" },
|
|
91
|
+
expectedBehaviour: "Clicking 'Pay via UPI / Cash' with the consent checkbox checked places the order successfully. No 'Validation failed' error message appears.",
|
|
92
|
+
expectedUiState: "After clicking 'Pay via UPI / Cash', the page transitions to the order confirmation or payment proof upload page. No red error message reading 'Validation failed' or similar is shown.",
|
|
93
|
+
expectedData: { validationErrorShown: false },
|
|
94
|
+
endResult: "An order is created and visible in the buyer's order history. The order has an active 15-minute payment window for proof upload.",
|
|
95
|
+
},
|
|
96
|
+
"checklist-buying-buying-checkout-checkout-flow": {
|
|
97
|
+
roles: ["buyer"],
|
|
98
|
+
startPage: "/products/product-tester-standard-1",
|
|
99
|
+
steps: [
|
|
100
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
101
|
+
"Open /products/product-tester-standard-1.",
|
|
102
|
+
"Click 'Add to Cart'.",
|
|
103
|
+
"Open /cart.",
|
|
104
|
+
"Click 'Proceed to checkout'.",
|
|
105
|
+
"On Step 1 (Shipping Address), select the existing address 'Home — 123 Stadium Lane, Vijay Nagar, Indore, Madhya Pradesh 452010'.",
|
|
106
|
+
"Click 'Continue'.",
|
|
107
|
+
"On Step 2 (Add-ons & fees), click 'Continue to payment'.",
|
|
108
|
+
"On Step 3 (Payment), select a payment method and complete the order.",
|
|
109
|
+
],
|
|
110
|
+
inputs: { productId: "product-tester-standard-1", price: 199 },
|
|
111
|
+
expectedBehaviour: "The three-step checkout flow (Address → Add-ons → Payment) completes without errors, an order is created, and the buyer lands on an order confirmation page.",
|
|
112
|
+
expectedUiState: "Each step advances in sequence: 'Step 1 of 3: Shipping Address', then 'Step 2 of 3: Extras & fees', then the payment step. After completing payment, an order confirmation page is shown with an order number.",
|
|
113
|
+
expectedData: { checkoutStepCount: 3 },
|
|
114
|
+
endResult: "After reloading the order confirmation URL, the order details remain visible and the order status is not cancelled.",
|
|
115
|
+
},
|
|
116
|
+
"checklist-buying-buying-checkout-checkout-manual-payment-consent": {
|
|
117
|
+
roles: ["buyer"],
|
|
118
|
+
startPage: "/checkout",
|
|
119
|
+
steps: [
|
|
120
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
121
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
122
|
+
"Complete Steps 1 and 2 of checkout.",
|
|
123
|
+
"On Step 3 (Payment), select 'UPI / Cash' (manual payment).",
|
|
124
|
+
"Read the how-it-works guide that appears.",
|
|
125
|
+
"Check the consent checkbox.",
|
|
126
|
+
"Read the state of the 'Pay via UPI / Cash' button.",
|
|
127
|
+
],
|
|
128
|
+
inputs: { paymentMethod: "UPI / Cash" },
|
|
129
|
+
expectedBehaviour: "Selecting UPI/Cash shows a how-it-works guide covering payment steps, refund summary, and what happens if an item sells out. The 'Pay via UPI / Cash' button is disabled until the consent checkbox is checked.",
|
|
130
|
+
expectedUiState: "A how-it-works guide is visible with sections covering: payment steps, refund policy, and out-of-stock handling. The 'Pay via UPI / Cash' button is greyed out / disabled before the checkbox is checked. After checking the consent checkbox, the button becomes enabled.",
|
|
131
|
+
expectedData: { submitEnabledBeforeConsent: false },
|
|
132
|
+
endResult: "Nothing persists from this step until the button is actually clicked and the order is placed.",
|
|
133
|
+
},
|
|
134
|
+
"checklist-buying-buying-checkout-checkout-mobile-responsive": {
|
|
135
|
+
roles: ["buyer"],
|
|
136
|
+
startPage: "/cart",
|
|
137
|
+
steps: [
|
|
138
|
+
"Resize the browser to a mobile viewport of 390×844 pixels.",
|
|
139
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
140
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
141
|
+
"Open /cart.",
|
|
142
|
+
"Click 'Proceed to checkout'.",
|
|
143
|
+
"Complete Step 1 (address selection) on the mobile viewport.",
|
|
144
|
+
"Complete Step 2 (add-ons) on the mobile viewport.",
|
|
145
|
+
"Reach Step 3 (payment) on the mobile viewport.",
|
|
146
|
+
],
|
|
147
|
+
inputs: { viewportWidth: 390, viewportHeight: 844 },
|
|
148
|
+
expectedBehaviour: "The full checkout flow is usable on a 390×844 mobile viewport with no horizontal scrolling, no overlapping controls, and all buttons reachable by tap.",
|
|
149
|
+
expectedUiState: "At each step (cart, Step 1, Step 2, Step 3), the layout stacks vertically. The Order Summary panel, address cards, add-on checkboxes, and payment controls are all fully visible and usable without horizontal scrolling. No text is clipped.",
|
|
150
|
+
expectedData: { horizontalScrollPresent: false },
|
|
151
|
+
endResult: "Nothing additional persists from this layout check.",
|
|
152
|
+
},
|
|
153
|
+
"checklist-buying-buying-checkout-checkout-multi-seller-split": {
|
|
154
|
+
roles: ["buyer"],
|
|
155
|
+
startPage: "/cart",
|
|
156
|
+
steps: [
|
|
157
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
158
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart' (store-tester-sandbox).",
|
|
159
|
+
"Open /products/product-tester-crossstore-b and click 'Add to Cart' (store-beyblade-arena).",
|
|
160
|
+
"Open /cart and confirm the Cart tab shows items from at least two different stores.",
|
|
161
|
+
"Click 'Proceed to checkout'.",
|
|
162
|
+
"Select the existing address and click 'Continue' through each step.",
|
|
163
|
+
"Complete the checkout.",
|
|
164
|
+
],
|
|
165
|
+
inputs: { storeAProduct: "product-tester-standard-1", storeBProduct: "product-tester-crossstore-b" },
|
|
166
|
+
expectedBehaviour: "The checkout splits items from different sellers into separate orders. The buyer receives one order confirmation per seller rather than a single combined order.",
|
|
167
|
+
expectedUiState: "On the order confirmation page, separate order entries are shown for each seller (store-tester-sandbox and store-beyblade-arena). The subtotals for each order match the items from that seller.",
|
|
168
|
+
expectedData: { orderCount: 2 },
|
|
169
|
+
endResult: "After reloading the order confirmation or order history, two separate orders exist — one from store-tester-sandbox and one from store-beyblade-arena.",
|
|
170
|
+
},
|
|
171
|
+
"checklist-buying-buying-checkout-checkout-order-review": {
|
|
172
|
+
roles: ["buyer"],
|
|
173
|
+
startPage: "/products/product-tester-standard-1",
|
|
174
|
+
steps: [
|
|
175
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
176
|
+
"Open /products/product-tester-standard-1.",
|
|
177
|
+
"Click 'Add to Cart'.",
|
|
178
|
+
"Open /cart.",
|
|
179
|
+
"Click 'Proceed to checkout'.",
|
|
180
|
+
"On Step 1, select the existing address 'Home — 123 Stadium Lane, Vijay Nagar, Indore, Madhya Pradesh 452010'.",
|
|
181
|
+
"Click 'Continue'.",
|
|
182
|
+
"On Step 2 (Add-ons & fees), read the Order Summary panel before proceeding.",
|
|
183
|
+
],
|
|
184
|
+
expectedBehaviour: "The Order Summary panel during checkout accurately reflects the items in the cart, their quantities, the selected shipping address, and a correct total.",
|
|
185
|
+
expectedUiState: "The Order Summary panel shows: 'Shipping to Mock User 3, 123 Stadium Lane, Indore'; Subtotal with the correct item price(s); Platform fee; GST; and a correct Total. The item 'Test Gadget — Standard Listing #1' at ₹199.00 is included.",
|
|
186
|
+
endResult: "Nothing additional persists from this review step. The order is not placed until payment is completed.",
|
|
187
|
+
},
|
|
188
|
+
"checklist-buying-buying-checkout-checkout-order-summary-full-breakdown": {
|
|
189
|
+
roles: ["buyer"],
|
|
190
|
+
startPage: "/checkout",
|
|
191
|
+
steps: [
|
|
192
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
193
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
194
|
+
"Complete Step 1 (address) and advance to Step 2 (Add-ons & fees).",
|
|
195
|
+
"Check the 'WhatsApp order updates (+₹10.00)' checkbox.",
|
|
196
|
+
"Check the 'Gift wrap (+₹49.00)' checkbox.",
|
|
197
|
+
"Read the Order Summary panel.",
|
|
198
|
+
],
|
|
199
|
+
expectedBehaviour: "The Order Summary panel on the payment step shows Shipping, individual checked add-on fees (WhatsApp updates and Gift wrap), GST, and Coupon discount (if any) as separate line items — not just Subtotal and Total. The Total updates to include the newly checked add-ons.",
|
|
200
|
+
expectedUiState: "The Order Summary shows individual line items: Subtotal, 'WhatsApp order updates' at ₹10.00, 'Gift wrap' at ₹49.00, Platform fee, GST, and Total. The Total is higher than Subtotal alone and matches Subtotal + add-ons + fees. Unchecked add-ons (Shipment protection) do not appear.",
|
|
201
|
+
endResult: "The Total shown in the Order Summary matches the Total on the order confirmation page after payment is completed.",
|
|
202
|
+
},
|
|
203
|
+
"checklist-buying-buying-checkout-checkout-otp-highvalue": {
|
|
204
|
+
roles: ["buyer"],
|
|
205
|
+
startPage: "/checkout",
|
|
206
|
+
steps: [
|
|
207
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
208
|
+
"Open /products/product-beyblade-original-dranzer-s and click 'Add to Cart' — ₹1,499.",
|
|
209
|
+
"Open /products/product-beyblade-original-driger-v and click 'Add to Cart' — ₹1,799.",
|
|
210
|
+
"Open /products/product-beyblade-metal-storm-pegasus and click 'Add to Cart' — ₹1,299.",
|
|
211
|
+
"Open /products/product-beyblade-burst-regalia-genesis and click 'Add to Cart' — ₹1,399.",
|
|
212
|
+
"Open /cart and read the subtotal, which is ₹5,996.",
|
|
213
|
+
"Click 'Proceed to checkout'.",
|
|
214
|
+
"On Step 1, select the existing address and click 'Continue'.",
|
|
215
|
+
"On Step 2, click 'Continue to payment'.",
|
|
216
|
+
"On Step 3, select any non-COD payment method.",
|
|
217
|
+
"Read the payment step for a 'Verify this order' prompt.",
|
|
218
|
+
"Open /cart in another tab, remove the ₹1,399 item so the subtotal is ₹4,597, and run the same checkout to the payment step.",
|
|
219
|
+
],
|
|
220
|
+
inputs: { otpThreshold: 5000, subtotalAbove: 5996, subtotalBelow: 4597 },
|
|
221
|
+
expectedBehaviour: "Above the ₹5,000 threshold and on a non-COD method, checkout inserts an emailed one-time code before payment. Below it, payment proceeds with no OTP at all — which is why the second half matters: a prompt that appears for every cart is not a threshold.",
|
|
222
|
+
expectedUiState: "At ₹5,996 a 'Verify this order' prompt appears with a code field and names the masked email it went to. At ₹4,597 no such prompt appears and the payment control is reached directly. A failure to send shows readable English, not a raw provider error code.",
|
|
223
|
+
expectedData: { otpRequiredAbove: true, otpRequiredBelow: false },
|
|
224
|
+
endResult: "Entering the correct code completes the order. Three items only add to ₹4,597 — the fourth is what actually crosses the threshold, and an earlier draft of this case stopped at three and could never have triggered the prompt it was checking for.",
|
|
225
|
+
},
|
|
226
|
+
"checklist-buying-buying-checkout-checkout-otp-whatsapp-hidden-without-phone": {
|
|
227
|
+
roles: ["buyer"],
|
|
228
|
+
startPage: "/checkout",
|
|
229
|
+
steps: [
|
|
230
|
+
"Sign in as admin@letitrip.in / TempPass123! and confirm Site Settings → Notifications → WhatsApp → 'WhatsApp OTP' is enabled.",
|
|
231
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
232
|
+
"Open /user/addresses and add an address named 'QA Address otp-whatsapp-hidden', 2 Test Road, Mumbai, Maharashtra 400001, leaving the phone field empty.",
|
|
233
|
+
"Add product-beyblade-original-dranzer-s (₹1,499), product-beyblade-original-driger-v (₹1,799), product-beyblade-metal-storm-pegasus (₹1,299) and product-beyblade-burst-regalia-genesis (₹1,399) to the cart, making ₹5,996.",
|
|
234
|
+
"Open /checkout, select 'QA Address otp-whatsapp-hidden' on Step 1, and continue to the payment step.",
|
|
235
|
+
"Select a non-COD payment method.",
|
|
236
|
+
"Read every option offered on the OTP prompt.",
|
|
237
|
+
],
|
|
238
|
+
inputs: { addressLabel: "QA Address otp-whatsapp-hidden", phone: "", subtotal: 5996 },
|
|
239
|
+
expectedBehaviour: "The WhatsApp channel needs three things at once — admin-enabled, real credentials, and a phone number on the SELECTED address. Missing the third hides the option rather than offering it and failing at send time, which would waste the buyer's OTP window on a channel that could never deliver.",
|
|
240
|
+
expectedUiState: "The prompt offers email only. There is no 'Send via WhatsApp instead' control, disabled or otherwise, even though the same setting shows one for an address that has a phone.",
|
|
241
|
+
expectedData: { whatsappOptionPresent: false },
|
|
242
|
+
endResult: "The order still completes by email OTP. Delete the address afterwards so it does not accumulate across runs.",
|
|
243
|
+
},
|
|
244
|
+
"checklist-buying-buying-checkout-checkout-otp-whatsapp-option": {
|
|
245
|
+
roles: ["buyer"],
|
|
246
|
+
startPage: "/checkout",
|
|
247
|
+
steps: [
|
|
248
|
+
"Sign in as admin@letitrip.in / TempPass123! and confirm Site Settings → Notifications → WhatsApp → 'WhatsApp OTP' is enabled with real Meta Cloud API credentials.",
|
|
249
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
250
|
+
"Open /user/addresses and add a phone number to the existing address 'Home — 123 Stadium Lane, Vijay Nagar, Indore, Madhya Pradesh 452010' if it does not already have one.",
|
|
251
|
+
"Add product-beyblade-original-dranzer-s (₹1,499), product-beyblade-original-driger-v (₹1,799), product-beyblade-metal-storm-pegasus (₹1,299) and product-beyblade-burst-regalia-genesis (₹1,399) to the cart, making ₹5,996.",
|
|
252
|
+
"Open /cart and click 'Proceed to checkout'.",
|
|
253
|
+
"Select the address with a phone number on Step 1 and click 'Continue'.",
|
|
254
|
+
"Click 'Continue to payment' on Step 2.",
|
|
255
|
+
"On Step 3, select a non-COD payment method.",
|
|
256
|
+
"Read the default send channel shown on the OTP prompt.",
|
|
257
|
+
"Click 'Send via WhatsApp instead'.",
|
|
258
|
+
"Type the code received on WhatsApp into the OTP field and submit it.",
|
|
259
|
+
],
|
|
260
|
+
inputs: { subtotal: 5996, defaultChannel: "email", alternateChannel: "WhatsApp" },
|
|
261
|
+
expectedBehaviour: "Email is the default channel and WhatsApp is opt-in per attempt. The alternate appears only when the feature is enabled, real Meta credentials are configured, and the selected address carries a phone — the seeded Meta secrets are empty strings rather than placeholders precisely so a missing credential skips cleanly instead of making a billed call that fails.",
|
|
262
|
+
expectedUiState: "The prompt first shows a masked email. After 'Send via WhatsApp instead' it shows a masked phone in the shape '+91 ••••••7890'. The code that arrives on WhatsApp is accepted and payment proceeds.",
|
|
263
|
+
expectedData: { defaultChannel: "email" },
|
|
264
|
+
endResult: "The order is placed after the WhatsApp code verifies. With no real Meta credentials configured this case is unreachable — answer null rather than reporting the missing option as a bug.",
|
|
265
|
+
},
|
|
266
|
+
"checklist-buying-buying-checkout-checkout-razorpay-charge-includes-shipping": {
|
|
267
|
+
roles: ["buyer"],
|
|
268
|
+
startPage: "/checkout",
|
|
269
|
+
steps: [
|
|
270
|
+
"Sign in as admin@letitrip.in / TempPass123! and confirm Site Settings → Payments → Razorpay is enabled and the seller store-beyblade-arena has a configured shipping fee.",
|
|
271
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
272
|
+
"Open /products/product-beyblade-burst-valkyrie (price ₹999, store-beyblade-arena) and click 'Add to Cart'.",
|
|
273
|
+
"Complete Steps 1 and 2 of checkout.",
|
|
274
|
+
"On Step 3, select 'Razorpay' (online payment).",
|
|
275
|
+
"Read the amount shown in the Order Summary before clicking the Razorpay pay button.",
|
|
276
|
+
"Click the Razorpay pay button and observe the amount displayed inside the Razorpay checkout modal.",
|
|
277
|
+
],
|
|
278
|
+
expectedBehaviour: "The amount shown inside the Razorpay checkout modal must exactly match the Total shown in the Order Summary panel, including the seller's shipping fee. No discrepancy between the gateway charge and the recorded order total.",
|
|
279
|
+
expectedUiState: "The Razorpay modal opens and shows a rupee amount that exactly matches the Total in the Order Summary (e.g. if the Order Summary shows ₹1,149.00, the Razorpay modal shows ₹1,149.00 — not ₹999.00 or any other amount).",
|
|
280
|
+
endResult: "After payment, the order confirmation page shows a Total that matches the Razorpay modal amount exactly.",
|
|
281
|
+
},
|
|
282
|
+
"checklist-buying-buying-checkout-emi-checkout-flow": {
|
|
283
|
+
roles: ["buyer"],
|
|
284
|
+
startPage: "/checkout",
|
|
285
|
+
steps: [
|
|
286
|
+
"Sign in as admin@letitrip.in / TempPass123! and confirm EMI is enabled in Site Settings → Payments → EMI.",
|
|
287
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
288
|
+
"Open /products/live-golden-retriever-puppy and click 'Add to Cart' — ₹25,000.",
|
|
289
|
+
"Complete Steps 1 and 2 of checkout.",
|
|
290
|
+
"On Step 3, read the payment methods and select 'EMI'.",
|
|
291
|
+
"Read the tenure options, the token amount and the surcharge.",
|
|
292
|
+
"Select a tenure and place the order.",
|
|
293
|
+
"Open /user/orders and open the order just created.",
|
|
294
|
+
"Open /cart in another tab, replace the item with product-tester-standard-1 (₹199), and reach the payment step again.",
|
|
295
|
+
],
|
|
296
|
+
inputs: { highValueItem: "live-golden-retriever-puppy", highValuePrice: 25000, lowValuePrice: 199 },
|
|
297
|
+
expectedBehaviour: "EMI is offered only above the eligibility threshold and only when the seller has opted in — the site-wide flag alone is not enough. A ₹199 cart must not offer it. The buyer is quoted from the buyer-facing settings, which exclude the platform-versus-seller surcharge split; that figure is server-side only and must never reach the payment step.",
|
|
298
|
+
expectedUiState: "At ₹25,000 the payment step lists tenures with a per-instalment amount, a token amount and a surcharge for each. After placing the order its detail page shows the full instalment schedule. At ₹199 no EMI option appears at all.",
|
|
299
|
+
expectedData: { emiOfferedHighValue: true, emiOfferedLowValue: false },
|
|
300
|
+
endResult: "The schedule survives a reload of the order page. The low-value half is the real check — an EMI badge on a ₹1,499 product was a live bug caused by reading only the site-wide flag, and a case that only ever tests a large cart passes straight over it.",
|
|
301
|
+
},
|
|
302
|
+
"checklist-buying-buying-checkout-gst-breakdown-display": {
|
|
303
|
+
roles: ["buyer"],
|
|
304
|
+
startPage: "/checkout",
|
|
305
|
+
steps: [
|
|
306
|
+
"Sign in as admin@letitrip.in / TempPass123! and verify that Site Settings → Tax → GST is enabled.",
|
|
307
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
308
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
309
|
+
"Open /cart and click 'Proceed to checkout'.",
|
|
310
|
+
"On Step 1, select the existing address 'Home — 123 Stadium Lane, Vijay Nagar, Indore, Madhya Pradesh 452010' and click 'Continue'.",
|
|
311
|
+
"On Step 2, read the Order Summary panel.",
|
|
312
|
+
],
|
|
313
|
+
inputs: { productId: "product-tester-standard-1", price: 199 },
|
|
314
|
+
expectedBehaviour: "When GST is enabled, the Order Summary shows a GST line item. The breakdown is CGST+SGST when buyer and seller are in the same state, or IGST when they are in different states.",
|
|
315
|
+
expectedUiState: "The Order Summary panel shows a 'GST' line item (e.g. ₹1.80). The label or tooltip distinguishes CGST/SGST from IGST based on buyer vs seller state.",
|
|
316
|
+
endResult: "Nothing additional persists from viewing the GST breakdown.",
|
|
317
|
+
},
|
|
318
|
+
"checklist-buying-buying-checkout-order-confirmation": {
|
|
319
|
+
roles: ["buyer"],
|
|
320
|
+
startPage: "/checkout",
|
|
321
|
+
steps: [
|
|
322
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
323
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
324
|
+
"Complete the full checkout flow (address → add-ons → payment).",
|
|
325
|
+
"Land on the order confirmation page.",
|
|
326
|
+
"Check the registered email (rehan.sheikh@gmail.com) for a confirmation email.",
|
|
327
|
+
],
|
|
328
|
+
inputs: { productId: "product-tester-standard-1", price: 199 },
|
|
329
|
+
expectedBehaviour: "The order confirmation page shows correct order details matching what was in the cart. A confirmation email is sent to the buyer's registered address with the same order details.",
|
|
330
|
+
expectedUiState: "The order confirmation page shows: an order number, the item 'Test Gadget — Standard Listing #1' at ₹199.00, the shipping address '123 Stadium Lane, Vijay Nagar, Indore, Madhya Pradesh 452010', and a Total that matches the checkout summary.",
|
|
331
|
+
endResult: "After reloading the order confirmation URL, all details remain visible and the order is not cancelled.",
|
|
332
|
+
},
|
|
333
|
+
"checklist-buying-buying-checkout-out-of-stock-policy-cancel": {
|
|
334
|
+
roles: ["buyer"],
|
|
335
|
+
startPage: "/checkout",
|
|
336
|
+
steps: [
|
|
337
|
+
"Sign in as admin@letitrip.in / TempPass123! and set Site Settings → Checkout → Out-of-stock policy to 'Cancel whole order'.",
|
|
338
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
339
|
+
"Add product-tester-standard-1 (₹199, stock 10) and product-tester-standard-2 (₹149) to the cart.",
|
|
340
|
+
"While on the checkout payment step (before submitting), have the admin or another session reduce product-tester-standard-1's stock to 0.",
|
|
341
|
+
"Submit the checkout.",
|
|
342
|
+
],
|
|
343
|
+
inputs: { policy: "Cancel whole order", goesOutOfStock: "product-tester-standard-1" },
|
|
344
|
+
expectedBehaviour: "With the 'cancel whole order' policy, if any item in the batch goes out of stock mid-checkout, the entire checkout is rejected. No order is created and the buyer receives an error.",
|
|
345
|
+
expectedUiState: "After submitting, an error message is shown indicating that an item went out of stock and the entire order was cancelled. No order confirmation page is shown.",
|
|
346
|
+
expectedData: { ordersCreated: 0 },
|
|
347
|
+
endResult: "After reloading /cart, both items are still present in the cart (or the buyer is able to restart the checkout). No order record exists for this attempt.",
|
|
348
|
+
},
|
|
349
|
+
"checklist-buying-buying-checkout-out-of-stock-policy-skip": {
|
|
350
|
+
roles: ["buyer"],
|
|
351
|
+
startPage: "/checkout",
|
|
352
|
+
steps: [
|
|
353
|
+
"Sign in as admin@letitrip.in / TempPass123! and set Site Settings → Checkout → Out-of-stock policy to 'Skip unavailable items'.",
|
|
354
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
355
|
+
"Add product-tester-standard-1 (₹199, stock 10) and product-tester-standard-2 (₹149) to the cart.",
|
|
356
|
+
"While on the checkout payment step (before submitting), have the admin or another session reduce product-tester-standard-2's stock to 0.",
|
|
357
|
+
"Submit the checkout.",
|
|
358
|
+
],
|
|
359
|
+
inputs: { policy: "Skip unavailable items", goesOutOfStock: "product-tester-standard-2" },
|
|
360
|
+
expectedBehaviour: "With the 'skip unavailable items' policy, the out-of-stock item is silently dropped and an order is placed for only the still-available item(s). The buyer is informed which item was skipped.",
|
|
361
|
+
expectedUiState: "After submitting, the order confirmation page shows only product-tester-standard-1 (₹199). A notice is shown indicating that product-tester-standard-2 was unavailable and was removed from the order.",
|
|
362
|
+
expectedData: { orderLineCount: 1 },
|
|
363
|
+
endResult: "After reloading the order detail page, only product-tester-standard-1 is listed in the order. product-tester-standard-2 is not included.",
|
|
364
|
+
},
|
|
365
|
+
"checklist-buying-buying-checkout-payment-auto-approve-dispute": {
|
|
366
|
+
roles: ["buyer"],
|
|
367
|
+
startPage: "/checkout",
|
|
368
|
+
steps: [
|
|
369
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
370
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
371
|
+
"Complete checkout with UPI/Cash payment and upload a valid payment proof.",
|
|
372
|
+
"Wait 2 hours without the admin manually approving the order.",
|
|
373
|
+
"Reload the order detail page after 2 hours.",
|
|
374
|
+
"Click 'Raise a dispute' on the auto-approved order.",
|
|
375
|
+
],
|
|
376
|
+
inputs: { autoApproveHours: 2 },
|
|
377
|
+
expectedBehaviour: "After 2 hours with no admin action, the order is auto-approved and shows a badge indicating auto-approval. The 'Raise a dispute' button is present and submits successfully.",
|
|
378
|
+
expectedUiState: "The order detail page shows an auto-approved badge (e.g. 'Auto-approved' or similar label). A 'Raise a dispute' button is visible. After clicking it, a dispute form or confirmation appears, and submitting it succeeds without an error.",
|
|
379
|
+
endResult: "After reloading the order detail page, the dispute is recorded and the order status reflects the dispute.",
|
|
380
|
+
},
|
|
381
|
+
"checklist-buying-buying-checkout-payment-method-selection": {
|
|
382
|
+
roles: ["buyer"],
|
|
383
|
+
startPage: "/checkout",
|
|
384
|
+
steps: [
|
|
385
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
386
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
387
|
+
"Open /cart and click 'Proceed to checkout'.",
|
|
388
|
+
"Select the existing address and click 'Continue' through Step 1 and Step 2.",
|
|
389
|
+
"On Step 3 (Payment), read the available payment methods.",
|
|
390
|
+
"Select 'COD' (Cash on Delivery) if available and observe the UI.",
|
|
391
|
+
"Select 'UPI / Cash' (manual payment) and observe the UI.",
|
|
392
|
+
"If Razorpay is listed, select it and observe the UI.",
|
|
393
|
+
],
|
|
394
|
+
inputs: { productId: "product-tester-standard-1" },
|
|
395
|
+
expectedBehaviour: "Each payment method option can be selected and the UI adapts accordingly — COD shows a COD confirmation, manual payment shows a how-it-works guide and consent checkbox, Razorpay (when enabled) offers to open the payment gateway.",
|
|
396
|
+
expectedUiState: "Step 3 lists the available payment methods as selectable options. Selecting each one changes the lower section of the form to show method-specific instructions or controls. At least COD and UPI/Cash are shown.",
|
|
397
|
+
endResult: "Nothing persists until payment is actually submitted.",
|
|
398
|
+
},
|
|
399
|
+
"checklist-buying-buying-checkout-payment-proof-reupload": {
|
|
400
|
+
roles: ["buyer"],
|
|
401
|
+
startPage: "/checkout",
|
|
402
|
+
steps: [
|
|
403
|
+
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
404
|
+
"Locate an existing manual-payment order that has proof submitted and request a proof re-upload from the order management panel.",
|
|
405
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
406
|
+
"Open the order's payment proof page.",
|
|
407
|
+
"Upload a new screenshot file as replacement proof.",
|
|
408
|
+
"Enter a new UTR number.",
|
|
409
|
+
"Check the agreement checkbox and submit.",
|
|
410
|
+
],
|
|
411
|
+
inputs: { proofFile: "public/test-media/sample-image.png", utr: "QA UTR reupload 552310" },
|
|
412
|
+
expectedBehaviour: "When an admin requests a re-upload, the buyer's payment window is extended and the proof upload form becomes active again. The buyer can submit new proof successfully.",
|
|
413
|
+
expectedUiState: "The payment proof page shows an active upload form (not locked). The countdown reflects the extended deadline. After submitting, a confirmation message appears.",
|
|
414
|
+
endResult: "After reloading the order detail page, the payment proof status shows the newly submitted proof and the re-upload request is resolved.",
|
|
415
|
+
},
|
|
416
|
+
"checklist-buying-buying-checkout-payment-proof-upload": {
|
|
417
|
+
roles: ["buyer"],
|
|
418
|
+
startPage: "/checkout",
|
|
419
|
+
steps: [
|
|
420
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
421
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
422
|
+
"Complete checkout with 'UPI / Cash' payment — check the consent checkbox and click 'Pay via UPI / Cash'.",
|
|
423
|
+
"On the payment proof page, upload a screenshot file as proof.",
|
|
424
|
+
"Enter a UTR number in the UTR field.",
|
|
425
|
+
"Check the 'mark-as-paid' agreement checkbox.",
|
|
426
|
+
"Click the submit/upload button.",
|
|
427
|
+
],
|
|
428
|
+
inputs: { proofFile: "public/test-media/sample-image.png", utr: "QA UTR upload 118427" },
|
|
429
|
+
expectedBehaviour: "The payment proof (screenshot file, UTR, and agreement checkbox) is accepted and submitted successfully. The order status updates to reflect that proof has been submitted and is awaiting admin review.",
|
|
430
|
+
expectedUiState: "After submission, a confirmation message appears (e.g. 'Proof submitted' or similar). The upload form is no longer editable or is replaced by a 'proof received' state. The countdown timer is still visible.",
|
|
431
|
+
endResult: "After reloading the order detail page, the payment proof status shows 'submitted' or 'pending review', and the uploaded screenshot is accessible.",
|
|
432
|
+
},
|
|
433
|
+
"checklist-buying-buying-checkout-payment-window-countdown": {
|
|
434
|
+
roles: ["buyer"],
|
|
435
|
+
startPage: "/checkout",
|
|
436
|
+
steps: [
|
|
437
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
438
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
439
|
+
"Open /cart and click 'Proceed to checkout'.",
|
|
440
|
+
"Complete Steps 1 and 2 of checkout.",
|
|
441
|
+
"On Step 3, select 'UPI / Cash' (manual payment).",
|
|
442
|
+
"Check the consent checkbox and click 'Pay via UPI / Cash'.",
|
|
443
|
+
"Wait 3 seconds on the page that loads after clicking 'Pay via UPI / Cash'.",
|
|
444
|
+
],
|
|
445
|
+
inputs: { paymentWindowMinutes: 15 },
|
|
446
|
+
expectedBehaviour: "After a manual-payment order is placed, the payment proof page shows a countdown timer giving the buyer 15 minutes to upload proof.",
|
|
447
|
+
expectedUiState: "The payment proof page displays a countdown reading approximately '0d 0h 14m Xs' (roughly 15 minutes from placement) and it is visibly ticking down in seconds. A payment proof upload section is also present on the same page.",
|
|
448
|
+
endResult: "After reloading the payment proof page, the countdown continues from where it left off (not reset) and the timer is still counting down toward zero.",
|
|
449
|
+
},
|
|
450
|
+
"checklist-buying-buying-checkout-payment-window-expiry": {
|
|
451
|
+
roles: ["buyer"],
|
|
452
|
+
startPage: "/checkout",
|
|
453
|
+
steps: [
|
|
454
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
455
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
456
|
+
"Complete checkout with 'UPI / Cash' payment — check the consent checkbox and click 'Pay via UPI / Cash'.",
|
|
457
|
+
"Do not upload any payment proof.",
|
|
458
|
+
"Wait for the 15-minute payment window to expire (or ask the admin to manually expire it via the admin panel).",
|
|
459
|
+
"Reload the order detail page.",
|
|
460
|
+
],
|
|
461
|
+
inputs: { paymentWindowMinutes: 15 },
|
|
462
|
+
expectedBehaviour: "Once the 15-minute window expires with no proof submitted, the order is automatically cancelled and the item's stock is restored.",
|
|
463
|
+
expectedUiState: "The order detail page shows a cancelled status. The payment proof upload form is no longer available.",
|
|
464
|
+
expectedData: { orderCancelled: true },
|
|
465
|
+
endResult: "After reloading /products/product-tester-standard-1, the stock count reflects the restored item (the stock is back to at least what it was before the order was placed).",
|
|
466
|
+
},
|
|
467
|
+
"checklist-buying-buying-checkout-shipping-address": {
|
|
468
|
+
roles: ["buyer"],
|
|
469
|
+
startPage: "/checkout",
|
|
470
|
+
steps: [
|
|
471
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
472
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
473
|
+
"Open /cart and click 'Proceed to checkout'.",
|
|
474
|
+
"On Step 1 (Shipping Address), click the address card 'Home — 123 Stadium Lane, Vijay Nagar, Indore, Madhya Pradesh 452010' to select it.",
|
|
475
|
+
"Click 'Continue'.",
|
|
476
|
+
],
|
|
477
|
+
inputs: { addressLabel: "Home" },
|
|
478
|
+
expectedBehaviour: "Selecting an existing address enables the Continue button and passes the address to the next step and the Order Summary.",
|
|
479
|
+
expectedUiState: "After clicking the address card, the Order Summary panel updates to show 'Shipping to Mock User 3, 123 Stadium Lane, Indore' and the 'Continue' button is no longer disabled.",
|
|
480
|
+
endResult: "The selected address is carried into Step 2 and shown in the Order Summary panel throughout the remaining checkout steps.",
|
|
481
|
+
},
|
|
482
|
+
"checklist-buying-buying-checkout-shipping-address-edit": {
|
|
483
|
+
roles: ["buyer"],
|
|
484
|
+
startPage: "/checkout",
|
|
485
|
+
steps: [
|
|
486
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
487
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
488
|
+
"Open /cart and click 'Proceed to checkout'.",
|
|
489
|
+
"On Step 1 (Shipping Address), locate the existing address and click its edit control.",
|
|
490
|
+
"Change the street field from its current value to 'QA Address buying-checkout-shipping-address-edit Updated Street'.",
|
|
491
|
+
"Save the changes.",
|
|
492
|
+
"Select the updated address and click 'Continue'.",
|
|
493
|
+
],
|
|
494
|
+
inputs: { street: "QA Address shipping-address-edit Updated Street" },
|
|
495
|
+
expectedBehaviour: "The address edit form opens inline, saves successfully, and the updated address is immediately reflected in the address list without leaving the checkout flow.",
|
|
496
|
+
expectedUiState: "After saving, the address list shows the updated street 'QA Address buying-checkout-shipping-address-edit Updated Street'. The Order Summary reflects the updated address when it is selected.",
|
|
497
|
+
endResult: "After reloading /user/addresses or revisiting the checkout, the address retains the updated street value.",
|
|
498
|
+
},
|
|
499
|
+
"checklist-buying-buying-checkout-shipping-address-inline-add": {
|
|
500
|
+
roles: ["buyer"],
|
|
501
|
+
startPage: "/checkout",
|
|
502
|
+
steps: [
|
|
503
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
504
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
505
|
+
"Open /cart and click 'Proceed to checkout'.",
|
|
506
|
+
"On Step 1 (Shipping Address), click '+ Add new address'.",
|
|
507
|
+
"Fill in the address form: Name 'QA Address buying-checkout-shipping-address-inline-add', Street '1 Test Street', City 'Mumbai', State 'Maharashtra', Pincode '400001'.",
|
|
508
|
+
"Save the new address.",
|
|
509
|
+
"Click the newly saved address card 'QA Address buying-checkout-shipping-address-inline-add' in the list.",
|
|
510
|
+
"Click 'Continue'.",
|
|
511
|
+
],
|
|
512
|
+
inputs: { name: "QA Address shipping-address-inline-add", street: "1 Test Street", city: "Mumbai", state: "Maharashtra", pincode: "400001" },
|
|
513
|
+
expectedBehaviour: "A new address is saved without leaving the checkout flow and is immediately available for selection on Step 1.",
|
|
514
|
+
expectedUiState: "After saving, the address 'QA Address buying-checkout-shipping-address-inline-add, 1 Test Street, Mumbai, Maharashtra 400001' appears in the address list on Step 1 and can be selected. The 'Continue' button becomes enabled once it is selected.",
|
|
515
|
+
endResult: "After completing the checkout, the saved address 'QA Address buying-checkout-shipping-address-inline-add' remains in the buyer's address book.",
|
|
516
|
+
},
|
|
517
|
+
"checklist-buying-buying-checkout-shipping-method-selection": {
|
|
518
|
+
roles: ["buyer"],
|
|
519
|
+
startPage: "/checkout",
|
|
520
|
+
steps: [
|
|
521
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
522
|
+
"Open /products/product-tester-standard-1 and click 'Add to Cart'.",
|
|
523
|
+
"Open /cart and click 'Proceed to checkout'.",
|
|
524
|
+
"On Step 1, select the existing address 'Home — 123 Stadium Lane, Vijay Nagar, Indore, Madhya Pradesh 452010' and click 'Continue'.",
|
|
525
|
+
"On Step 2 (Add-ons & fees), if a shipping method selector is present, select a different shipping method and observe the shipping fee in the Order Summary.",
|
|
526
|
+
],
|
|
527
|
+
expectedBehaviour: "Changing the shipping method recalculates the shipping fee shown in the Order Summary immediately. The Total updates to include the new fee.",
|
|
528
|
+
expectedUiState: "The Order Summary shows a 'Shipping' line item that updates when a different shipping method is selected. The Total reflects the new shipping fee.",
|
|
529
|
+
endResult: "The shipping fee carried into the payment step matches the method selected on Step 2.",
|
|
530
|
+
needsReview: true,
|
|
531
|
+
reviewNote: "The step 2 add-ons screen did not show a shipping method selector in the session observed — it may only appear when the seller has configured multiple shipping options. Mark as needs-review until confirmed.",
|
|
532
|
+
},
|
|
533
|
+
};
|