@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,417 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* WHY: Authored six-part procedures for the buying/bidding checklist page.
|
|
3
|
+
* WHAT: 23 case(s), keyed by full checklist id.
|
|
4
|
+
*
|
|
5
|
+
* Written by hand, case by case, against the label each one states. There is no
|
|
6
|
+
* generator: the authoring scripts were deleted once it was clear they were
|
|
7
|
+
* scaffolding around work that is simply writing.
|
|
8
|
+
*
|
|
9
|
+
* 🛑 THE SANDBOX AUCTIONS BELONG TO store-tester-sandbox, WHOSE OWNER IS
|
|
10
|
+
* user-admin-letitrip — not user-tester-qa, who owns store-tester-qa-seller. A
|
|
11
|
+
* seller-side step against auction-tester-sandbox-cycle-* therefore signs in as
|
|
12
|
+
* admin@letitrip.in. Signing in as the wrong seller produces a 403 the tester
|
|
13
|
+
* would reasonably report as a permissions bug.
|
|
14
|
+
*
|
|
15
|
+
* Bids live in the CASCADE tier, so a run wipes and re-seeds them. Cases that
|
|
16
|
+
* depend on a starting price — the tiered-increment ones especially — are
|
|
17
|
+
* therefore reliable at the START of a run and drift as later cases bid the price
|
|
18
|
+
* up. Where order matters the case says so.
|
|
19
|
+
*
|
|
20
|
+
* @tag domain:tester
|
|
21
|
+
* @tag layer:seed
|
|
22
|
+
* @tag pattern:none
|
|
23
|
+
* @tag access:server-only
|
|
24
|
+
* @tag consumers:seed-data/authored/index.ts
|
|
25
|
+
* @tag sideEffects:none
|
|
26
|
+
*/
|
|
27
|
+
export const authored = {
|
|
28
|
+
"checklist-buying-bidding-auction-below-reserve-no-winner": {
|
|
29
|
+
roles: ["buyer"],
|
|
30
|
+
startPage: "/auctions/auction-beyblade-burst-lord-spryzen-ended-unsold",
|
|
31
|
+
steps: [
|
|
32
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
33
|
+
"Open /auctions/auction-beyblade-burst-lord-spryzen-ended-unsold.",
|
|
34
|
+
"Read the status area and the purchase panel.",
|
|
35
|
+
"Open /user/bids and look for a row naming this auction.",
|
|
36
|
+
],
|
|
37
|
+
inputs: { currentBid: 1999 },
|
|
38
|
+
expectedBehaviour: "The auction closed with its highest bid at ₹1,999, below the seller's reserve, so no winner is awarded. Settlement checks the reserve — for a long time it awarded the top bid unconditionally, which is exactly what this fixture exists to catch. This is also the one ended auction seeded with isSold false, so it proves the per-type branch is doing the work rather than the shared sold check.",
|
|
39
|
+
expectedUiState: "The page shows an ended state naming the reserve — in the shape 'Ended — Reserve Not Met'. There is no 'You won' badge, no 'Pay now' link and no purchase control. It does not read simply 'Sold'.",
|
|
40
|
+
expectedData: { winnerAwarded: false },
|
|
41
|
+
endResult: "On reload the same ended-below-reserve state is shown and no order exists for it. A winner appearing here means the reserve was ignored.",
|
|
42
|
+
},
|
|
43
|
+
"checklist-buying-bidding-auction-win-unpaid-forfeit": {
|
|
44
|
+
roles: ["buyer"],
|
|
45
|
+
startPage: "/user/bids",
|
|
46
|
+
steps: [
|
|
47
|
+
"Sign in as tester@letitrip.in / TempPass123!.",
|
|
48
|
+
"Open /user/bids and read the row for 'Test Auction — Already Won', noting its 'Pay now' link and the deadline beside it.",
|
|
49
|
+
"Leave the win unpaid until the checkout deadline passes.",
|
|
50
|
+
"Open /user/bids again.",
|
|
51
|
+
"Open /cart and switch to the 'Won Auctions' tab.",
|
|
52
|
+
"Open the notification bell.",
|
|
53
|
+
],
|
|
54
|
+
inputs: { auctionId: "auction-tester-sandbox-won" },
|
|
55
|
+
expectedBehaviour: "Once the checkout deadline passes, the expiry sweep marks the bid forfeited, clears the locked cart line and notifies the buyer. Clearing the line matters beyond tidiness: a leftover locked line keeps the buyer's auction lane non-empty, and that lane outranks the standard one, so their entire cart stays blocked.",
|
|
56
|
+
expectedUiState: "The /user/bids row no longer offers 'Pay now' and reads as forfeited or expired. The Won Auctions tab in the cart is empty. A notification about the lapsed win is present.",
|
|
57
|
+
expectedData: { payNowLinkPresent: false },
|
|
58
|
+
endResult: "The forfeited state survives a reload and the cart is unblocked. The seller is NOT notified — nothing was sold.",
|
|
59
|
+
needsReview: true,
|
|
60
|
+
reviewNote: "The 48-hour checkout deadline is set by the settlement job, not by seed data, so tester-window.ts cannot shorten it and the case cannot run inside a session. It needs a won-auction fixture carrying an already-past checkoutDeadline — logged in tester/.tester-runs/fixture-requests.jsonl. Until that exists, answer null rather than waiting two days.",
|
|
61
|
+
},
|
|
62
|
+
"checklist-buying-bidding-bid-below-current-plus-increment-rejected": {
|
|
63
|
+
roles: ["buyer"],
|
|
64
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-1",
|
|
65
|
+
steps: [
|
|
66
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
67
|
+
"Open /auctions/auction-tester-sandbox-cycle-1 and click 'Place a bid'.",
|
|
68
|
+
"Select 'Custom' in the preset row.",
|
|
69
|
+
"Type 15500 in the amount field.",
|
|
70
|
+
"Click 'Place Bid'.",
|
|
71
|
+
"Clear the field and type 14000.",
|
|
72
|
+
"Click 'Place Bid'.",
|
|
73
|
+
],
|
|
74
|
+
inputs: { currentBid: 15000, increment: 1000, tooSmall: 15500, tooLow: 14000 },
|
|
75
|
+
expectedBehaviour: "₹15,500 clears the current bid but not the ₹1,000 increment, and ₹14,000 does not even clear the current bid. Both are refused, and with DIFFERENT messages — collapsing them into one generic error tells the bidder nothing about which rule they broke.",
|
|
76
|
+
expectedUiState: "₹15,500 produces an inline error under the amount field naming the increment, in the shape 'Minimum increment is ₹1,000.00'. ₹14,000 produces a distinct inline error about exceeding the current winning bid. Both appear on the field itself, not as a toast, and neither submit silently does nothing.",
|
|
77
|
+
expectedData: { bidsPlaced: 0 },
|
|
78
|
+
endResult: "No bid was recorded: the current bid and bid count are unchanged after a reload.",
|
|
79
|
+
},
|
|
80
|
+
"checklist-buying-bidding-bid-count-increments-by-one": {
|
|
81
|
+
roles: ["buyer"],
|
|
82
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-3",
|
|
83
|
+
steps: [
|
|
84
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
85
|
+
"Open /auctions/auction-tester-sandbox-cycle-3 and read the bid count.",
|
|
86
|
+
"Click 'Place a bid', select 'Custom', type 24000, and click 'Place Bid'.",
|
|
87
|
+
"Read the bid count and current bid.",
|
|
88
|
+
"Sign out and sign in as vivaan.kapoor@gmail.com / TempPass123!.",
|
|
89
|
+
"Open /auctions/auction-tester-sandbox-cycle-3.",
|
|
90
|
+
"Click 'Place a bid', select 'Custom', type 17000, and click 'Place Bid'.",
|
|
91
|
+
"Read the bid count and current bid.",
|
|
92
|
+
"Click 'Bid History'.",
|
|
93
|
+
],
|
|
94
|
+
inputs: { proxyMax: 24000, challengerBid: 17000 },
|
|
95
|
+
expectedBehaviour: "Each submitted bid adds exactly one row. A proxy auction is the case where a naive implementation double-counts: the challenger's bid plus the automatic counter-bid it triggers can both be recorded, so the count jumps by two for one user action.",
|
|
96
|
+
expectedUiState: "After the first bid: '1 bid' and a current bid of ₹15,000.00 — the starting price, not ₹24,000, because a proxy maximum is not the visible price. After the second: '2 bids', NOT 3, and a current bid of ₹18,000.00 — the challenger's ₹17,000 plus one increment. Bid History shows the ₹17,000 row marked outbid.",
|
|
97
|
+
expectedData: { bidCount: 2, currentBid: 18000 },
|
|
98
|
+
endResult: "On reload: 2 bids and ₹18,000.00. A count of 3 means the proxy counter-bid was recorded as a separate user bid.",
|
|
99
|
+
},
|
|
100
|
+
"checklist-buying-bidding-bid-custom-need-not-be-exact-multiple": {
|
|
101
|
+
roles: ["buyer"],
|
|
102
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-1",
|
|
103
|
+
steps: [
|
|
104
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
105
|
+
"Open /auctions/auction-tester-sandbox-cycle-1 and click 'Place a bid'.",
|
|
106
|
+
"Select 'Custom' in the preset row.",
|
|
107
|
+
"Type 15137 in the amount field.",
|
|
108
|
+
"Read the helper text under the field.",
|
|
109
|
+
"Click 'Place Bid'.",
|
|
110
|
+
],
|
|
111
|
+
inputs: { bidAmount: 15137, increment: 1000 },
|
|
112
|
+
expectedBehaviour: "The increment is a FLOOR, not a grid. ₹15,137 clears the ₹15,000 minimum and is accepted even though it is not a multiple of ₹1,000. Rejecting it would quietly force every bidder onto round numbers the rules never required.",
|
|
113
|
+
expectedUiState: "The modal closes with a success state. No error mentioning multiples of the increment appears. The helper text says any amount at or above the minimum is allowed rather than implying a step. Current bid becomes ₹15,137.00 — not ₹15,000 and not ₹16,000.",
|
|
114
|
+
expectedData: { currentBid: 15137 },
|
|
115
|
+
endResult: "On reload the current bid still reads ₹15,137.00.",
|
|
116
|
+
},
|
|
117
|
+
"checklist-buying-bidding-bid-history": {
|
|
118
|
+
roles: ["buyer"],
|
|
119
|
+
startPage: "/user/bids",
|
|
120
|
+
steps: [
|
|
121
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
122
|
+
"Open /auctions/auction-tester-sandbox-cycle-1, click 'Place a bid', select the 'Minimum' preset at ₹15,000.00, and click 'Place Bid'.",
|
|
123
|
+
"Open /user/bids.",
|
|
124
|
+
"Read the rows from the top.",
|
|
125
|
+
"Reload the page and read them again.",
|
|
126
|
+
],
|
|
127
|
+
inputs: { bidAmount: 15000 },
|
|
128
|
+
expectedBehaviour: "My Bids lists every auction this buyer has bid on, newest first, and each row is reachable — a row offering only status with no way to open the auction is a dead end.",
|
|
129
|
+
expectedUiState: "The row for the sandbox auction is at the top, carrying its amount, the auction title and its current status. Clicking the row or its title opens the auction.",
|
|
130
|
+
endResult: "After reload the same rows appear in the same order. An empty list here immediately after placing a bid means the bid was written without a buyer reference.",
|
|
131
|
+
},
|
|
132
|
+
"checklist-buying-bidding-bid-history-auction-detail-pagination": {
|
|
133
|
+
roles: ["guest"],
|
|
134
|
+
startPage: "/auctions/auction-beyblade-metal-lightning-l-drago",
|
|
135
|
+
steps: [
|
|
136
|
+
"Open /auctions/auction-beyblade-metal-lightning-l-drago.",
|
|
137
|
+
"Click the 'Bid History' control to expand it.",
|
|
138
|
+
"Read the amounts on the first page, top to bottom.",
|
|
139
|
+
"Click the next-page control in the bid-history pagination.",
|
|
140
|
+
"Read the amounts on the second page.",
|
|
141
|
+
],
|
|
142
|
+
inputs: { seededBidCount: 13, rowsPerPage: 5 },
|
|
143
|
+
expectedBehaviour: "Bid history is paginated newest-first, and paging fetches the next slice rather than re-rendering the same rows. 13 seeded bids at 5 per page make 3 pages.",
|
|
144
|
+
expectedUiState: "Page 1 opens with the highest and most recent bid, ₹3,199.00, at the top. Page 2 shows five DIFFERENT amounts, lower than page 1's — identical rows on both pages means the page control moved a label and not the query. The pagination control is visible without scrolling past the whole list.",
|
|
145
|
+
expectedData: { pageCount: 3 },
|
|
146
|
+
endResult: "Pagination is not persisted; reopening the page starts at page 1, newest first.",
|
|
147
|
+
},
|
|
148
|
+
"checklist-buying-bidding-bid-history-shows-date-time-and-masked-name": {
|
|
149
|
+
roles: ["buyer"],
|
|
150
|
+
startPage: "/auctions/auction-beyblade-metal-lightning-l-drago",
|
|
151
|
+
steps: [
|
|
152
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!, an account that has not bid on this auction.",
|
|
153
|
+
"Open /auctions/auction-beyblade-metal-lightning-l-drago.",
|
|
154
|
+
"Click the 'Bid History' control to expand it.",
|
|
155
|
+
"Read the bidder identity, amount and timestamp on every visible row.",
|
|
156
|
+
],
|
|
157
|
+
expectedBehaviour: "Bidder names are masked on the way out of the server, not hidden in the renderer. The masking helper for bids once returned its input unchanged while being named as though it masked — every bidder's real name was in the public payload and nothing displayed it, so the leak was invisible from the screen. Displaying the masked name is what makes that checkable by eye.",
|
|
158
|
+
expectedUiState: "Each row reads in the shape '₹3,199.00 · M*** U*** 1*** · 4 Sept, 17:06'. The name is genuinely masked — asterisks in the middle — and is not a full readable name, and not a placeholder like 'Bidder'. The timestamp carries both a date and a clock time, not a date alone.",
|
|
159
|
+
endResult: "The same masked names and timestamps appear after reload. A real full name anywhere in these rows is a PII leak and fails the case outright.",
|
|
160
|
+
},
|
|
161
|
+
"checklist-buying-bidding-bid-increment-live-tier-change": {
|
|
162
|
+
roles: ["buyer"],
|
|
163
|
+
startPage: "/auctions/auction-beyblade-metal-lightning-l-drago",
|
|
164
|
+
steps: [
|
|
165
|
+
"In window A, sign in as rehan.sheikh@gmail.com / TempPass123! and open /auctions/auction-beyblade-metal-lightning-l-drago.",
|
|
166
|
+
"Read the 'min increment' figure in window A and leave the page open without reloading.",
|
|
167
|
+
"In window B, sign in as vivaan.kapoor@gmail.com / TempPass123! and open the same auction.",
|
|
168
|
+
"In window B click 'Place a bid', select 'Custom', type 5001, and click 'Place Bid'.",
|
|
169
|
+
"Switch back to window A and watch the 'min increment' figure for up to 10 seconds without reloading.",
|
|
170
|
+
],
|
|
171
|
+
inputs: { startingBid: 3199, tierCrossingBid: 5001 },
|
|
172
|
+
expectedBehaviour: "The increment is banded by price, and the band is recomputed from the live current bid pushed over SSE — not captured when the page first rendered. Crossing ₹5,000 moves the band from ₹200 to ₹500 for everyone already watching.",
|
|
173
|
+
expectedUiState: "Window A starts at 'min increment ₹200.00' and becomes 'min increment ₹500.00' within about 10 seconds, with no reload. A figure that only changes when the tester refreshes means the SSE update carried the price but not the derived band.",
|
|
174
|
+
expectedData: { incrementBefore: 200, incrementAfter: 500 },
|
|
175
|
+
endResult: "Reloading window A confirms ₹500. Run this early in a session: bids are wiped and re-seeded per run, so L-Drago starts at ₹3,199, but a later case that bids it up moves it out of the ₹200 band and this case can no longer cross the boundary.",
|
|
176
|
+
},
|
|
177
|
+
"checklist-buying-bidding-bid-increment-override-floor-raising": {
|
|
178
|
+
roles: ["buyer", "admin"],
|
|
179
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-1",
|
|
180
|
+
steps: [
|
|
181
|
+
"Sign in as admin@letitrip.in / TempPass123!, the owner of store-tester-sandbox.",
|
|
182
|
+
"Open the seller editor for auction-tester-sandbox-cycle-1 and set 'Minimum Bid Increment' to 1, then save.",
|
|
183
|
+
"Sign out and sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
184
|
+
"Open /auctions/auction-tester-sandbox-cycle-1, click 'Place a bid', select 'Custom', type 15001, and click 'Place Bid'.",
|
|
185
|
+
"Clear the field, type 16000, and click 'Place Bid'.",
|
|
186
|
+
"Sign out, sign in as admin@letitrip.in / TempPass123!, and set the same auction's 'Minimum Bid Increment' to 2000, then save.",
|
|
187
|
+
"Sign out and sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
188
|
+
"Open the auction, click 'Place a bid', select 'Custom', type 17000, and click 'Place Bid'.",
|
|
189
|
+
"Clear the field, type 18000, and click 'Place Bid'.",
|
|
190
|
+
],
|
|
191
|
+
inputs: { overrideBelowTier: 1, overrideAboveTier: 2000, tierIncrement: 1000 },
|
|
192
|
+
expectedBehaviour: "The per-listing override can only RAISE the floor, never lower it. With the override at ₹1 the ₹1,000 tier still governs, so ₹15,001 is refused and ₹16,000 accepted. With the override at ₹2,000 the override governs, so ₹17,000 is refused and ₹18,000 accepted. A seller must not be able to undercut the platform's own increment band.",
|
|
193
|
+
expectedUiState: "Both refusals are inline errors on the amount field naming the effective minimum — ₹1,000 in the first half, ₹2,000 in the second. Both accepted bids close the modal and raise the current bid.",
|
|
194
|
+
expectedData: { effectiveIncrementFirstHalf: 1000, effectiveIncrementSecondHalf: 2000 },
|
|
195
|
+
endResult: "The current bid reflects only the two accepted bids. Set the increment back to its seeded value afterwards. The store is store-tester-sandbox and its owner is admin@letitrip.in — signing in as tester@letitrip.in gives a 403 that reads like a permissions bug and is not one.",
|
|
196
|
+
},
|
|
197
|
+
"checklist-buying-bidding-bid-increment-tiered": {
|
|
198
|
+
roles: ["buyer"],
|
|
199
|
+
startPage: "/auctions/auction-beyblade-metal-lightning-l-drago",
|
|
200
|
+
steps: [
|
|
201
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
202
|
+
"Open /auctions/auction-beyblade-metal-lightning-l-drago.",
|
|
203
|
+
"Read the 'min increment' figure beside the current bid of ₹3,199.00.",
|
|
204
|
+
"Click 'Place a bid', select 'Custom', type 3200, and click 'Place Bid'.",
|
|
205
|
+
"Clear the field, type 3399, and click 'Place Bid'.",
|
|
206
|
+
],
|
|
207
|
+
inputs: { currentBid: 3199, tierIncrement: 200, tooSmall: 3200, exactTier: 3399 },
|
|
208
|
+
expectedBehaviour: "At ₹3,199 the auction sits in the ₹1,000–₹5,000 band, whose increment is ₹200. ₹3,200 clears the current bid by ₹1 and is refused; ₹3,399 clears it by exactly ₹200 and is accepted, proving the boundary is inclusive.",
|
|
209
|
+
expectedUiState: "₹3,200 produces an inline error on the amount field naming ₹200.00 — not a toast and not a silent no-op. ₹3,399 closes the modal and the current bid becomes ₹3,399.00.",
|
|
210
|
+
expectedData: { currentBid: 3399 },
|
|
211
|
+
endResult: "On reload the current bid reads ₹3,399.00. Run this before any case that bids L-Drago past ₹5,000, which would move it into the ₹500 band.",
|
|
212
|
+
},
|
|
213
|
+
"checklist-buying-bidding-bid-preset-follows-live-price": {
|
|
214
|
+
roles: ["buyer"],
|
|
215
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-2",
|
|
216
|
+
steps: [
|
|
217
|
+
"In window A, sign in as rehan.sheikh@gmail.com / TempPass123! and open /auctions/auction-tester-sandbox-cycle-2.",
|
|
218
|
+
"Click 'Place a bid' and select the 'Minimum' preset at ₹15,000.00, without clicking 'Place Bid'.",
|
|
219
|
+
"In window B, sign in as vivaan.kapoor@gmail.com / TempPass123! and open the same auction.",
|
|
220
|
+
"In window B click 'Place a bid', select 'Custom', type 16000, and click 'Place Bid'.",
|
|
221
|
+
"Switch to window A and wait up to 10 seconds without clicking anything.",
|
|
222
|
+
"Read the preset labels, the helper text and the number in the amount field.",
|
|
223
|
+
],
|
|
224
|
+
inputs: { staleAmount: 15000, competingBid: 16000, newMinimum: 17000 },
|
|
225
|
+
expectedBehaviour: "An open bid modal re-prices itself from the live feed. Otherwise the tester submits a figure that was valid when the modal opened, gets a rejection they cannot explain, and the real cause — someone else bid — is invisible.",
|
|
226
|
+
expectedUiState: "Window A's amount field now reads 17000, the first preset reads 'Minimum / ₹17,000.00', and the helper text names the new minimum. The stale 15000 is gone from the field rather than sitting there next to updated labels.",
|
|
227
|
+
expectedData: { refreshedMinimum: 17000 },
|
|
228
|
+
endResult: "Nothing persists until submitted. Clicking 'Place Bid' with the refreshed amount succeeds; a modal still showing ₹15,000 would fail.",
|
|
229
|
+
},
|
|
230
|
+
"checklist-buying-bidding-bid-presets-are-increment-multiples": {
|
|
231
|
+
roles: ["buyer"],
|
|
232
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-1",
|
|
233
|
+
steps: [
|
|
234
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
235
|
+
"Open /auctions/auction-tester-sandbox-cycle-1 and read the current bid and min increment.",
|
|
236
|
+
"Click 'Place a bid'.",
|
|
237
|
+
"Read the three preset buttons beside 'Custom'.",
|
|
238
|
+
],
|
|
239
|
+
inputs: { currentBid: 15000, increment: 1000 },
|
|
240
|
+
expectedBehaviour: "Presets are 1×, 5× and 10× the EFFECTIVE increment, computed from the minimum next bid. Deriving them from the raw multipliers instead would offer '+₹1', '+₹5' and '+₹10' on a ₹15,000 auction — every one of them below the minimum and therefore guaranteed to be rejected.",
|
|
241
|
+
expectedUiState: "The row reads 'Minimum / ₹15,000.00', '+₹4,000.00 / ₹19,000.00', '+₹9,000.00 / ₹24,000.00', 'Custom'. On a zero-bid auction the first is labelled 'Minimum', not '+₹0'. No preset offers a one-, five- or ten-rupee step.",
|
|
242
|
+
expectedData: { presetCount: 3 },
|
|
243
|
+
endResult: "Read-only inspection of the modal; nothing is submitted and nothing persists.",
|
|
244
|
+
},
|
|
245
|
+
"checklist-buying-bidding-bid-succeeds-and-outbids-previous-winner": {
|
|
246
|
+
roles: ["buyer"],
|
|
247
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-1",
|
|
248
|
+
steps: [
|
|
249
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
250
|
+
"Open /auctions/auction-tester-sandbox-cycle-1, click 'Place a bid', select the 'Minimum' preset at ₹15,000.00, and click 'Place Bid'.",
|
|
251
|
+
"Read the current bid and bid count.",
|
|
252
|
+
"Sign out and sign in as vivaan.kapoor@gmail.com / TempPass123!.",
|
|
253
|
+
"Open the same auction, click 'Place a bid', select 'Custom', type 16000, and click 'Place Bid'.",
|
|
254
|
+
"Read the whole modal for error text before it closes.",
|
|
255
|
+
"Click 'Bid History'.",
|
|
256
|
+
],
|
|
257
|
+
inputs: { firstBid: 15000, secondBid: 16000 },
|
|
258
|
+
expectedBehaviour: "The higher bid is written and the previous leader's row is flipped to outbid in the same batch. The batch write is the fragile part: it once resolved its Firestore module through a relative runtime require that broke only in production, so every bid failed with a module-not-found error while every local test passed.",
|
|
259
|
+
expectedUiState: "Current bid ₹16,000.00 and '2 bids'. The ₹15,000 row in Bid History is marked outbid. No text containing a file path, 'Cannot find module', 'Require stack' or 'Batch write failed' appears anywhere in the modal or as a toast.",
|
|
260
|
+
expectedData: { currentBid: 16000, bidCount: 2 },
|
|
261
|
+
endResult: "On reload the current bid and count persist at ₹16,000.00 and 2 bids.",
|
|
262
|
+
},
|
|
263
|
+
"checklist-buying-bidding-first-bid-can-equal-starting-bid": {
|
|
264
|
+
roles: ["buyer"],
|
|
265
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-1",
|
|
266
|
+
steps: [
|
|
267
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
268
|
+
"Open /auctions/auction-tester-sandbox-cycle-1 while it still shows 0 bids.",
|
|
269
|
+
"Click 'Place a bid' and read the minimum shown in the modal.",
|
|
270
|
+
"Select the 'Minimum' preset and click 'Place Bid'.",
|
|
271
|
+
"Sign out and sign in as vivaan.kapoor@gmail.com / TempPass123!.",
|
|
272
|
+
"Open the same auction, click 'Place a bid', select 'Custom', type 15500, and click 'Place Bid'.",
|
|
273
|
+
],
|
|
274
|
+
inputs: { startingBid: 15000, secondBid: 15500, increment: 1000 },
|
|
275
|
+
expectedBehaviour: "The FIRST bid may equal the starting price exactly — there is nothing to outbid yet. Only from the second bid onwards does current-plus-increment apply, which is why ₹15,500 is then refused.",
|
|
276
|
+
expectedUiState: "The modal's minimum equals the starting bid, ₹15,000.00, and its first preset is labelled 'Minimum' rather than '+₹0'. The first bid is accepted: 1 bid at ₹15,000.00. The second bidder's ₹15,500 draws an inline increment error.",
|
|
277
|
+
expectedData: { currentBid: 15000, bidCount: 1 },
|
|
278
|
+
endResult: "On reload: ₹15,000.00 and 1 bid. A refusal of the first bid for being 'not above the current bid' is the failure this case catches.",
|
|
279
|
+
},
|
|
280
|
+
"checklist-buying-bidding-first-bid-displays-at-starting-price": {
|
|
281
|
+
roles: ["buyer"],
|
|
282
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-3",
|
|
283
|
+
steps: [
|
|
284
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
285
|
+
"Open /auctions/auction-tester-sandbox-cycle-3 while it still shows 0 bids.",
|
|
286
|
+
"Click 'Place a bid', select 'Custom', type 24000, and click 'Place Bid'.",
|
|
287
|
+
"Close the modal and read the current bid on the page.",
|
|
288
|
+
"Sign out and sign in as vivaan.kapoor@gmail.com / TempPass123!.",
|
|
289
|
+
"Open the same auction, click 'Place a bid', select 'Custom', type 17000, and click 'Place Bid'.",
|
|
290
|
+
"Read the current bid and who is leading.",
|
|
291
|
+
],
|
|
292
|
+
inputs: { startingBid: 15000, proxyMax: 24000, challengerBid: 17000 },
|
|
293
|
+
expectedBehaviour: "A custom amount is a proxy MAXIMUM, not the price. Bidding ₹24,000 into an empty auction shows ₹15,000 — the starting price — because there is no one to outbid. When a challenger bids ₹17,000 the proxy answers with exactly one increment above it, ₹18,000, and stops there rather than jumping to the maximum.",
|
|
294
|
+
expectedUiState: "After the proxy bid the current bid reads ₹15,000.00, not ₹16,000 and not ₹24,000. After the challenger's bid it reads ₹18,000.00 and rehan.sheikh@gmail.com is still shown as leading. A visible ₹24,000 would publish the buyer's maximum to every competitor.",
|
|
295
|
+
expectedData: { currentBidAfterProxy: 15000, currentBidAfterChallenge: 18000 },
|
|
296
|
+
endResult: "On reload: ₹18,000.00 with the proxy bidder leading.",
|
|
297
|
+
},
|
|
298
|
+
"checklist-buying-bidding-outbid-notification": {
|
|
299
|
+
roles: ["buyer"],
|
|
300
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-1",
|
|
301
|
+
steps: [
|
|
302
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
303
|
+
"Open /auctions/auction-tester-sandbox-cycle-1, click 'Place a bid', select the 'Minimum' preset at ₹15,000.00, and click 'Place Bid'.",
|
|
304
|
+
"Sign out and sign in as vivaan.kapoor@gmail.com / TempPass123!.",
|
|
305
|
+
"Open the same auction, click 'Place a bid', select 'Custom', type 16000, and click 'Place Bid'.",
|
|
306
|
+
"Sign out and sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
307
|
+
"Open the notification bell in the header.",
|
|
308
|
+
"Open /user/notifications.",
|
|
309
|
+
"Click the outbid notification.",
|
|
310
|
+
],
|
|
311
|
+
inputs: { firstBid: 15000, outbiddingBid: 16000 },
|
|
312
|
+
expectedBehaviour: "Losing the lead notifies the bidder who lost it, and the notification links somewhere real — a bid has no per-record page in any role, so the correct destination is the bids list rather than a fabricated per-bid URL that would 404.",
|
|
313
|
+
expectedUiState: "The bell shows an unread count and the list holds an outbid entry naming the sandbox auction. Clicking it lands on a real page, not a 404.",
|
|
314
|
+
endResult: "The notification survives a reload of /user/notifications. No notification at all means the outbid hook never fired.",
|
|
315
|
+
},
|
|
316
|
+
"checklist-buying-bidding-outbid-notification-goes-to-outbid-user": {
|
|
317
|
+
roles: ["buyer"],
|
|
318
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-1",
|
|
319
|
+
steps: [
|
|
320
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
321
|
+
"Open /auctions/auction-tester-sandbox-cycle-1, click 'Place a bid', select 'Custom', type 20000, and click 'Place Bid'.",
|
|
322
|
+
"Sign out and sign in as vivaan.kapoor@gmail.com / TempPass123!.",
|
|
323
|
+
"Open the same auction, click 'Place a bid', select 'Custom', type 17000, and click 'Place Bid'.",
|
|
324
|
+
"Open /user/notifications as vivaan.kapoor@gmail.com.",
|
|
325
|
+
"Sign out and sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
326
|
+
"Open /user/notifications as rehan.sheikh@gmail.com.",
|
|
327
|
+
],
|
|
328
|
+
inputs: { proxyMax: 20000, losingBid: 17000 },
|
|
329
|
+
expectedBehaviour: "The notification goes to whoever LOST the lead. Here the challenger is outbid the instant they bid, by the standing proxy, so the challenger is notified and the proxy holder — who never lost the lead — is not. Notifying the leader instead, or notifying both, is the inversion this case catches.",
|
|
330
|
+
expectedUiState: "vivaan.kapoor@gmail.com has a new outbid notification for the sandbox auction. rehan.sheikh@gmail.com has NO new outbid notification, only whatever was there before.",
|
|
331
|
+
expectedData: { challengerNotified: true, leaderNotified: false },
|
|
332
|
+
endResult: "Both inboxes still read that way after a reload. The leader receiving an outbid notice while still leading is a fail even though a notification did fire.",
|
|
333
|
+
},
|
|
334
|
+
"checklist-buying-bidding-place-bid": {
|
|
335
|
+
roles: ["buyer"],
|
|
336
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-1",
|
|
337
|
+
steps: [
|
|
338
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
339
|
+
"Open /auctions/auction-tester-sandbox-cycle-1.",
|
|
340
|
+
"Read the current bid and bid count.",
|
|
341
|
+
"Click 'Place a bid'.",
|
|
342
|
+
"Select the 'Minimum' preset at ₹15,000.00.",
|
|
343
|
+
"Click 'Place Bid'.",
|
|
344
|
+
"Open /user/bids.",
|
|
345
|
+
],
|
|
346
|
+
inputs: { bidAmount: 15000 },
|
|
347
|
+
expectedBehaviour: "The bid is written, the auction's current bid and count move, and the bid appears in the buyer's own list. All three must happen: a bid recorded against the auction but missing from /user/bids means the buyer reference was not stored.",
|
|
348
|
+
expectedUiState: "The modal closes with a success state. The auction reads ₹15,000.00 and '1 bid'. No stack trace, file path or 'Cannot find module' text appears anywhere. /user/bids has a row for this auction.",
|
|
349
|
+
expectedData: { currentBid: 15000, bidCount: 1 },
|
|
350
|
+
endResult: "Reloading the auction still shows ₹15,000.00 and 1 bid, and the row is still on /user/bids.",
|
|
351
|
+
},
|
|
352
|
+
"checklist-buying-bidding-place-bid-live-other-viewer": {
|
|
353
|
+
roles: ["buyer", "guest"],
|
|
354
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-2",
|
|
355
|
+
steps: [
|
|
356
|
+
"In window A, sign in as rehan.sheikh@gmail.com / TempPass123! and open /auctions/auction-tester-sandbox-cycle-2.",
|
|
357
|
+
"In window B, open the same auction signed out, and read the current bid and bid count.",
|
|
358
|
+
"In window A, click 'Place a bid', select the 'Minimum' preset at ₹15,000.00, and click 'Place Bid'.",
|
|
359
|
+
"Switch to window B and watch for up to 10 seconds without reloading.",
|
|
360
|
+
],
|
|
361
|
+
inputs: { bidAmount: 15000 },
|
|
362
|
+
expectedBehaviour: "Bid updates are relayed over SSE from the server, which is why a signed-out viewer sees them at all — the underlying realtime node is not client-readable, so the browser never reads it directly.",
|
|
363
|
+
expectedUiState: "Window B moves to 'Current bid ₹15,000.00' and '1 bid' within about 10 seconds, with no reload and no interaction. Figures that only change on refresh mean the stream is not connected.",
|
|
364
|
+
expectedData: { currentBid: 15000, bidCount: 1 },
|
|
365
|
+
endResult: "Reloading window B shows the same figures it had already updated to.",
|
|
366
|
+
},
|
|
367
|
+
"checklist-buying-bidding-place-bid-live-self": {
|
|
368
|
+
roles: ["buyer"],
|
|
369
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-1",
|
|
370
|
+
steps: [
|
|
371
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
372
|
+
"Open /auctions/auction-tester-sandbox-cycle-1 and read the current bid and bid count.",
|
|
373
|
+
"Click 'Place a bid', select the 'Minimum' preset, and click 'Place Bid'.",
|
|
374
|
+
"Watch the page for 10 seconds without reloading it.",
|
|
375
|
+
],
|
|
376
|
+
inputs: { bidAmount: 15000 },
|
|
377
|
+
expectedBehaviour: "The bidder's own page updates in place from the same stream, so the figure they just moved is the figure they see. A page that requires a manual refresh after your own successful bid reads as though the bid failed.",
|
|
378
|
+
expectedUiState: "The current bid and count both update without the tester refreshing. The page does not navigate, and no full-page loading state appears.",
|
|
379
|
+
expectedData: { currentBid: 15000, bidCount: 1 },
|
|
380
|
+
endResult: "On reload the same values persist.",
|
|
381
|
+
},
|
|
382
|
+
"checklist-buying-bidding-server-error-copy-is-never-raw": {
|
|
383
|
+
roles: ["buyer", "admin"],
|
|
384
|
+
startPage: "/auctions/auction-tester-sandbox-cycle-1",
|
|
385
|
+
steps: [
|
|
386
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
387
|
+
"Open /auctions/auction-tester-sandbox-cycle-1, click 'Place a bid', select 'Custom', type 15000, and click 'Place Bid'.",
|
|
388
|
+
"Read every word of any error shown in the modal or as a toast.",
|
|
389
|
+
"Repeat the bid a second time to force a rejection.",
|
|
390
|
+
"Sign out and sign in as admin@letitrip.in / TempPass123!.",
|
|
391
|
+
"Open /admin/maintenance/server-errors.",
|
|
392
|
+
],
|
|
393
|
+
inputs: { bidAmount: 15000 },
|
|
394
|
+
expectedBehaviour: "Any 5xx message is scrubbed before it reaches the browser and the real one is kept server-side for the error recorder. This modal is the exact place a Node module-not-found error, complete with a /var/task path and a full require stack, was once rendered to buyers inside 'Place your bid'.",
|
|
395
|
+
expectedUiState: "Nothing containing '/var/task/', 'Require stack', 'Cannot find module' or any filesystem path appears in the modal, in a toast, or in the page body — only plain English. If an error did occur, /admin/maintenance/server-errors holds the full detail with a reference that matches what the user was shown.",
|
|
396
|
+
endResult: "The admin error list keeps its entries across a reload. Readable user copy with nothing recorded server-side is only half a pass — the detail has to land somewhere.",
|
|
397
|
+
},
|
|
398
|
+
"checklist-buying-bidding-win-auction": {
|
|
399
|
+
roles: ["buyer"],
|
|
400
|
+
startPage: "/auctions/auction-tester-sandbox-won",
|
|
401
|
+
steps: [
|
|
402
|
+
"Sign in as tester@letitrip.in / TempPass123!.",
|
|
403
|
+
"Open /auctions/auction-tester-sandbox-won.",
|
|
404
|
+
"Open /user/bids and find the row for 'Test Auction — Already Won'.",
|
|
405
|
+
"Click 'Pay now' on that row.",
|
|
406
|
+
"Open /cart and switch to the 'Won Auctions' tab.",
|
|
407
|
+
"Try to change the quantity and try to remove the line.",
|
|
408
|
+
"Click through checkout, selecting the first saved address and Cash on Delivery, and place the order.",
|
|
409
|
+
"Open /user/orders and switch to the 'Auction wins' tab.",
|
|
410
|
+
],
|
|
411
|
+
inputs: { auctionId: "auction-tester-sandbox-won", winningBid: 15000, paymentMethod: "Cash on Delivery" },
|
|
412
|
+
expectedBehaviour: "A win becomes a LOCKED cart line and is paid for through the ordinary checkout, which is the only flow that knows how to collect an address, take payment, split by store and produce a real order. Settlement used to write an order document directly in a shape no orders list could render and no checkout could accept, so a winner had no way to pay at all.",
|
|
413
|
+
expectedUiState: "The /user/bids row shows a won badge and a working 'Pay now'. In the Won Auctions cart tab the line has no remove control and its quantity cannot be changed. After placing the order it appears under the 'Auction wins' tab of /user/orders with the item title and amount.",
|
|
414
|
+
expectedData: { orderType: "auction" },
|
|
415
|
+
endResult: "The order survives a reload under 'Auction wins'. The bid is back-linked to it, so the same win cannot be paid for twice.",
|
|
416
|
+
},
|
|
417
|
+
};
|