@mohasinac/appkit 4.40.1 → 4.41.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/features/categories/repository/categories.repository.js +2 -2
- package/dist/features/shell/SectionForm.js +44 -5
- package/dist/features/tester/seed-data/_money-flows.js +65 -49
- package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +6 -4
- package/dist/features/tester/seed-data/authored/admin__coupons.js +14 -13
- package/dist/features/tester/seed-data/authored/buying__bidding.js +154 -140
- package/dist/features/tester/seed-data/authored/buying__browsing-search.js +4 -4
- package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +59 -56
- package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +18 -18
- package/dist/features/tester/seed-data/authored/buying__cart.js +105 -79
- package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +6 -8
- package/dist/features/tester/seed-data/authored/buying__my-orders.js +13 -13
- package/dist/features/tester/seed-data/authored/buying__offers.js +6 -6
- package/dist/features/tester/seed-data/authored/buying__order-detail-actions.js +8 -7
- package/dist/features/tester/seed-data/authored/buying__product-detail.js +62 -56
- package/dist/features/tester/seed-data/authored/buying__return-request.js +6 -6
- package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +4 -4
- package/dist/features/tester/seed-data/authored/buying__reviews.js +1 -1
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +8 -8
- package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +1 -1
- package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +29 -16
- package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.js +9 -9
- package/dist/features/tester/seed-data/authored/content-discovery__events.js +69 -36
- package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +1 -1
- package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +2 -2
- package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +2 -2
- package/dist/features/tester/seed-data/authored/design-ux__general-design.js +1 -1
- package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +1 -1
- package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +3 -3
- package/dist/features/tester/seed-data/authored/index.js +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +2 -2
- package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +6 -4
- package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +2 -2
- package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +1 -1
- package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +8 -10
- package/dist/features/tester/seed-data/authored/selling__become-seller.js +2 -2
- package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.js +2 -2
- package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +2 -2
- package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.js +2 -2
- package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +2 -2
- package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +2 -2
- package/dist/features/tester/seed-data/authored/seo__og-images.js +3 -4
- package/dist/features/tester/seed-data/authored/seo__page-metadata.js +6 -8
- package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +5 -5
- package/dist/features/tester/seed-data/index.d.ts +0 -10
- package/dist/features/tester/seed-data/index.js +0 -10
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +75 -89
- package/dist/features/tester/seed-data/tester-responses-seed-data.js +5 -5
- package/dist/index.d.ts +0 -8
- package/dist/index.js +0 -21
- package/dist/seed/addresses-seed-data.js +0 -34
- package/dist/seed/index.d.ts +1 -1
- package/dist/seed/index.js +4 -3
- package/dist/seed/manifest.js +11 -12
- package/dist/seed/notifications-seed-data.js +4 -4
- package/dist/seed/stores-seed-data.js +7 -52
- package/dist/seed/users-seed-data.js +3 -83
- package/package.json +2 -2
- package/scripts/seed-cli.mjs +15 -20
- package/dist/_internal/server/features/classified/actions.d.ts +0 -12
- package/dist/_internal/server/features/classified/actions.js +0 -33
- package/dist/_internal/server/features/digital-code/actions.d.ts +0 -12
- package/dist/_internal/server/features/digital-code/actions.js +0 -33
- package/dist/_internal/server/features/homepage/data.d.ts +0 -18
- package/dist/_internal/server/features/homepage/data.js +0 -70
- package/dist/_internal/server/features/live/actions.d.ts +0 -6
- package/dist/_internal/server/features/live/actions.js +0 -27
- package/dist/_internal/server/features/messages/actions.d.ts +0 -6
- package/dist/_internal/server/features/messages/actions.js +0 -6
- package/dist/_internal/server/features/messages/data.d.ts +0 -10
- package/dist/_internal/server/features/messages/data.js +0 -24
- package/dist/_internal/server/features/messages/index.d.ts +0 -2
- package/dist/_internal/server/features/messages/index.js +0 -2
- package/dist/_internal/server/jobs/core/testerSandboxRefresh.d.ts +0 -12
- package/dist/_internal/server/jobs/core/testerSandboxRefresh.js +0 -112
- package/dist/_internal/server/jobs/handlers/testerSandboxRefresh.d.ts +0 -2
- package/dist/_internal/server/jobs/handlers/testerSandboxRefresh.js +0 -2
- package/dist/_internal/shared/features/homepage/section-gate.d.ts +0 -14
- package/dist/_internal/shared/features/homepage/section-gate.js +0 -51
- package/dist/_internal/shared/features/lottery/config-form.d.ts +0 -58
- package/dist/_internal/shared/features/lottery/config-form.js +0 -71
- package/dist/client/api/useFeatureFlags.d.ts +0 -22
- package/dist/client/api/useFeatureFlags.js +0 -27
- package/dist/features/account/address-validation.d.ts +0 -20
- package/dist/features/account/address-validation.js +0 -35
- package/dist/features/account/components/ChatList.d.ts +0 -14
- package/dist/features/account/components/ChatList.js +0 -9
- package/dist/features/account/components/ChatWindow.d.ts +0 -17
- package/dist/features/account/components/ChatWindow.js +0 -6
- package/dist/features/account/components/MessagesView.d.ts +0 -16
- package/dist/features/account/components/MessagesView.js +0 -5
- package/dist/features/account/components/UserOffersView.d.ts +0 -10
- package/dist/features/account/components/UserOffersView.js +0 -5
- package/dist/features/account/constants/addresses.d.ts +0 -13
- package/dist/features/account/constants/addresses.js +0 -43
- package/dist/features/account/hooks/useAddressForm.d.ts +0 -24
- package/dist/features/account/hooks/useAddressForm.js +0 -58
- package/dist/features/admin/actions/chat-actions.d.ts +0 -29
- package/dist/features/admin/actions/chat-actions.js +0 -101
- package/dist/features/admin/components/AdminFeatureFlagsView.d.ts +0 -9
- package/dist/features/admin/components/AdminFeatureFlagsView.js +0 -109
- package/dist/features/admin/components/AdminSiteView.d.ts +0 -10
- package/dist/features/admin/components/AdminSiteView.js +0 -52
- package/dist/features/admin/hooks/useChat.d.ts +0 -24
- package/dist/features/admin/hooks/useChat.js +0 -100
- package/dist/features/admin/permission-map.d.ts +0 -3
- package/dist/features/admin/permission-map.js +0 -26
- package/dist/features/admin/repository/chat.repository.d.ts +0 -50
- package/dist/features/admin/repository/chat.repository.js +0 -223
- package/dist/features/auth/actions/password-change-otp-actions.d.ts +0 -18
- package/dist/features/auth/actions/password-change-otp-actions.js +0 -88
- package/dist/features/auth/actions/realtime-token-actions.d.ts +0 -11
- package/dist/features/auth/actions/realtime-token-actions.js +0 -38
- package/dist/features/auth/password-change-otp.d.ts +0 -34
- package/dist/features/auth/password-change-otp.js +0 -56
- package/dist/features/classified/components/ClassifiedContactSellerPanel.d.ts +0 -12
- package/dist/features/classified/components/ClassifiedContactSellerPanel.js +0 -49
- package/dist/features/events/api/route.d.ts +0 -12
- package/dist/features/events/api/route.js +0 -90
- package/dist/features/faq/api/route.d.ts +0 -11
- package/dist/features/faq/api/route.js +0 -52
- package/dist/features/faq/hooks/useFAQs.d.ts +0 -22
- package/dist/features/faq/hooks/useFAQs.js +0 -41
- package/dist/features/media/upload/video-poster.test.d.ts +0 -1
- package/dist/features/media/upload/video-poster.test.js +0 -42
- package/dist/features/messages/actions/index.d.ts +0 -2
- package/dist/features/messages/actions/index.js +0 -2
- package/dist/features/messages/actions/messages-actions.d.ts +0 -15
- package/dist/features/messages/actions/messages-actions.js +0 -33
- package/dist/features/messages/actions/ping-rtdb.d.ts +0 -2
- package/dist/features/messages/actions/ping-rtdb.js +0 -26
- package/dist/features/messages/hooks/useConversation.d.ts +0 -22
- package/dist/features/messages/hooks/useConversation.js +0 -155
- package/dist/features/messages/hooks/useConversations.d.ts +0 -15
- package/dist/features/messages/hooks/useConversations.js +0 -104
- package/dist/features/messages/index.d.ts +0 -6
- package/dist/features/messages/index.js +0 -4
- package/dist/features/messages/realtime.d.ts +0 -32
- package/dist/features/messages/realtime.js +0 -39
- package/dist/features/messages/repository/conversations.repository.d.ts +0 -71
- package/dist/features/messages/repository/conversations.repository.js +0 -284
- package/dist/features/messages/schemas/firestore.d.ts +0 -34
- package/dist/features/messages/schemas/firestore.js +0 -16
- package/dist/features/messages/schemas/index.d.ts +0 -177
- package/dist/features/messages/schemas/index.js +0 -35
- package/dist/features/messages/server.d.ts +0 -6
- package/dist/features/messages/server.js +0 -6
- package/dist/features/products/components/MakeOfferForm.d.ts +0 -20
- package/dist/features/products/components/MakeOfferForm.js +0 -9
- package/dist/features/reviews/api/route.d.ts +0 -21
- package/dist/features/reviews/api/route.js +0 -174
- package/dist/features/seller/api/offers/route.d.ts +0 -17
- package/dist/features/seller/api/offers/route.js +0 -63
- package/dist/features/seller/components/SellerAuctionsView.d.ts +0 -9
- package/dist/features/seller/components/SellerAuctionsView.js +0 -113
- package/dist/features/seller/components/SellerOffersPanel.d.ts +0 -21
- package/dist/features/seller/components/SellerOffersPanel.js +0 -160
- package/dist/features/seller/components/SellerPreOrdersView.d.ts +0 -6
- package/dist/features/seller/components/SellerPreOrdersView.js +0 -148
- package/dist/features/seller/components/SellerPrizeDrawsView.d.ts +0 -6
- package/dist/features/seller/components/SellerPrizeDrawsView.js +0 -152
- package/dist/features/seller/permission-map.d.ts +0 -5
- package/dist/features/seller/permission-map.js +0 -17
- package/dist/features/shell/StepForm.d.ts +0 -80
- package/dist/features/shell/StepForm.js +0 -136
- package/dist/features/stores/api/route.d.ts +0 -12
- package/dist/features/stores/api/route.js +0 -110
- package/dist/features/tester/seed-data/authored/account-auth__testing-program--admin.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/account-auth__testing-program--admin.js +0 -33
- package/dist/features/tester/seed-data/authored/account-auth__testing-program.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/account-auth__testing-program.js +0 -138
- package/dist/features/tester/seed-data/bids-tester-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/bids-tester-seed-data.js +0 -37
- package/dist/features/tester/seed-data/blog-tester-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/blog-tester-seed-data.js +0 -40
- package/dist/features/tester/seed-data/carts-tester-seed-data.d.ts +0 -3
- package/dist/features/tester/seed-data/carts-tester-seed-data.js +0 -70
- package/dist/features/tester/seed-data/categories-tester-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/categories-tester-seed-data.js +0 -218
- package/dist/features/tester/seed-data/coupons-tester-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/coupons-tester-seed-data.js +0 -76
- package/dist/features/tester/seed-data/events-tester-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/events-tester-seed-data.js +0 -193
- package/dist/features/tester/seed-data/offers-tester-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/offers-tester-seed-data.js +0 -191
- package/dist/features/tester/seed-data/orders-tester-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/orders-tester-seed-data.js +0 -329
- package/dist/features/tester/seed-data/products-tester-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/products-tester-seed-data.js +0 -815
- package/dist/features/tester/seed-data/stores-tester-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/stores-tester-seed-data.js +0 -79
- package/dist/features/wishlist/components/WishlistToggleButton.d.ts +0 -12
- package/dist/features/wishlist/components/WishlistToggleButton.js +0 -36
- package/dist/monitoring/analytics.d.ts +0 -80
- package/dist/monitoring/analytics.js +0 -176
- package/dist/next/middleware/pii-redactor.d.ts +0 -32
- package/dist/next/middleware/pii-redactor.js +0 -84
- package/dist/providers/db-firebase/realtime.d.ts +0 -42
- package/dist/providers/db-firebase/realtime.js +0 -138
- package/dist/security/rbac/Can.d.ts +0 -31
- package/dist/security/rbac/Can.js +0 -22
- package/dist/security/rbac/default-roles.d.ts +0 -2
- package/dist/security/rbac/default-roles.js +0 -83
- package/dist/security/rbac/hook.d.ts +0 -20
- package/dist/security/rbac/hook.js +0 -30
- package/dist/security/rbac/index.d.ts +0 -8
- package/dist/security/rbac/index.js +0 -6
- package/dist/security/rbac/middleware.d.ts +0 -51
- package/dist/security/rbac/middleware.js +0 -51
- package/dist/security/rbac/resolver.d.ts +0 -5
- package/dist/security/rbac/resolver.js +0 -38
- package/dist/security/rbac/server.d.ts +0 -24
- package/dist/security/rbac/server.js +0 -42
- package/dist/security/rbac/types.d.ts +0 -22
- package/dist/security/rbac/types.js +0 -2
- package/dist/seed/conversations-seed-data.d.ts +0 -2
- package/dist/seed/conversations-seed-data.js +0 -292
- package/dist/utils/filter.helper.d.ts +0 -18
- package/dist/utils/filter.helper.js +0 -21
- package/dist/utils/pagination.helper.d.ts +0 -23
- package/dist/utils/pagination.helper.js +0 -24
- package/dist/utils/search-tokens.d.ts +0 -2
- package/dist/utils/search-tokens.js +0 -21
|
@@ -118,7 +118,7 @@ export const authored = {
|
|
|
118
118
|
roles: ["buyer"],
|
|
119
119
|
startPage: "/cart",
|
|
120
120
|
steps: [
|
|
121
|
-
"Sign in as
|
|
121
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!, whose cart holds a won auction.",
|
|
122
122
|
"Add two ordinary products to the cart.",
|
|
123
123
|
"Open /cart and note the Won Auctions tab holds a line.",
|
|
124
124
|
"Use 'Remove all' from the Cart tab and confirm it.",
|
|
@@ -330,26 +330,25 @@ export const authored = {
|
|
|
330
330
|
},
|
|
331
331
|
"checklist-buying-cart-group-picker-opens": {
|
|
332
332
|
roles: ["guest"],
|
|
333
|
-
startPage: "/
|
|
333
|
+
startPage: "/groups/group-beyblade-original-lineage",
|
|
334
334
|
steps: [
|
|
335
|
-
"
|
|
336
|
-
"
|
|
337
|
-
"
|
|
338
|
-
"Click the 'Pick items' control.",
|
|
335
|
+
"Open /groups/group-beyblade-original-lineage in a private window with no session — the seeded grouped listing 'Original Series Lineage', whose members are product-beyblade-original-dranzer-s and product-beyblade-original-driger-v.",
|
|
336
|
+
"Read what the page names and what controls it offers.",
|
|
337
|
+
"Find the member picker.",
|
|
339
338
|
"Read what opens and whether every member is listed.",
|
|
340
339
|
"Check each member shows a thumbnail, a title, a unit price and a quantity control.",
|
|
341
340
|
],
|
|
342
|
-
expectedBehaviour: "A
|
|
343
|
-
expectedUiState: "The
|
|
341
|
+
expectedBehaviour: "A grouped listing offers a picker on its own page. A group is pick-as-you-wish — unlike a bundle, which is all-or-nothing — so the picker exists to let the buyer choose members and quantities before adding anything.",
|
|
342
|
+
expectedUiState: "The page names the group and its picker lists both members with thumbnail, title, unit price and a stepper. A member list with no way to pick quantities is the failure.",
|
|
344
343
|
endResult: "Close the picker without adding.",
|
|
345
344
|
},
|
|
346
345
|
"checklist-buying-cart-group-picker-running-total": {
|
|
347
346
|
roles: ["buyer"],
|
|
348
|
-
startPage: "/
|
|
347
|
+
startPage: "/groups/group-beyblade-original-lineage",
|
|
349
348
|
steps: [
|
|
350
|
-
"Sign in as
|
|
351
|
-
"Open /
|
|
352
|
-
"Read the running total shown.",
|
|
349
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
350
|
+
"Open /groups/group-beyblade-original-lineage and open the member picker.",
|
|
351
|
+
"Read the running total shown — Dranzer S is ₹1,499.00 and Driger V is ₹1,799.00.",
|
|
353
352
|
"Raise one member's quantity by one and read the total again.",
|
|
354
353
|
"Check it rose by exactly that member's unit price.",
|
|
355
354
|
"Lower another member to zero and read the total and the item count.",
|
|
@@ -361,41 +360,42 @@ export const authored = {
|
|
|
361
360
|
},
|
|
362
361
|
"checklist-buying-cart-group-picker-stock-cap": {
|
|
363
362
|
roles: ["buyer"],
|
|
364
|
-
startPage: "/
|
|
363
|
+
startPage: "/groups/group-beyblade-original-lineage",
|
|
365
364
|
steps: [
|
|
366
|
-
"Sign in as
|
|
367
|
-
"Open
|
|
368
|
-
"Read
|
|
365
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
366
|
+
"Open /groups/group-beyblade-original-lineage and open the member picker.",
|
|
367
|
+
"Read the available stock on product-beyblade-original-driger-v, seeded at 2.",
|
|
369
368
|
"Raise its quantity repeatedly until the control stops.",
|
|
370
369
|
"Compare the quantity reached against the stated stock.",
|
|
371
370
|
"Check the control is disabled at the cap rather than silently ignoring presses.",
|
|
372
371
|
],
|
|
373
372
|
expectedBehaviour: "Each member's stepper stops at that member's own stock. The cap is per member rather than per line, because a group line's members are independent products with independent inventory.",
|
|
374
|
-
expectedUiState: "The quantity stops at
|
|
373
|
+
expectedUiState: "The quantity stops at 2 for Driger V and at 4 for Dranzer S, and the increase control becomes visibly disabled at that point. A control that accepts presses and does nothing is the failure — the buyer cannot tell it from an unresponsive page.",
|
|
375
374
|
endResult: "Close the picker without adding.",
|
|
376
375
|
},
|
|
377
376
|
"checklist-buying-cart-group-picker-blocked-member": {
|
|
378
377
|
roles: ["buyer"],
|
|
379
|
-
startPage: "/
|
|
378
|
+
startPage: "/groups/group-beyblade-local-meetup-picks",
|
|
380
379
|
steps: [
|
|
381
|
-
"Sign in as
|
|
382
|
-
"Open
|
|
380
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
381
|
+
"Open /groups/group-beyblade-local-meetup-picks \u2014 'Local Meetup Picks', whose three members are all classified listings and therefore cannot be added to a cart at all.",
|
|
382
|
+
"Find classified-beyblade-stadium-set among the members.",
|
|
383
383
|
"Read what is shown in place of its quantity stepper.",
|
|
384
384
|
"Check a reason is stated rather than the row being blank or absent.",
|
|
385
385
|
"Try to include it in the selection.",
|
|
386
386
|
"Read whether the running total counts it.",
|
|
387
387
|
],
|
|
388
|
-
inputs: { blockedMember: "
|
|
389
|
-
expectedBehaviour: "A member that cannot be bought shows WHY in place of its stepper.
|
|
390
|
-
expectedUiState: "
|
|
388
|
+
inputs: { blockedMember: "classified-beyblade-stadium-set" },
|
|
389
|
+
expectedBehaviour: "A member that cannot be bought shows WHY in place of its stepper. A classified listing's cart capability is blocked outright \u2014 it is a contact-the-seller listing, not a purchasable one \u2014 so every member of this group is in that state. Hiding them entirely would misrepresent the group's contents, and showing an inert stepper would let the buyer build a selection that the server then refuses.",
|
|
390
|
+
expectedUiState: "Each blocked member is listed with a reason chip instead of a stepper, cannot be selected, and does not contribute to the running total. A blank cell where the stepper would be is the failure, and so is a working stepper on a classified listing.",
|
|
391
391
|
endResult: "Close the picker without adding.",
|
|
392
392
|
},
|
|
393
393
|
"checklist-buying-cart-group-picker-one-line": {
|
|
394
394
|
roles: ["buyer"],
|
|
395
|
-
startPage: "/
|
|
395
|
+
startPage: "/groups/group-beyblade-original-lineage",
|
|
396
396
|
steps: [
|
|
397
|
-
"Sign in as
|
|
398
|
-
"Open
|
|
397
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
398
|
+
"Open /groups/group-beyblade-original-lineage and select BOTH members — Dranzer S at quantity 1 and Driger V at quantity 2.",
|
|
399
399
|
"Note the running total.",
|
|
400
400
|
"Add the selection to the cart.",
|
|
401
401
|
"Open /cart and count the lines that appeared.",
|
|
@@ -408,10 +408,10 @@ export const authored = {
|
|
|
408
408
|
},
|
|
409
409
|
"checklist-buying-cart-group-picker-single-member-plain-line": {
|
|
410
410
|
roles: ["buyer"],
|
|
411
|
-
startPage: "/
|
|
411
|
+
startPage: "/groups/group-beyblade-original-lineage",
|
|
412
412
|
steps: [
|
|
413
|
-
"Sign in as
|
|
414
|
-
"Open
|
|
413
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! and empty the cart first.",
|
|
414
|
+
"Open /groups/group-beyblade-original-lineage and select exactly ONE member — product-beyblade-original-driger-v — at quantity 2.",
|
|
415
415
|
"Add the selection to the cart.",
|
|
416
416
|
"Open /cart and read the line.",
|
|
417
417
|
"Check it has an ordinary line-level quantity stepper.",
|
|
@@ -421,31 +421,58 @@ export const authored = {
|
|
|
421
421
|
expectedUiState: "The line looks like any other product line, with a working line-level stepper reading 2, and no member expansion.",
|
|
422
422
|
endResult: "Empty the cart afterwards.",
|
|
423
423
|
},
|
|
424
|
+
/*
|
|
425
|
+
* 🛑 THE CROSS-STORE GROUP HAS TO BE BUILT — there is no fixture to read.
|
|
426
|
+
*
|
|
427
|
+
* This case used to drive `product-tester-crossstore-a` / `-b`, two listings
|
|
428
|
+
* seeded in the banned shape on purpose so a buyer could open a group spanning
|
|
429
|
+
* two sellers and confirm the picker rendered read-only. They were
|
|
430
|
+
* tester-sandbox rows and went with the rest of them on 2026-09-14.
|
|
431
|
+
*
|
|
432
|
+
* The guard is NOT at save time for a grouped listing — that is the bundle
|
|
433
|
+
* rule. `POST /api/admin/grouped-listings` takes the group's own `storeId` and
|
|
434
|
+
* never checks that each member belongs to it, and the single-store refusal
|
|
435
|
+
* lives in the picker and in `addGroupLineToCart`. So the banned state is still
|
|
436
|
+
* reachable through a supported admin path, which is what keeps the BUYER-facing
|
|
437
|
+
* half of this guard testable at all: the case creates it, reads the refusal,
|
|
438
|
+
* and deletes it again.
|
|
439
|
+
*
|
|
440
|
+
* The one pairing the real catalogue allows is an Arena product plus a
|
|
441
|
+
* letitrip-official prize draw. Both could be refused for their own reasons, so
|
|
442
|
+
* the case turns on the refusal MESSAGE naming the seller conflict — a case
|
|
443
|
+
* that cannot tell its two failure modes apart would pass against the bug.
|
|
444
|
+
*/
|
|
424
445
|
"checklist-buying-cart-group-picker-cross-store": {
|
|
425
|
-
roles: ["buyer"],
|
|
426
|
-
startPage: "/
|
|
446
|
+
roles: ["admin", "buyer"],
|
|
447
|
+
startPage: "/admin/grouped-listings",
|
|
427
448
|
steps: [
|
|
428
|
-
"Sign in as
|
|
429
|
-
"Open /
|
|
430
|
-
"
|
|
449
|
+
"Sign in as admin@letitrip.in / TempPass123!.",
|
|
450
|
+
"Open /admin/grouped-listings and create a group titled 'QA Group cross-store' with exactly two members: product-beyblade-original-dranzer-s (store-beyblade-arena) and prizedraw-beyblade-mystery-box (store-letitrip-official).",
|
|
451
|
+
"Save it and note its slug.",
|
|
452
|
+
"Sign out and sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
453
|
+
"Open that group's public page at /groups/<the slug you noted>.",
|
|
431
454
|
"Read whether quantity controls are offered.",
|
|
432
455
|
"Read whether an add control is offered.",
|
|
433
456
|
"Read what the picker says about why.",
|
|
434
|
-
"Using DevTools,
|
|
435
|
-
],
|
|
436
|
-
inputs: {
|
|
437
|
-
|
|
438
|
-
|
|
457
|
+
"Using DevTools, POST the two member ids to /api/cart/group anyway and read the response.",
|
|
458
|
+
],
|
|
459
|
+
inputs: {
|
|
460
|
+
groupTitle: "QA Group cross-store",
|
|
461
|
+
memberStoreA: "product-beyblade-original-dranzer-s",
|
|
462
|
+
memberStoreB: "prizedraw-beyblade-mystery-box",
|
|
463
|
+
},
|
|
464
|
+
expectedBehaviour: "A cross-store group renders READ-ONLY, and the server refuses such a selection again. The store id is the order-splitting key and the key per-store shipping, coupons, add-ons and payouts hang off \u2014 a line spanning sellers would produce an order belonging to one seller containing another's products, with no notification, no shipping resolution and no payout for the second. The group has to be BUILT here: the guard means a valid cross-store group cannot exist in the seed, so there is no fixture to read.",
|
|
465
|
+
expectedUiState: "No quantity column and no add control, with a stated reason. The forced POST is refused server-side with an error naming the second store rather than accepted.",
|
|
439
466
|
expectedData: { addControlPresent: false },
|
|
440
|
-
endResult: "Nothing is added.
|
|
467
|
+
endResult: "Nothing is added. Delete 'QA Group cross-store' afterwards \u2014 it exists in a shape the product forbids and must not be left in the catalogue.",
|
|
441
468
|
},
|
|
442
469
|
"checklist-buying-cart-group-picker-guest": {
|
|
443
470
|
roles: ["guest"],
|
|
444
|
-
startPage: "/
|
|
471
|
+
startPage: "/groups/group-beyblade-original-lineage",
|
|
445
472
|
steps: [
|
|
446
|
-
"Open /
|
|
447
|
-
"Open the
|
|
448
|
-
"Select
|
|
473
|
+
"Open /groups/group-beyblade-original-lineage in a private window with no session.",
|
|
474
|
+
"Open the member picker.",
|
|
475
|
+
"Select both members and use the add control.",
|
|
449
476
|
"Read what happens.",
|
|
450
477
|
"Check a sign-in prompt appears rather than the selection being silently lost.",
|
|
451
478
|
"Sign in from that prompt and read whether the selection survived.",
|
|
@@ -458,7 +485,7 @@ export const authored = {
|
|
|
458
485
|
roles: ["buyer"],
|
|
459
486
|
startPage: "/cart",
|
|
460
487
|
steps: [
|
|
461
|
-
"Sign in as
|
|
488
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! with a grouped line in the cart.",
|
|
462
489
|
"Open /cart and find the grouped line.",
|
|
463
490
|
"Expand it.",
|
|
464
491
|
"Read every member listed — thumbnail, title, unit price and quantity.",
|
|
@@ -473,7 +500,7 @@ export const authored = {
|
|
|
473
500
|
roles: ["buyer"],
|
|
474
501
|
startPage: "/cart",
|
|
475
502
|
steps: [
|
|
476
|
-
"Sign in as
|
|
503
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! with a grouped line in the cart.",
|
|
477
504
|
"Open /cart and look at the grouped line's header row.",
|
|
478
505
|
"Check there is no line-level quantity stepper on it.",
|
|
479
506
|
"Expand the line and check each MEMBER has its own stepper.",
|
|
@@ -489,7 +516,7 @@ export const authored = {
|
|
|
489
516
|
roles: ["buyer"],
|
|
490
517
|
startPage: "/cart",
|
|
491
518
|
steps: [
|
|
492
|
-
"Sign in as
|
|
519
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! with a grouped line in the cart.",
|
|
493
520
|
"Open /cart, expand the grouped line, and note the line total, the seller subtotal and the summary total.",
|
|
494
521
|
"Raise one member's quantity by one.",
|
|
495
522
|
"Read all three figures again.",
|
|
@@ -504,7 +531,7 @@ export const authored = {
|
|
|
504
531
|
roles: ["buyer"],
|
|
505
532
|
startPage: "/cart",
|
|
506
533
|
steps: [
|
|
507
|
-
"Sign in as
|
|
534
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! with a grouped line holding two members.",
|
|
508
535
|
"Open /cart and expand the line.",
|
|
509
536
|
"Remove ONE member.",
|
|
510
537
|
"Read the remaining member and the line total.",
|
|
@@ -520,7 +547,7 @@ export const authored = {
|
|
|
520
547
|
roles: ["buyer"],
|
|
521
548
|
startPage: "/cart",
|
|
522
549
|
steps: [
|
|
523
|
-
"Sign in as
|
|
550
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
524
551
|
"Add a grouped selection and a bundle to the cart.",
|
|
525
552
|
"Open /cart and click the grouped line's title.",
|
|
526
553
|
"Read where it lands.",
|
|
@@ -535,27 +562,27 @@ export const authored = {
|
|
|
535
562
|
},
|
|
536
563
|
"checklist-buying-cart-bundle-copies-stepper": {
|
|
537
564
|
roles: ["buyer"],
|
|
538
|
-
startPage: "/bundles/bundle-
|
|
565
|
+
startPage: "/bundles/bundle-original-collectors-set",
|
|
539
566
|
steps: [
|
|
540
|
-
"Sign in as
|
|
541
|
-
"Open /bundles/bundle-
|
|
567
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
568
|
+
"Open /bundles/bundle-original-collectors-set and find the copies stepper.",
|
|
542
569
|
"Read the price shown at one copy.",
|
|
543
570
|
"Raise the copies to 2 and read the price.",
|
|
544
571
|
"Check both 'Buy now' and 'Add to cart' are present.",
|
|
545
572
|
"Use 'Add to cart' and read whether the browser stayed on the bundle page.",
|
|
546
573
|
"Open /cart and read the line.",
|
|
547
574
|
],
|
|
548
|
-
inputs: { bundleId: "bundle-
|
|
575
|
+
inputs: { bundleId: "bundle-original-collectors-set", copies: 2, bundlePrice: 2999, memberTotal: 4597 },
|
|
549
576
|
expectedBehaviour: "A bundle is all-or-nothing, so its stepper counts COPIES of the whole selection rather than members. Add to cart stays on the page — a buyer adding two copies may want a third — while Buy now proceeds to checkout.",
|
|
550
|
-
expectedUiState: "The price doubles to ₹
|
|
551
|
-
expectedData: { copies: 2, lineTotal:
|
|
577
|
+
expectedUiState: "The price doubles to ₹5,998.00 at two copies. Both controls are present. Add to cart keeps the buyer on the bundle page and the cart gains one line at two copies.",
|
|
578
|
+
expectedData: { copies: 2, lineTotal: 5998 },
|
|
552
579
|
endResult: "The cart holds a bundle line at two copies.",
|
|
553
580
|
},
|
|
554
581
|
"checklist-buying-cart-bundle-line-in-cart": {
|
|
555
582
|
roles: ["buyer"],
|
|
556
583
|
startPage: "/cart",
|
|
557
584
|
steps: [
|
|
558
|
-
"Sign in as
|
|
585
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! with a bundle line in the cart.",
|
|
559
586
|
"Open /cart and expand the bundle line.",
|
|
560
587
|
"Read its members and check they are READ-ONLY — no per-member steppers.",
|
|
561
588
|
"Read the line-level copies stepper.",
|
|
@@ -563,10 +590,10 @@ export const authored = {
|
|
|
563
590
|
"Check it rose by the bundle price rather than by the members' summed price.",
|
|
564
591
|
"RELOAD and confirm.",
|
|
565
592
|
],
|
|
566
|
-
inputs: { bundlePrice:
|
|
593
|
+
inputs: { bundleId: "bundle-original-collectors-set", bundlePrice: 2999, memberTotal: 4597 },
|
|
567
594
|
expectedBehaviour: "A bundle's members are fixed and its copies vary — the exact inverse of a group line. The price rule's bundle branch must be evaluated BEFORE its members branch: a bundle line carries members too, and summing them would charge the undiscounted total and throw away the discount that is the entire point of a bundle.",
|
|
568
|
-
expectedUiState: "
|
|
569
|
-
expectedData: { pricePerCopy:
|
|
595
|
+
expectedUiState: "The three members — Dranzer S, Driger V and Storm Pegasus — are listed without steppers, the copies stepper is on the line, and raising it adds ₹2,999.00 per copy rather than ₹4,597.00. A total rising by the members' sum is the branch-order failure.",
|
|
596
|
+
expectedData: { pricePerCopy: 2999 },
|
|
570
597
|
endResult: "Empty the cart afterwards.",
|
|
571
598
|
},
|
|
572
599
|
"checklist-buying-cart-bundle-cross-store-rejected": {
|
|
@@ -587,25 +614,24 @@ export const authored = {
|
|
|
587
614
|
},
|
|
588
615
|
"checklist-buying-cart-grouped-listing-page-picker": {
|
|
589
616
|
roles: ["buyer"],
|
|
590
|
-
startPage: "/products/product-
|
|
617
|
+
startPage: "/products/product-beyblade-original-dranzer-s",
|
|
591
618
|
steps: [
|
|
592
|
-
"Sign in as
|
|
593
|
-
"Open /products/product-
|
|
594
|
-
"Follow the link
|
|
619
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
620
|
+
"Open /products/product-beyblade-original-dranzer-s and scroll to the themed grouped-listings carousel.",
|
|
621
|
+
"Follow the link for 'Original Series Lineage' to /groups/group-beyblade-original-lineage.",
|
|
595
622
|
"Read the page — its title, description and member list.",
|
|
596
623
|
"Find the picker on that page and open it.",
|
|
597
|
-
"
|
|
598
|
-
"Select members and add them, then check the cart line matches.",
|
|
624
|
+
"Select both members and add them, then check the cart line matches the running total.",
|
|
599
625
|
],
|
|
600
|
-
expectedBehaviour: "A grouped listing has its own public page carrying the
|
|
601
|
-
expectedUiState: "The group page renders with
|
|
626
|
+
expectedBehaviour: "A grouped listing has its own public page carrying the picker, so the group is reachable and shareable in its own right rather than only as a carousel on a member's page.",
|
|
627
|
+
expectedUiState: "The group page renders with both members and a working picker. Adding from it produces ONE grouped cart line priced at the running total, not one line per member.",
|
|
602
628
|
endResult: "Empty the cart afterwards.",
|
|
603
629
|
},
|
|
604
630
|
"checklist-buying-cart-group-lane-gate": {
|
|
605
631
|
roles: ["buyer"],
|
|
606
632
|
startPage: "/cart",
|
|
607
633
|
steps: [
|
|
608
|
-
"Sign in as
|
|
634
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!, whose cart holds an unpaid won auction.",
|
|
609
635
|
"Open /cart and confirm the Won Auctions tab holds a line.",
|
|
610
636
|
"Open a group's picker, select two members, and try to add them.",
|
|
611
637
|
"Read what happens and any message shown.",
|
|
@@ -654,7 +680,7 @@ export const authored = {
|
|
|
654
680
|
roles: ["buyer"],
|
|
655
681
|
startPage: "/cart",
|
|
656
682
|
steps: [
|
|
657
|
-
"Sign in as
|
|
683
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!, whose cart holds an unpaid won auction, an accepted offer and ordinary items.",
|
|
658
684
|
"Open /cart and read the three tabs.",
|
|
659
685
|
"Open the Cart tab and read its checkout button's state.",
|
|
660
686
|
"Open the Accepted Offers tab and read its checkout button's state.",
|
|
@@ -684,7 +710,7 @@ export const authored = {
|
|
|
684
710
|
roles: ["buyer"],
|
|
685
711
|
startPage: "/cart",
|
|
686
712
|
steps: [
|
|
687
|
-
"Sign in as
|
|
713
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! with a won auction in the cart.",
|
|
688
714
|
"Open /cart and switch to the Won Auctions tab.",
|
|
689
715
|
"Find the countdown beside the payment-required note.",
|
|
690
716
|
"Read the time remaining.",
|
|
@@ -699,7 +725,7 @@ export const authored = {
|
|
|
699
725
|
roles: ["buyer"],
|
|
700
726
|
startPage: "/cart",
|
|
701
727
|
steps: [
|
|
702
|
-
"Sign in as
|
|
728
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! with a won auction whose deadline has passed.",
|
|
703
729
|
"Open /cart and read the Won Auctions tab.",
|
|
704
730
|
"Check the line is gone.",
|
|
705
731
|
"Open /user/bids and read that bid's status.",
|
|
@@ -714,7 +740,7 @@ export const authored = {
|
|
|
714
740
|
roles: ["buyer"],
|
|
715
741
|
startPage: "/cart",
|
|
716
742
|
steps: [
|
|
717
|
-
"Sign in as
|
|
743
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! with items in all three lanes.",
|
|
718
744
|
"Open /cart on the Cart tab and read the summary total.",
|
|
719
745
|
"Add up the ordinary items yourself and compare.",
|
|
720
746
|
"Switch to the Accepted Offers tab and read its total.",
|
|
@@ -730,7 +756,7 @@ export const authored = {
|
|
|
730
756
|
roles: ["buyer"],
|
|
731
757
|
startPage: "/cart",
|
|
732
758
|
steps: [
|
|
733
|
-
"Sign in as
|
|
759
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! with items in more than one lane.",
|
|
734
760
|
"Open /cart on the Won Auctions tab and note its items and total.",
|
|
735
761
|
"Click its checkout control.",
|
|
736
762
|
"Read the checkout page's items and total.",
|
|
@@ -746,7 +772,7 @@ export const authored = {
|
|
|
746
772
|
roles: ["buyer"],
|
|
747
773
|
startPage: "/cart",
|
|
748
774
|
steps: [
|
|
749
|
-
"Sign in as
|
|
775
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! with items in more than one lane.",
|
|
750
776
|
"Open /cart at 1280 pixels and note each tab's desktop summary total.",
|
|
751
777
|
"Resize to 390 pixels and open /cart.",
|
|
752
778
|
"On each tab, read the bottom bar's total and the lane it names.",
|
|
@@ -762,7 +788,7 @@ export const authored = {
|
|
|
762
788
|
roles: ["buyer"],
|
|
763
789
|
startPage: "/cart",
|
|
764
790
|
steps: [
|
|
765
|
-
"Sign in as
|
|
791
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! with an unpaid won auction and ordinary items.",
|
|
766
792
|
"Resize to 390 pixels and open /cart.",
|
|
767
793
|
"Switch to the Cart tab, which is not currently payable.",
|
|
768
794
|
"Read the bottom bar's checkout button state.",
|
|
@@ -778,7 +804,7 @@ export const authored = {
|
|
|
778
804
|
roles: ["buyer"],
|
|
779
805
|
startPage: "/cart",
|
|
780
806
|
steps: [
|
|
781
|
-
"Sign in as
|
|
807
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! with a payable non-standard lane.",
|
|
782
808
|
"Resize to 390 pixels and open /cart.",
|
|
783
809
|
"Switch to the Won Auctions or Accepted Offers tab.",
|
|
784
810
|
"Tap the bottom bar's Checkout button.",
|
|
@@ -794,7 +820,7 @@ export const authored = {
|
|
|
794
820
|
roles: ["buyer"],
|
|
795
821
|
startPage: "/cart",
|
|
796
822
|
steps: [
|
|
797
|
-
"Sign in as
|
|
823
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! with items in more than one lane.",
|
|
798
824
|
"Open /cart on the Cart tab and read the 'Select all' control's count.",
|
|
799
825
|
"Compare it against the number of items on that tab only.",
|
|
800
826
|
"Switch to another tab and read the count there.",
|
|
@@ -872,7 +898,7 @@ export const authored = {
|
|
|
872
898
|
roles: ["buyer"],
|
|
873
899
|
startPage: "/cart",
|
|
874
900
|
steps: [
|
|
875
|
-
"Sign in as
|
|
901
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123! with items in the auction and offer lanes.",
|
|
876
902
|
"Open /cart on the Cart tab and expand the breakdown, noting whether a coupon line can appear.",
|
|
877
903
|
"Switch to the Won Auctions tab and expand the breakdown.",
|
|
878
904
|
"Read whether any coupon-discount line is present.",
|
|
@@ -1062,7 +1088,7 @@ export const authored = {
|
|
|
1062
1088
|
roles: ["buyer"],
|
|
1063
1089
|
startPage: "/user/orders",
|
|
1064
1090
|
steps: [
|
|
1065
|
-
"Sign in as
|
|
1091
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
1066
1092
|
"Open /user/orders and open a STANDARD order that had a coupon applied.",
|
|
1067
1093
|
"Read the discount lines shown.",
|
|
1068
1094
|
"Open an order that came from a won auction and read its discount area.",
|
|
@@ -28,18 +28,17 @@
|
|
|
28
28
|
export const authored = {
|
|
29
29
|
"checklist-buying-image-tile-layout-bundle-member-thumbnails": {
|
|
30
30
|
roles: ["guest"],
|
|
31
|
-
startPage: "/bundles/bundle-
|
|
31
|
+
startPage: "/bundles/bundle-original-collectors-set",
|
|
32
32
|
steps: [
|
|
33
|
-
"
|
|
34
|
-
"Open /bundles/bundle-tester-sandbox.",
|
|
33
|
+
"Open /bundles/bundle-original-collectors-set in a private window with no session.",
|
|
35
34
|
"Look at the member collage and count the tiles.",
|
|
36
35
|
"Check each tile shows its member's photograph rather than an empty bordered box.",
|
|
37
36
|
"Compare the tiles' widths against one another.",
|
|
38
37
|
"Hard-reload with Ctrl+Shift+R and look again.",
|
|
39
38
|
],
|
|
40
|
-
inputs: { bundleId: "bundle-
|
|
39
|
+
inputs: { bundleId: "bundle-original-collectors-set", memberCount: 3 },
|
|
41
40
|
expectedBehaviour: "Each member tile renders its image at its intended size. This collage is one of the twelve surfaces that collapsed at once when a wrapper element appeared between a button and its fill-style image — and it is the surface that stayed broken longest, because a bare display utility on the button voided the primitive's own fix from the call site.",
|
|
42
|
-
expectedUiState: "
|
|
41
|
+
expectedUiState: "Three tiles — Dranzer S, Driger V and Storm Pegasus — each showing its member's photo, all the same width. An empty bordered box where a photo should be is the collapse; a tile at a fraction of its neighbour's width is the row-direction failure.",
|
|
43
42
|
expectedData: { blankTiles: 0 },
|
|
44
43
|
endResult: "Read-only; nothing persists.",
|
|
45
44
|
},
|
|
@@ -61,10 +60,9 @@ export const authored = {
|
|
|
61
60
|
},
|
|
62
61
|
"checklist-buying-image-tile-layout-bundle-tile-opens-lightbox": {
|
|
63
62
|
roles: ["guest"],
|
|
64
|
-
startPage: "/bundles/bundle-
|
|
63
|
+
startPage: "/bundles/bundle-original-collectors-set",
|
|
65
64
|
steps: [
|
|
66
|
-
"
|
|
67
|
-
"Open /bundles/bundle-tester-sandbox and click a member tile in the collage.",
|
|
65
|
+
"Open /bundles/bundle-original-collectors-set in a private window with no session and click a member tile in the collage.",
|
|
68
66
|
"Read what opens.",
|
|
69
67
|
"If a lightbox opens, use its next and previous controls and read what changes.",
|
|
70
68
|
"Close it and check the page is unchanged behind it.",
|
|
@@ -30,7 +30,7 @@ export const authored = {
|
|
|
30
30
|
roles: ["buyer"],
|
|
31
31
|
startPage: "/user/orders",
|
|
32
32
|
steps: [
|
|
33
|
-
"Sign in as
|
|
33
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
34
34
|
"Open /user/orders and read every row's primary label.",
|
|
35
35
|
"Check each names the ITEM rather than only an order identifier.",
|
|
36
36
|
"Find a multi-item order and read how its row summarises the contents.",
|
|
@@ -45,7 +45,7 @@ export const authored = {
|
|
|
45
45
|
roles: ["buyer"],
|
|
46
46
|
startPage: "/user/orders",
|
|
47
47
|
steps: [
|
|
48
|
-
"Sign in as
|
|
48
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
49
49
|
"Open /user/orders and click a row's body away from any control.",
|
|
50
50
|
"Read what opens.",
|
|
51
51
|
"Go back and use the explicit view-details control on the same row.",
|
|
@@ -60,7 +60,7 @@ export const authored = {
|
|
|
60
60
|
roles: ["buyer"],
|
|
61
61
|
startPage: "/user/orders",
|
|
62
62
|
steps: [
|
|
63
|
-
"Sign in as
|
|
63
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
64
64
|
"Open /user/orders and read every tab offered.",
|
|
65
65
|
"Note the unfiltered order count on the All tab.",
|
|
66
66
|
"Open the Auction wins tab and read the count and the rows.",
|
|
@@ -77,7 +77,7 @@ export const authored = {
|
|
|
77
77
|
roles: ["buyer"],
|
|
78
78
|
startPage: "/user/orders",
|
|
79
79
|
steps: [
|
|
80
|
-
"Sign in as
|
|
80
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
81
81
|
"Open /user/orders on the All tab and note the total count.",
|
|
82
82
|
"Note the count on the Auction wins and Offer wins tabs.",
|
|
83
83
|
"Subtract those two from the total to get the expected Normal count.",
|
|
@@ -94,7 +94,7 @@ export const authored = {
|
|
|
94
94
|
roles: ["buyer"],
|
|
95
95
|
startPage: "/user",
|
|
96
96
|
steps: [
|
|
97
|
-
"Sign in as
|
|
97
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
98
98
|
"Open /user and find the recent-orders area on the dashboard.",
|
|
99
99
|
"Read each entry and check it names the item rather than only an identifier.",
|
|
100
100
|
"Click one entry and read where it lands.",
|
|
@@ -109,7 +109,7 @@ export const authored = {
|
|
|
109
109
|
roles: ["buyer"],
|
|
110
110
|
startPage: "/user/orders",
|
|
111
111
|
steps: [
|
|
112
|
-
"Sign in as
|
|
112
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
113
113
|
"Open /user/orders and look at every row's thumbnail.",
|
|
114
114
|
"Check each shows a photograph rather than an empty box or a placeholder icon.",
|
|
115
115
|
"Hard-reload with Ctrl+Shift+R and look again.",
|
|
@@ -125,7 +125,7 @@ export const authored = {
|
|
|
125
125
|
roles: ["buyer"],
|
|
126
126
|
startPage: "/user/orders",
|
|
127
127
|
steps: [
|
|
128
|
-
"Sign in as
|
|
128
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
129
129
|
"Open /user/orders and note the unfiltered count.",
|
|
130
130
|
"Read the scope tabs offered and select each, reading the counts.",
|
|
131
131
|
"Read every status filter and select each, noting any that returns nothing.",
|
|
@@ -143,7 +143,7 @@ export const authored = {
|
|
|
143
143
|
roles: ["buyer"],
|
|
144
144
|
startPage: "/user/orders",
|
|
145
145
|
steps: [
|
|
146
|
-
"Sign in as
|
|
146
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
147
147
|
"Open /user/orders and open a SHIPPED order.",
|
|
148
148
|
"Open its tracking view.",
|
|
149
149
|
"Read every step in the timeline and the date against each.",
|
|
@@ -159,7 +159,7 @@ export const authored = {
|
|
|
159
159
|
roles: ["buyer"],
|
|
160
160
|
startPage: "/user/orders",
|
|
161
161
|
steps: [
|
|
162
|
-
"Sign in as
|
|
162
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
163
163
|
"Open /user/orders and open an order paid by cash or UPI awaiting payment.",
|
|
164
164
|
"Read the order detail for a manual-payment panel.",
|
|
165
165
|
"Check it names the payment method, the amount and the deadline.",
|
|
@@ -174,7 +174,7 @@ export const authored = {
|
|
|
174
174
|
roles: ["buyer"],
|
|
175
175
|
startPage: "/user/orders",
|
|
176
176
|
steps: [
|
|
177
|
-
"Sign in as
|
|
177
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
178
178
|
"Open a manual-payment order and follow the control to its payment page.",
|
|
179
179
|
"Read whether the page renders the upload form or tells you no manual payment is required.",
|
|
180
180
|
"Read the UPI identifier displayed and the amount.",
|
|
@@ -191,7 +191,7 @@ export const authored = {
|
|
|
191
191
|
roles: ["buyer"],
|
|
192
192
|
startPage: "/user/orders",
|
|
193
193
|
steps: [
|
|
194
|
-
"Sign in as
|
|
194
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
195
195
|
"Open a manual-payment order's payment page and upload public/test-media/sample-image.png as proof.",
|
|
196
196
|
"Type QATXN552310 as the payment reference and submit.",
|
|
197
197
|
"Read what the page shows immediately afterwards.",
|
|
@@ -209,7 +209,7 @@ export const authored = {
|
|
|
209
209
|
startPage: "/user/orders",
|
|
210
210
|
steps: [
|
|
211
211
|
"Sign in as admin@letitrip.in / TempPass123! and request a proof re-upload on that order, with the note 'QA Note reupload — the reference is unreadable.'.",
|
|
212
|
-
"Sign out and sign in as
|
|
212
|
+
"Sign out and sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
213
213
|
"Open /user/orders and read that order's row and its detail.",
|
|
214
214
|
"Read whether the admin's note is shown to the buyer.",
|
|
215
215
|
"Open the payment page and read whether the upload form is active again and what the deadline shows.",
|
|
@@ -226,7 +226,7 @@ export const authored = {
|
|
|
226
226
|
roles: ["buyer"],
|
|
227
227
|
startPage: "/user/orders",
|
|
228
228
|
steps: [
|
|
229
|
-
"Sign in as
|
|
229
|
+
"Sign in as rehan.sheikh@gmail.com / TempPass123!.",
|
|
230
230
|
"Open /user/orders and find an order whose payment was rejected.",
|
|
231
231
|
"Read its row and its detail.",
|
|
232
232
|
"Check the rejection is stated plainly rather than the order simply reading as cancelled.",
|