@mohasinac/appkit 4.58.0 → 4.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.build-stamp.json +3 -3
- package/dist/_internal/server/jobs/handlers/messages.d.ts +1 -1
- package/dist/_internal/server/jobs/handlers/messages.js +1 -1
- package/dist/_internal/shared/types/base-document.d.ts +1 -1
- package/dist/constants/seed-meta.d.ts +113 -0
- package/dist/constants/seed-meta.js +91 -0
- package/dist/index.d.ts +0 -131
- package/dist/index.js +50 -294
- package/dist/server.d.ts +0 -69
- package/dist/server.js +0 -69
- package/package.json +4 -2
- package/scripts/seed-cli.mjs +69 -1
- package/dist/features/tester/seed-data/_happy-path.d.ts +0 -23
- package/dist/features/tester/seed-data/_happy-path.js +0 -710
- package/dist/features/tester/seed-data/_money-flows.d.ts +0 -23
- package/dist/features/tester/seed-data/_money-flows.js +0 -610
- package/dist/features/tester/seed-data/authored/_types.d.ts +0 -57
- package/dist/features/tester/seed-data/authored/_types.js +0 -35
- package/dist/features/tester/seed-data/authored/account-auth__profile-settings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/account-auth__profile-settings.js +0 -226
- package/dist/features/tester/seed-data/authored/account-auth__signup-login.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +0 -329
- package/dist/features/tester/seed-data/authored/addresses__address-filters.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__address-filters.js +0 -41
- package/dist/features/tester/seed-data/authored/addresses__postal-lookup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__postal-lookup.js +0 -76
- package/dist/features/tester/seed-data/authored/addresses__postal-validation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__postal-validation.js +0 -78
- package/dist/features/tester/seed-data/authored/addresses__state-picker.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__state-picker.js +0 -59
- package/dist/features/tester/seed-data/authored/addresses__unban-request.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/addresses__unban-request.js +0 -77
- package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +0 -151
- package/dist/features/tester/seed-data/authored/admin__bans-and-trust.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bans-and-trust.js +0 -265
- package/dist/features/tester/seed-data/authored/admin__blog-faqs.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__blog-faqs.js +0 -131
- package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.js +0 -143
- package/dist/features/tester/seed-data/authored/admin__bulk-actions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bulk-actions.js +0 -207
- package/dist/features/tester/seed-data/authored/admin__bundles.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__bundles.js +0 -144
- package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.js +0 -265
- package/dist/features/tester/seed-data/authored/admin__catalog-listings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__catalog-listings.js +0 -318
- package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.js +0 -177
- package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.js +0 -165
- package/dist/features/tester/seed-data/authored/admin__content-deletes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__content-deletes.js +0 -267
- package/dist/features/tester/seed-data/authored/admin__content-marketing.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__content-marketing.js +0 -188
- package/dist/features/tester/seed-data/authored/admin__coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__coupons.js +0 -215
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +0 -202
- package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.js +0 -249
- package/dist/features/tester/seed-data/authored/admin__media-watermark.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__media-watermark.js +0 -148
- package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.js +0 -350
- package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.js +0 -129
- package/dist/features/tester/seed-data/authored/admin__site-system.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__site-system.js +0 -586
- package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.js +0 -260
- package/dist/features/tester/seed-data/authored/admin__users-trust.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/admin__users-trust.js +0 -569
- package/dist/features/tester/seed-data/authored/buying__bidding.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__bidding.js +0 -449
- package/dist/features/tester/seed-data/authored/buying__browsing-search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__browsing-search.js +0 -684
- package/dist/features/tester/seed-data/authored/buying__buying-checkout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +0 -546
- package/dist/features/tester/seed-data/authored/buying__buying-coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +0 -379
- package/dist/features/tester/seed-data/authored/buying__cart.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__cart.js +0 -1264
- package/dist/features/tester/seed-data/authored/buying__image-tile-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +0 -122
- package/dist/features/tester/seed-data/authored/buying__my-orders.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__my-orders.js +0 -279
- package/dist/features/tester/seed-data/authored/buying__offers.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__offers.js +0 -1127
- package/dist/features/tester/seed-data/authored/buying__order-detail-actions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__order-detail-actions.js +0 -153
- package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.js +0 -252
- package/dist/features/tester/seed-data/authored/buying__product-detail.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__product-detail.js +0 -474
- package/dist/features/tester/seed-data/authored/buying__return-request.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__return-request.js +0 -165
- package/dist/features/tester/seed-data/authored/buying__reviews-pagination.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +0 -260
- package/dist/features/tester/seed-data/authored/buying__reviews.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__reviews.js +0 -128
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +0 -96
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +0 -283
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.js +0 -169
- package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.js +0 -105
- package/dist/features/tester/seed-data/authored/buying__wishlist-history.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/buying__wishlist-history.js +0 -374
- package/dist/features/tester/seed-data/authored/community-support__messages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__messages.js +0 -200
- package/dist/features/tester/seed-data/authored/community-support__public-profile.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__public-profile.js +0 -54
- package/dist/features/tester/seed-data/authored/community-support__support-tickets.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/community-support__support-tickets.js +0 -76
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +0 -4
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +0 -590
- package/dist/features/tester/seed-data/authored/content-discovery__blog.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__blog.js +0 -110
- package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.js +0 -149
- package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +0 -145
- package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +0 -174
- package/dist/features/tester/seed-data/authored/content-discovery__coupons.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +0 -169
- package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.js +0 -209
- package/dist/features/tester/seed-data/authored/content-discovery__event-participation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__event-participation.js +0 -207
- package/dist/features/tester/seed-data/authored/content-discovery__events.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__events.js +0 -377
- package/dist/features/tester/seed-data/authored/content-discovery__faq-help.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__faq-help.js +0 -87
- package/dist/features/tester/seed-data/authored/content-discovery__notifications.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +0 -147
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +0 -209
- package/dist/features/tester/seed-data/authored/content-discovery__parts-database.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +0 -167
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +0 -73
- package/dist/features/tester/seed-data/authored/content-discovery__search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__search.js +0 -363
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +0 -340
- package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.js +0 -88
- package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +0 -78
- package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.js +0 -76
- package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.js +0 -62
- package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.js +0 -163
- package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.js +0 -61
- package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.js +0 -89
- package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +0 -95
- package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.js +0 -191
- package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.js +0 -158
- package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.js +0 -82
- package/dist/features/tester/seed-data/authored/design-ux__footer-theme.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__footer-theme.js +0 -106
- package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.js +0 -88
- package/dist/features/tester/seed-data/authored/design-ux__general-design.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__general-design.js +0 -204
- package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.js +0 -301
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +0 -90
- package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +0 -85
- package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.js +0 -407
- package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.js +0 -88
- package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.js +0 -84
- package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +0 -214
- package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +0 -275
- package/dist/features/tester/seed-data/authored/index.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/index.js +0 -301
- package/dist/features/tester/seed-data/authored/page-wiring__data-loss.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +0 -125
- package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.js +0 -85
- package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.js +0 -92
- package/dist/features/tester/seed-data/authored/page-wiring__reachability.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -115
- package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +0 -137
- package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +0 -263
- package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.js +0 -229
- package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.js +0 -325
- package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.js +0 -126
- package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.js +0 -141
- package/dist/features/tester/seed-data/authored/public-pages__store-tabs.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__store-tabs.js +0 -115
- package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +0 -253
- package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.js +0 -93
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +0 -3
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +0 -185
- package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.js +0 -82
- package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.js +0 -60
- package/dist/features/tester/seed-data/authored/selling__become-seller.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__become-seller.js +0 -117
- package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.js +0 -148
- package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.js +0 -108
- package/dist/features/tester/seed-data/authored/selling__listing-a-product.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +0 -274
- package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.js +0 -145
- package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +0 -336
- package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.js +0 -136
- package/dist/features/tester/seed-data/authored/selling__media-limits.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__media-limits.js +0 -135
- package/dist/features/tester/seed-data/authored/selling__product-upload-details.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +0 -155
- package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.js +0 -138
- package/dist/features/tester/seed-data/authored/selling__sectionised-forms.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__sectionised-forms.js +0 -191
- package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.js +0 -138
- package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.js +0 -106
- package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.js +0 -192
- package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.js +0 -109
- package/dist/features/tester/seed-data/authored/selling__seller-guide.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-guide.js +0 -34
- package/dist/features/tester/seed-data/authored/selling__seller-listing-types.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +0 -348
- package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +0 -87
- package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.js +0 -90
- package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.js +0 -85
- package/dist/features/tester/seed-data/authored/selling__seller-orders.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-orders.js +0 -213
- package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.js +0 -192
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +0 -77
- package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.js +0 -165
- package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.js +0 -116
- package/dist/features/tester/seed-data/authored/seo__canonical-and-host.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__canonical-and-host.js +0 -127
- package/dist/features/tester/seed-data/authored/seo__og-images.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__og-images.js +0 -107
- package/dist/features/tester/seed-data/authored/seo__page-metadata.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__page-metadata.js +0 -120
- package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +0 -105
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +0 -58
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +0 -284
- package/dist/features/tester/seed-data/index.d.ts +0 -2
- package/dist/features/tester/seed-data/index.js +0 -2
- package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +0 -7601
- package/dist/features/tester/seed-data/tester-responses-seed-data.d.ts +0 -2
- package/dist/features/tester/seed-data/tester-responses-seed-data.js +0 -95
- package/dist/features/tester/seed-data/tester-window.d.ts +0 -25
- package/dist/features/tester/seed-data/tester-window.js +0 -66
- package/dist/seed/_helpers/brand-rows.d.ts +0 -35
- package/dist/seed/_helpers/brand-rows.js +0 -600
- package/dist/seed/_helpers/category-content-generated.d.ts +0 -24
- package/dist/seed/_helpers/category-content-generated.js +0 -1853
- package/dist/seed/_helpers/category-content.d.ts +0 -68
- package/dist/seed/_helpers/category-content.js +0 -731
- package/dist/seed/_helpers/category-forest.d.ts +0 -4
- package/dist/seed/_helpers/category-forest.js +0 -824
- package/dist/seed/_helpers/category-images-generated.d.ts +0 -57
- package/dist/seed/_helpers/category-images-generated.js +0 -618
- package/dist/seed/_helpers/category-models/chunk0.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk0.js +0 -2648
- package/dist/seed/_helpers/category-models/chunk1.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk1.js +0 -2318
- package/dist/seed/_helpers/category-models/chunk2.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk2.js +0 -2560
- package/dist/seed/_helpers/category-models/chunk3.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk3.js +0 -2196
- package/dist/seed/_helpers/category-models/chunk4.d.ts +0 -2
- package/dist/seed/_helpers/category-models/chunk4.js +0 -1732
- package/dist/seed/_helpers/category-models.d.ts +0 -12
- package/dist/seed/_helpers/category-models.js +0 -45
- package/dist/seed/_helpers/category-names.d.ts +0 -54
- package/dist/seed/_helpers/category-names.js +0 -118
- package/dist/seed/_helpers/category-parts-glossary-map.d.ts +0 -1
- package/dist/seed/_helpers/category-parts-glossary-map.js +0 -2499
- package/dist/seed/_helpers/category-parts.d.ts +0 -9
- package/dist/seed/_helpers/category-parts.js +0 -15022
- package/dist/seed/_helpers/category-tree.d.ts +0 -27
- package/dist/seed/_helpers/category-tree.js +0 -119
- package/dist/seed/_helpers/character-features.d.ts +0 -10
- package/dist/seed/_helpers/character-features.js +0 -120
- package/dist/seed/_helpers/final-sale-fixtures.d.ts +0 -35
- package/dist/seed/_helpers/final-sale-fixtures.js +0 -61
- package/dist/seed/_helpers/franchise-rows.d.ts +0 -43
- package/dist/seed/_helpers/franchise-rows.js +0 -189
- package/dist/seed/_helpers/media.d.ts +0 -67
- package/dist/seed/_helpers/media.js +0 -172
- package/dist/seed/_helpers/part-colours-generated.d.ts +0 -18
- package/dist/seed/_helpers/part-colours-generated.js +0 -273
- package/dist/seed/_helpers/product-search-txt.d.ts +0 -18
- package/dist/seed/_helpers/product-search-txt.js +0 -23
- package/dist/seed/_helpers/search-txt-wrappers.d.ts +0 -26
- package/dist/seed/_helpers/search-txt-wrappers.js +0 -58
- package/dist/seed/addresses-seed-data.d.ts +0 -2
- package/dist/seed/addresses-seed-data.js +0 -78
- package/dist/seed/authenticity-knowledge-seed-data.d.ts +0 -78
- package/dist/seed/authenticity-knowledge-seed-data.js +0 -10729
- package/dist/seed/bey-products-seed-data.d.ts +0 -18
- package/dist/seed/bey-products-seed-data.js +0 -18011
- package/dist/seed/beys/chunk0.d.ts +0 -17
- package/dist/seed/beys/chunk0.js +0 -36733
- package/dist/seed/beys/chunk1.d.ts +0 -17
- package/dist/seed/beys/chunk1.js +0 -35728
- package/dist/seed/beys/chunk2.d.ts +0 -17
- package/dist/seed/beys/chunk2.js +0 -35857
- package/dist/seed/beys/chunk3.d.ts +0 -17
- package/dist/seed/beys/chunk3.js +0 -34476
- package/dist/seed/beys-seed-data.d.ts +0 -18
- package/dist/seed/beys-seed-data.js +0 -11
- package/dist/seed/bids-seed-data.d.ts +0 -2
- package/dist/seed/bids-seed-data.js +0 -206
- package/dist/seed/blog-posts-seed-data.d.ts +0 -6
- package/dist/seed/blog-posts-seed-data.js +0 -442
- package/dist/seed/carousel-slides-seed-data.d.ts +0 -2
- package/dist/seed/carousel-slides-seed-data.js +0 -411
- package/dist/seed/carousels-seed-data.d.ts +0 -2
- package/dist/seed/carousels-seed-data.js +0 -36
- package/dist/seed/cart-seed-data.d.ts +0 -2
- package/dist/seed/cart-seed-data.js +0 -241
- package/dist/seed/catalogue-seed-data.d.ts +0 -2
- package/dist/seed/catalogue-seed-data.js +0 -112
- package/dist/seed/categories-seed-data.d.ts +0 -3
- package/dist/seed/categories-seed-data.js +0 -816
- package/dist/seed/claimed-coupons-seed-data.d.ts +0 -2
- package/dist/seed/claimed-coupons-seed-data.js +0 -85
- package/dist/seed/coupon-usage-seed-data.d.ts +0 -9
- package/dist/seed/coupon-usage-seed-data.js +0 -55
- package/dist/seed/coupons-seed-data.d.ts +0 -2
- package/dist/seed/coupons-seed-data.js +0 -226
- package/dist/seed/defaults/categories.d.ts +0 -2
- package/dist/seed/defaults/categories.js +0 -12
- package/dist/seed/defaults/faqs.d.ts +0 -2
- package/dist/seed/defaults/faqs.js +0 -40
- package/dist/seed/events-seed-data.d.ts +0 -7
- package/dist/seed/events-seed-data.js +0 -482
- package/dist/seed/factories/address.factory.d.ts +0 -21
- package/dist/seed/factories/address.factory.js +0 -44
- package/dist/seed/factories/bid.factory.d.ts +0 -15
- package/dist/seed/factories/bid.factory.js +0 -33
- package/dist/seed/factories/blog-post.factory.d.ts +0 -15
- package/dist/seed/factories/blog-post.factory.js +0 -22
- package/dist/seed/factories/carousel.factory.d.ts +0 -11
- package/dist/seed/factories/carousel.factory.js +0 -17
- package/dist/seed/factories/cart.factory.d.ts +0 -25
- package/dist/seed/factories/cart.factory.js +0 -35
- package/dist/seed/factories/category.factory.d.ts +0 -11
- package/dist/seed/factories/category.factory.js +0 -16
- package/dist/seed/factories/coupon.factory.d.ts +0 -21
- package/dist/seed/factories/coupon.factory.js +0 -43
- package/dist/seed/factories/faq.factory.d.ts +0 -10
- package/dist/seed/factories/faq.factory.js +0 -15
- package/dist/seed/factories/notification.factory.d.ts +0 -18
- package/dist/seed/factories/notification.factory.js +0 -39
- package/dist/seed/factories/order.factory.d.ts +0 -20
- package/dist/seed/factories/order.factory.js +0 -20
- package/dist/seed/factories/payout.factory.d.ts +0 -21
- package/dist/seed/factories/payout.factory.js +0 -38
- package/dist/seed/factories/product.factory.d.ts +0 -27
- package/dist/seed/factories/product.factory.js +0 -80
- package/dist/seed/factories/review.factory.d.ts +0 -14
- package/dist/seed/factories/review.factory.js +0 -52
- package/dist/seed/factories/session.factory.d.ts +0 -15
- package/dist/seed/factories/session.factory.js +0 -31
- package/dist/seed/factories/store.factory.d.ts +0 -23
- package/dist/seed/factories/store.factory.js +0 -47
- package/dist/seed/factories/user.factory.d.ts +0 -19
- package/dist/seed/factories/user.factory.js +0 -56
- package/dist/seed/faq-seed-data.d.ts +0 -18
- package/dist/seed/faq-seed-data.js +0 -1956
- package/dist/seed/firestore-indexes.d.ts +0 -12
- package/dist/seed/firestore-indexes.js +0 -31
- package/dist/seed/grouped-listings-seed-data.d.ts +0 -2
- package/dist/seed/grouped-listings-seed-data.js +0 -283
- package/dist/seed/history-seed-data.d.ts +0 -12
- package/dist/seed/history-seed-data.js +0 -70
- package/dist/seed/homepage-sections-seed-data.d.ts +0 -2
- package/dist/seed/homepage-sections-seed-data.js +0 -1034
- package/dist/seed/index.d.ts +0 -100
- package/dist/seed/index.js +0 -115
- package/dist/seed/lottery-entries-seed-data.d.ts +0 -2
- package/dist/seed/lottery-entries-seed-data.js +0 -108
- package/dist/seed/manifest.d.ts +0 -16
- package/dist/seed/manifest.js +0 -235
- package/dist/seed/media-assets-seed-data.d.ts +0 -22
- package/dist/seed/media-assets-seed-data.js +0 -5593
- package/dist/seed/model-composition-seed-data.d.ts +0 -15
- package/dist/seed/model-composition-seed-data.js +0 -9032
- package/dist/seed/notifications-seed-data.d.ts +0 -2
- package/dist/seed/notifications-seed-data.js +0 -606
- package/dist/seed/offers-seed-data.d.ts +0 -2
- package/dist/seed/offers-seed-data.js +0 -398
- package/dist/seed/orders-seed-data.d.ts +0 -2
- package/dist/seed/orders-seed-data.js +0 -845
- package/dist/seed/part-glossary/chunk0.d.ts +0 -9
- package/dist/seed/part-glossary/chunk0.js +0 -35448
- package/dist/seed/part-glossary/chunk1.d.ts +0 -9
- package/dist/seed/part-glossary/chunk1.js +0 -40494
- package/dist/seed/part-glossary/chunk2.d.ts +0 -9
- package/dist/seed/part-glossary/chunk2.js +0 -51242
- package/dist/seed/part-glossary/chunk3.d.ts +0 -9
- package/dist/seed/part-glossary/chunk3.js +0 -53337
- package/dist/seed/part-glossary/chunk4.d.ts +0 -9
- package/dist/seed/part-glossary/chunk4.js +0 -51454
- package/dist/seed/part-glossary-seed-data.d.ts +0 -15
- package/dist/seed/part-glossary-seed-data.js +0 -25
- package/dist/seed/payouts-seed-data.d.ts +0 -2
- package/dist/seed/payouts-seed-data.js +0 -302
- package/dist/seed/product-features-seed-data.d.ts +0 -3
- package/dist/seed/product-features-seed-data.js +0 -366
- package/dist/seed/products-art-seed-data.d.ts +0 -2
- package/dist/seed/products-art-seed-data.js +0 -289
- package/dist/seed/products-auctions-seed-data.d.ts +0 -2
- package/dist/seed/products-auctions-seed-data.js +0 -475
- package/dist/seed/products-beyblade-x-seed-data.d.ts +0 -2
- package/dist/seed/products-beyblade-x-seed-data.js +0 -476
- package/dist/seed/products-catalogue/chunk0.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk0.js +0 -7262
- package/dist/seed/products-catalogue/chunk1.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk1.js +0 -7290
- package/dist/seed/products-catalogue/chunk10.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk10.js +0 -7290
- package/dist/seed/products-catalogue/chunk11.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk11.js +0 -7005
- package/dist/seed/products-catalogue/chunk12.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk12.js +0 -7002
- package/dist/seed/products-catalogue/chunk13.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk13.js +0 -7002
- package/dist/seed/products-catalogue/chunk14.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk14.js +0 -7002
- package/dist/seed/products-catalogue/chunk15.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk15.js +0 -7002
- package/dist/seed/products-catalogue/chunk16.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk16.js +0 -7002
- package/dist/seed/products-catalogue/chunk17.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk17.js +0 -7002
- package/dist/seed/products-catalogue/chunk18.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk18.js +0 -4398
- package/dist/seed/products-catalogue/chunk2.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk2.js +0 -7268
- package/dist/seed/products-catalogue/chunk3.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk3.js +0 -7264
- package/dist/seed/products-catalogue/chunk4.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk4.js +0 -7268
- package/dist/seed/products-catalogue/chunk5.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk5.js +0 -7258
- package/dist/seed/products-catalogue/chunk6.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk6.js +0 -7268
- package/dist/seed/products-catalogue/chunk7.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk7.js +0 -7311
- package/dist/seed/products-catalogue/chunk8.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk8.js +0 -7304
- package/dist/seed/products-catalogue/chunk9.d.ts +0 -12
- package/dist/seed/products-catalogue/chunk9.js +0 -7309
- package/dist/seed/products-catalogue-seed-data.d.ts +0 -2
- package/dist/seed/products-catalogue-seed-data.js +0 -60
- package/dist/seed/products-classifieds-seed-data.d.ts +0 -7
- package/dist/seed/products-classifieds-seed-data.js +0 -435
- package/dist/seed/products-digital-codes-seed-data.d.ts +0 -7
- package/dist/seed/products-digital-codes-seed-data.js +0 -395
- package/dist/seed/products-live-items-seed-data.d.ts +0 -7
- package/dist/seed/products-live-items-seed-data.js +0 -269
- package/dist/seed/products-preorders-seed-data.d.ts +0 -2
- package/dist/seed/products-preorders-seed-data.js +0 -360
- package/dist/seed/products-prize-draws-seed-data.d.ts +0 -7
- package/dist/seed/products-prize-draws-seed-data.js +0 -427
- package/dist/seed/products-spares-seed-data.d.ts +0 -2
- package/dist/seed/products-spares-seed-data.js +0 -368
- package/dist/seed/products-standard-seed-data.d.ts +0 -2
- package/dist/seed/products-standard-seed-data.js +0 -632
- package/dist/seed/products-stickers-seed-data.d.ts +0 -2
- package/dist/seed/products-stickers-seed-data.js +0 -319
- package/dist/seed/reviews-seed-data.d.ts +0 -1
- package/dist/seed/reviews-seed-data.js +0 -185
- package/dist/seed/runner.d.ts +0 -2
- package/dist/seed/runner.js +0 -125
- package/dist/seed/scammers-seed-data.d.ts +0 -2
- package/dist/seed/scammers-seed-data.js +0 -235
- package/dist/seed/seed-market-config.d.ts +0 -48
- package/dist/seed/seed-market-config.js +0 -199
- package/dist/seed/seed-purpose.d.ts +0 -299
- package/dist/seed/seed-purpose.js +0 -440
- package/dist/seed/sessions-seed-data.d.ts +0 -3
- package/dist/seed/sessions-seed-data.js +0 -116
- package/dist/seed/shipments-seed-data.d.ts +0 -5
- package/dist/seed/shipments-seed-data.js +0 -185
- package/dist/seed/site-settings-seed-data.d.ts +0 -2
- package/dist/seed/site-settings-seed-data.js +0 -1069
- package/dist/seed/store-addresses-seed-data.d.ts +0 -18
- package/dist/seed/store-addresses-seed-data.js +0 -71
- package/dist/seed/store-extensions-seed-data.d.ts +0 -11
- package/dist/seed/store-extensions-seed-data.js +0 -292
- package/dist/seed/stores-seed-data.d.ts +0 -6
- package/dist/seed/stores-seed-data.js +0 -242
- package/dist/seed/support-tickets-seed-data.d.ts +0 -16
- package/dist/seed/support-tickets-seed-data.js +0 -239
- package/dist/seed/tax-codes-seed-data.d.ts +0 -34
- package/dist/seed/tax-codes-seed-data.js +0 -100
- package/dist/seed/test-data-ttl.d.ts +0 -29
- package/dist/seed/test-data-ttl.js +0 -31
- package/dist/seed/test-utils.d.ts +0 -49
- package/dist/seed/test-utils.js +0 -110
- package/dist/seed/types.d.ts +0 -89
- package/dist/seed/types.js +0 -15
- package/dist/seed/users-seed-data.d.ts +0 -2
- package/dist/seed/users-seed-data.js +0 -597
- package/dist/seed/wishlists-seed-data.d.ts +0 -12
- package/dist/seed/wishlists-seed-data.js +0 -54
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: Authored six-part procedures for the selling/store-dashboard-navigation page.
|
|
3
|
-
* WHAT: 9 case(s), keyed by full checklist id.
|
|
4
|
-
*
|
|
5
|
-
* Written by hand, case by case, against the label each one states. There is no
|
|
6
|
-
* generator: the authoring scripts were deleted once it was clear they were
|
|
7
|
-
* scaffolding around work that is simply writing.
|
|
8
|
-
*
|
|
9
|
-
* 🛑 THE STORE SUBTREE IS PER-REQUEST BECAUSE ITS LAYOUT READS THE SESSION, and
|
|
10
|
-
* that single read is what makes every route beneath it dynamic — there is no
|
|
11
|
-
* route-segment config anywhere in the tree, and adding one would be declaring a
|
|
12
|
-
* rendering contract to silence a build error. The redirect case below exercises
|
|
13
|
-
* exactly that layout read.
|
|
14
|
-
*
|
|
15
|
-
* @tag domain:tester
|
|
16
|
-
* @tag layer:seed
|
|
17
|
-
* @tag pattern:none
|
|
18
|
-
* @tag access:server-only
|
|
19
|
-
* @tag consumers:seed-data/authored/index.ts
|
|
20
|
-
* @tag sideEffects:none
|
|
21
|
-
*/
|
|
22
|
-
export const authored = {
|
|
23
|
-
"checklist-selling-store-dashboard-navigation-store-sidebar-all-links-work": {
|
|
24
|
-
roles: ["seller"],
|
|
25
|
-
startPage: "/store",
|
|
26
|
-
steps: [
|
|
27
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
28
|
-
"Open /store and expand ALL SIX sidebar groups: Overview, Listings, Orders & Reviews, Finance, Store, Guides. The last one — Guides — sets defaultOpen:false, so it is the one a tester skips and then reports as missing.",
|
|
29
|
-
"Click each link in turn, reading where it lands and going back each time.",
|
|
30
|
-
"Write down any link that 404s, renders an empty shell, or lands somewhere unrelated.",
|
|
31
|
-
"Count the links against the pages that exist under /store. There are 39 sidebar items and 86 page.tsx files beneath /store, so a surplus of pages is EXPECTED — new/, [id]/edit/ and other sub-routes legitimately have no entry of their own. What matters is a top-level page with no route in at all.",
|
|
32
|
-
],
|
|
33
|
-
expectedBehaviour: "Every sidebar link opens a real page with content. The inverse — a built page with no sidebar entry — is the same defect from the other side and is why the count matters: around seventeen store pages were once reachable only by typing their exact URL.",
|
|
34
|
-
expectedUiState: "Every link resolves to a page that renders content, not a 404 and not chrome with an empty body. Note any page you know exists that has no link — that half is not enforced and has to be spotted by eye.",
|
|
35
|
-
expectedData: { brokenLinks: 0 },
|
|
36
|
-
endResult: "Read-only; nothing persists.",
|
|
37
|
-
},
|
|
38
|
-
"checklist-selling-store-dashboard-navigation-store-sidebar-active-highlight": {
|
|
39
|
-
roles: ["seller"],
|
|
40
|
-
startPage: "/store",
|
|
41
|
-
steps: [
|
|
42
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
43
|
-
"Open /store and note which sidebar entry is highlighted.",
|
|
44
|
-
"Navigate to /store/products and read which entry is highlighted.",
|
|
45
|
-
"Navigate to a nested page beneath it — open /store/products, then a product's editor at /store/products/{id}/edit — and read the highlight again. The parent Products entry must stay highlighted two levels down; a highlight that only matches the exact path goes dark on every editor.",
|
|
46
|
-
"Navigate to /store/orders and read it again.",
|
|
47
|
-
"Use the browser's back button and read the highlight.",
|
|
48
|
-
],
|
|
49
|
-
expectedBehaviour: "The highlight follows the current path, including on nested routes where the sidebar has no entry of its own — a product editor should still highlight Products. It must also follow a back navigation, since the highlight is derived from the path rather than from the click.",
|
|
50
|
-
expectedUiState: "Exactly one entry is highlighted at a time and it matches the current section, including on the nested editor. After the back navigation the highlight matches wherever the browser landed.",
|
|
51
|
-
endResult: "Read-only; nothing persists.",
|
|
52
|
-
},
|
|
53
|
-
"checklist-selling-store-dashboard-navigation-store-sidebar-mobile-collapse": {
|
|
54
|
-
roles: ["seller"],
|
|
55
|
-
startPage: "/store",
|
|
56
|
-
steps: [
|
|
57
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
58
|
-
"Resize the browser window to 390 pixels wide and open /store.",
|
|
59
|
-
"Open the sidebar using the header's hamburger icon.",
|
|
60
|
-
"Read its entries, and navigate somewhere.",
|
|
61
|
-
"Check whether it closed on navigation.",
|
|
62
|
-
"Count the fixed bars at the bottom of the screen and read every one of its slots, including the last ('More').",
|
|
63
|
-
"Tap the bottom bar's 'More' slot and read what it opens.",
|
|
64
|
-
"Try to scroll the page sideways.",
|
|
65
|
-
],
|
|
66
|
-
inputs: { mobileWidth: 390 },
|
|
67
|
-
expectedBehaviour: "BEFORE (fixed 2026-09-28): /store rendered a dashboard-specific bottom bar — up to 5 flattened sidebar links, text-only, no icons — while the public bottom bar was suppressed on this route. AFTER: the dashboard sidebar opens from the header hamburger, exactly as on every dashboard route, and closes after navigating. The bottom tab bar itself is now the SAME shared bar every public page uses (same items, same order, same icons) — not a dashboard-specific one — and its own 'More' slot opens the public site menu, not this sidebar. Exactly one bottom bar is mounted either way.",
|
|
68
|
-
expectedUiState: "The header hamburger opens the dashboard sidebar, collapsed by default, closing after navigation. The bottom bar matches the public site's bar item-for-item, and tapping its 'More' slot opens the public menu rather than the dashboard sidebar. The page does not scroll sideways.",
|
|
69
|
-
expectedData: { bottomNavCount: 1 },
|
|
70
|
-
endResult: "Read-only; restore the window width afterwards.",
|
|
71
|
-
},
|
|
72
|
-
"checklist-selling-store-dashboard-navigation-store-deep-link-direct-load": {
|
|
73
|
-
roles: ["seller"],
|
|
74
|
-
startPage: "/store/products",
|
|
75
|
-
steps: [
|
|
76
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
77
|
-
"Open a product's editor from /store/products and copy the URL.",
|
|
78
|
-
"Open a new tab and paste that URL directly.",
|
|
79
|
-
"Read whether the editor opens populated on the same record.",
|
|
80
|
-
"Reload that tab and read it again.",
|
|
81
|
-
"Copy a filtered listing URL — with a search term and a sort applied — and open it in a new tab.",
|
|
82
|
-
"Read whether the filters and sort are applied on first paint.",
|
|
83
|
-
],
|
|
84
|
-
expectedBehaviour: "Every dashboard URL is a real destination: an editor deep link opens on its record, and a filtered listing URL reproduces its filters on first paint. Listing state lives in the URL for this reason, so the server's render and the toolbar controls agree.",
|
|
85
|
-
expectedUiState: "The pasted editor URL opens populated and survives a reload. The filtered listing URL shows the same rows, filters and sort as the tab it was copied from, on first paint rather than after a re-sort.",
|
|
86
|
-
endResult: "Read-only; close the editors without saving.",
|
|
87
|
-
},
|
|
88
|
-
"checklist-selling-store-dashboard-navigation-store-user-crossnav": {
|
|
89
|
-
roles: ["seller"],
|
|
90
|
-
startPage: "/store",
|
|
91
|
-
steps: [
|
|
92
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
93
|
-
"Open /store and find the cross-dashboard navigation to the buyer portal.",
|
|
94
|
-
"Click through to /user and read where it lands.",
|
|
95
|
-
"From /user, find the way back to /store and click it.",
|
|
96
|
-
"Check the sidebar changed with the portal each time.",
|
|
97
|
-
"Open the public store page from within the dashboard — it is /stores/store-beyblade-arena, under the PLURAL /stores — and confirm it opens the public view rather than the editor. The two differ by one character, which is exactly how such a link ends up pointing back into the dashboard.",
|
|
98
|
-
],
|
|
99
|
-
expectedBehaviour: "A seller is also a buyer, so both portals are reachable from each other and each renders its own navigation. The public-store link is a distinct destination from the store settings editor — conflating them is a live defect on the buyer side, where a 'My Profile' entry leads to the edit page rather than the public profile.",
|
|
100
|
-
expectedUiState: "Each cross-link lands in the other portal with that portal's own sidebar. The public store link opens the public store page, not the settings editor.",
|
|
101
|
-
endResult: "Read-only; nothing persists.",
|
|
102
|
-
},
|
|
103
|
-
"checklist-selling-store-dashboard-navigation-store-browser-back-forward": {
|
|
104
|
-
roles: ["seller"],
|
|
105
|
-
startPage: "/store",
|
|
106
|
-
steps: [
|
|
107
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
108
|
-
"Open /store, then /store/products, then apply a filter, then open a product editor.",
|
|
109
|
-
"Press the browser back button once and read where it lands.",
|
|
110
|
-
"Press back again and read where it lands, including whether the filter is still applied.",
|
|
111
|
-
"Press back once more.",
|
|
112
|
-
"Press forward three times, reading each landing.",
|
|
113
|
-
],
|
|
114
|
-
expectedBehaviour: "Every state change that alters the URL is one history entry, so back walks them in reverse. A filter change that writes the URL twice — once for the filter and once to reset the page number — produces two entries for one action and makes back appear not to work.",
|
|
115
|
-
expectedUiState: "Back and forward walk the sequence one step per press, and the filtered listing comes back with its filter applied. Two presses needed to undo a single filter change is the double-navigation failure.",
|
|
116
|
-
endResult: "Read-only; close any editor without saving.",
|
|
117
|
-
},
|
|
118
|
-
"checklist-selling-store-dashboard-navigation-store-logged-out-redirect": {
|
|
119
|
-
roles: ["guest"],
|
|
120
|
-
startPage: "/store",
|
|
121
|
-
steps: [
|
|
122
|
-
"Open a private window with no session.",
|
|
123
|
-
"Open /store and watch the page for 5 seconds.",
|
|
124
|
-
"Open /store/products and watch for 5 seconds.",
|
|
125
|
-
"Open /store/payouts and watch for 5 seconds.",
|
|
126
|
-
"Read each for any store name, order, payout figure or seller detail at any point.",
|
|
127
|
-
"Read where each ends up.",
|
|
128
|
-
],
|
|
129
|
-
expectedBehaviour: "The store layout reads the session server-side, which both makes the whole subtree per-request and gates it. A signed-out request is redirected before any store data is rendered — no flash of a real store's figures.",
|
|
130
|
-
expectedUiState: "All three end on the sign-in page. At no point does a store name, an order, a payout amount or a seller's detail appear. A spinner still turning after 5 seconds is a separate failure from a leak, and both should be reported.",
|
|
131
|
-
expectedData: { storeDataShownToGuest: 0 },
|
|
132
|
-
endResult: "Read-only. Any trace of real store data is a leak and fails the case outright.",
|
|
133
|
-
},
|
|
134
|
-
"checklist-selling-store-dashboard-navigation-store-nav-listing-type-groups": {
|
|
135
|
-
roles: ["seller"],
|
|
136
|
-
startPage: "/store",
|
|
137
|
-
steps: [
|
|
138
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
139
|
-
"Open /store and find the listing-type entries in the sidebar.",
|
|
140
|
-
"Write down every listing type offered.",
|
|
141
|
-
"Compare that list against the nine types the catalogue supports.",
|
|
142
|
-
"Open each and check it lists that type's listings rather than everything.",
|
|
143
|
-
"Write down any type that is missing or whose page shows the wrong listings.",
|
|
144
|
-
],
|
|
145
|
-
expectedBehaviour: "Every listing type has a way in. Adding a type to the union and the plugin registry is not enough — omit it from the repository's filter-alias map and the alias returns an empty value that is then dropped, so the page runs with NO type filter and shows the seller everything.",
|
|
146
|
-
expectedUiState: "All nine types are offered and each page shows only its own type. A page showing the full catalogue under a type heading is the dropped-filter failure; a missing type is the other half of the same bug.",
|
|
147
|
-
expectedData: { listingTypeEntries: 9 },
|
|
148
|
-
endResult: "Read-only; nothing persists.",
|
|
149
|
-
},
|
|
150
|
-
"checklist-selling-store-dashboard-navigation-store-sidebar-logout-button": {
|
|
151
|
-
roles: ["seller"],
|
|
152
|
-
startPage: "/store",
|
|
153
|
-
steps: [
|
|
154
|
-
"Sign in as tyson@beybladearena.in / TempPass123!.",
|
|
155
|
-
"Open /store and find the log-out control in the sidebar.",
|
|
156
|
-
"Click it and read where the browser lands.",
|
|
157
|
-
"Open /store again.",
|
|
158
|
-
"Read what happens.",
|
|
159
|
-
"Press the browser back button and read what is shown.",
|
|
160
|
-
],
|
|
161
|
-
expectedBehaviour: "Log out clears both halves of the session — the server cookie and the client auth session. Clearing only one leaves the browser able to re-mint a session on the next request, which is why the second navigation, not the redirect, is the real check.",
|
|
162
|
-
expectedUiState: "The browser leaves the dashboard on log-out. Opening /store afterwards redirects to sign-in rather than rendering the dashboard, even briefly with real data. The back button does not restore it from cache.",
|
|
163
|
-
endResult: "The session is ended. A dashboard visible via the back button after log-out is a real exposure on a shared machine.",
|
|
164
|
-
},
|
|
165
|
-
};
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: Authored six-part procedures for the selling/store-uncovered-pages page.
|
|
3
|
-
* WHAT: 6 case(s), keyed by full checklist id.
|
|
4
|
-
*
|
|
5
|
-
* Six seller routes the sweep found with no case naming them anywhere. One case
|
|
6
|
-
* each: does the page render, and does its main affordance work. A page nobody
|
|
7
|
-
* has opened does not need depth before it has that.
|
|
8
|
-
*
|
|
9
|
-
* @tag domain:tester
|
|
10
|
-
* @tag layer:seed
|
|
11
|
-
* @tag pattern:none
|
|
12
|
-
* @tag access:server-only
|
|
13
|
-
* @tag consumers:seed-data/authored/index.ts
|
|
14
|
-
* @tag sideEffects:none
|
|
15
|
-
*/
|
|
16
|
-
const SIGN_IN_SELLER = "Sign in as tyson@beybladearena.in / TempPass123!.";
|
|
17
|
-
export const authored = {
|
|
18
|
-
"checklist-selling-store-uncovered-pages-store-stickers-renders": {
|
|
19
|
-
roles: ["seller"],
|
|
20
|
-
startPage: "/store/stickers",
|
|
21
|
-
steps: [
|
|
22
|
-
SIGN_IN_SELLER,
|
|
23
|
-
"Open /store/stickers.",
|
|
24
|
-
"Read the listings shown and check each is a sticker listing.",
|
|
25
|
-
"Check no listing of another type appears.",
|
|
26
|
-
"Create a sticker listing from this page titled 'QA Store Sticker Probe' priced at 99.",
|
|
27
|
-
"Check it appears in the list, then delete it.",
|
|
28
|
-
],
|
|
29
|
-
inputs: { title: "QA Store Sticker Probe", price: 99 },
|
|
30
|
-
expectedBehaviour: "The page lists this seller's sticker listings only and can create one. A type-scoped page whose query dropped its own type filter returns the seller's whole catalogue — which reads as a working page until somebody notices a Beyblade on the stickers screen.",
|
|
31
|
-
expectedUiState: "Only sticker listings are shown, and the new one appears after creation. Any other type present is the finding.",
|
|
32
|
-
endResult: "The probe listing is deleted.",
|
|
33
|
-
},
|
|
34
|
-
"checklist-selling-store-uncovered-pages-store-support-renders": {
|
|
35
|
-
roles: ["seller"],
|
|
36
|
-
startPage: "/store/support",
|
|
37
|
-
steps: [
|
|
38
|
-
SIGN_IN_SELLER,
|
|
39
|
-
"Open /store/support.",
|
|
40
|
-
"Read the tickets listed, or the empty state.",
|
|
41
|
-
"Open a new ticket with the subject 'QA seller support probe' and a body naming this checklist case.",
|
|
42
|
-
"Submit it and check it appears in the list.",
|
|
43
|
-
"Open it and reply once.",
|
|
44
|
-
"Reload and check both the ticket and the reply are still there.",
|
|
45
|
-
],
|
|
46
|
-
inputs: { subject: "QA seller support probe" },
|
|
47
|
-
expectedBehaviour: "A seller can open and continue a ticket from their own dashboard rather than being sent to the buyer-side surface. The reply is the half more likely to fail silently — a reply appended optimistically and never written looks identical until the reload.",
|
|
48
|
-
expectedUiState: "The ticket and its reply are both present after the reload.",
|
|
49
|
-
endResult: "One QA support ticket exists; close it if the interface allows.",
|
|
50
|
-
},
|
|
51
|
-
"checklist-selling-store-uncovered-pages-store-analytics-cards-renders": {
|
|
52
|
-
roles: ["seller"],
|
|
53
|
-
startPage: "/store/analytics/cards",
|
|
54
|
-
steps: [
|
|
55
|
-
SIGN_IN_SELLER,
|
|
56
|
-
"Open /store/analytics/cards with the console open.",
|
|
57
|
-
"Read every figure shown.",
|
|
58
|
-
"Open /store/orders and count this store's orders.",
|
|
59
|
-
"Compare the analytics figures against what the orders list shows.",
|
|
60
|
-
"Check no figure is an order of magnitude out.",
|
|
61
|
-
"Read the console for errors.",
|
|
62
|
-
],
|
|
63
|
-
expectedBehaviour: "The figures come from this store's real orders. Money is stored in whole rupees with decimals, so a figure computed against the older hundredth-unit scale reads a hundred times too large — plausible-looking on a screen nobody has a baseline for.",
|
|
64
|
-
expectedUiState: "Figures that reconcile with the orders list, a clean console, and no hundredfold jump. All zeros against real orders is equally a finding.",
|
|
65
|
-
endResult: "Read-only.",
|
|
66
|
-
},
|
|
67
|
-
"checklist-selling-store-uncovered-pages-store-preorders-renders": {
|
|
68
|
-
roles: ["seller"],
|
|
69
|
-
startPage: "/store/pre-orders",
|
|
70
|
-
steps: [
|
|
71
|
-
SIGN_IN_SELLER,
|
|
72
|
-
"Open /store/pre-orders. It REDIRECTS to /store/products?listingType=pre-order — the per-type seller pages were folded into the one products list with a type filter — so landing on a differently-named URL carrying a query is the design, not a broken link. Everything below is read on that filtered list.",
|
|
73
|
-
"Read the listings shown and check each is a pre-order.",
|
|
74
|
-
"Read each one's production status and delivery date in the list.",
|
|
75
|
-
"Create a pre-order from this page titled 'QA Store Preorder Probe' with a full price of 999 and a deposit of 200.",
|
|
76
|
-
"Check it appears in the list, then delete it.",
|
|
77
|
-
],
|
|
78
|
-
inputs: { title: "QA Store Preorder Probe", fullPrice: 999, deposit: 200 },
|
|
79
|
-
expectedBehaviour: "The page lists this seller's pre-orders with the fields that make them pre-orders, and can create one. Production status and delivery date belong in the list rather than only in the editor — they are what the seller is managing.",
|
|
80
|
-
expectedUiState: "Only pre-orders are shown, each with its production status and delivery date, and the new one appears after creation.",
|
|
81
|
-
endResult: "The probe listing is deleted.",
|
|
82
|
-
},
|
|
83
|
-
"checklist-selling-store-uncovered-pages-store-guides-all-render": {
|
|
84
|
-
roles: ["seller"],
|
|
85
|
-
startPage: "/store/guide",
|
|
86
|
-
steps: [
|
|
87
|
-
SIGN_IN_SELLER,
|
|
88
|
-
"Open each of these by URL in turn: /store/guide, /store/guide/capabilities, /store/guide/finance, /store/guide/listings, /store/guide/orders, /store/guide/settings and /store/guide/whatsapp.",
|
|
89
|
-
"Check every one of them is also linked from the sidebar's 'Guides' group — it is the LAST group and sets defaultOpen:false, so EXPAND IT before concluding anything is unlinked. All seven are there: All Guides, Listings Guide, Orders Guide, Finance Guide, Settings, Capabilities, WhatsApp Catalog Sync.",
|
|
90
|
-
"Record any that 404 or render empty.",
|
|
91
|
-
"On two of them, check the screen they describe still exists and is named the same way.",
|
|
92
|
-
"Record any guide describing a control that is no longer there.",
|
|
93
|
-
],
|
|
94
|
-
expectedBehaviour: "Every seller guide renders and describes something that still exists. A guide has no compiler behind it, so it rots silently — and a seller following instructions for a screen that was renamed concludes the site is broken rather than the documentation.",
|
|
95
|
-
expectedUiState: "Every guide loads with real content. A 404 is a finding; so is a guide naming a screen or control that no longer exists, recorded with which guide.",
|
|
96
|
-
expectedData: { guidePagesNotFound: 0 },
|
|
97
|
-
endResult: "Read-only.",
|
|
98
|
-
},
|
|
99
|
-
"checklist-selling-store-uncovered-pages-store-listing-templates-new-renders": {
|
|
100
|
-
roles: ["seller"],
|
|
101
|
-
startPage: "/store/listing-templates/new",
|
|
102
|
-
steps: [
|
|
103
|
-
SIGN_IN_SELLER,
|
|
104
|
-
"Open /store/listing-templates/new directly by URL.",
|
|
105
|
-
"Check the form is already open rather than the page being blank.",
|
|
106
|
-
"Create a template named 'QA Template Probe' with a description and a default condition.",
|
|
107
|
-
"Save it and check the browser lands on the template list with it present.",
|
|
108
|
-
"Start creating a listing and check the template is offered and applies its defaults.",
|
|
109
|
-
"Delete the template afterwards.",
|
|
110
|
-
],
|
|
111
|
-
inputs: { name: "QA Template Probe" },
|
|
112
|
-
expectedBehaviour: "The editor page opens with its form showing, and a saved template is usable where templates are meant to be used. A template that saves and is never offered during listing creation is a feature with no consumer — which is the state a superseded template feature sat in for a long time.",
|
|
113
|
-
expectedUiState: "The form is open on arrival, the saved template is in the list, and it appears and applies when creating a listing. A template that saves and is never offered is the finding.",
|
|
114
|
-
endResult: "The probe template is deleted.",
|
|
115
|
-
},
|
|
116
|
-
};
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: Authored six-part procedures for the seo/canonical-and-host checklist page.
|
|
3
|
-
* WHAT: 6 case(s), keyed by full checklist id.
|
|
4
|
-
*
|
|
5
|
-
* 🛑 THE CANONICAL HOST HAS EXACTLY ONE DEFINITION AND EVERYTHING DERIVES FROM IT.
|
|
6
|
-
* When it had two — one hardcoded, one read from an environment variable, with a
|
|
7
|
-
* comment claiming they were kept in sync — the sitemap advertised 182 URLs on a
|
|
8
|
-
* host that redirected, the destination declared a canonical on a host present in
|
|
9
|
-
* no sitemap, and the site fell out of search results with nothing erroring
|
|
10
|
-
* anywhere. These cases are the read-side proof that there is still only one.
|
|
11
|
-
*
|
|
12
|
-
* @tag domain:tester
|
|
13
|
-
* @tag layer:seed
|
|
14
|
-
* @tag pattern:none
|
|
15
|
-
* @tag access:server-only
|
|
16
|
-
* @tag consumers:seed-data/authored/index.ts
|
|
17
|
-
* @tag sideEffects:none
|
|
18
|
-
*/
|
|
19
|
-
export const authored = {
|
|
20
|
-
"checklist-seo-canonical-and-host-gated-price-is-declared-in-structured-data": {
|
|
21
|
-
roles: ["guest"],
|
|
22
|
-
startPage: "/products/product-beyblade-burst-valkyrie",
|
|
23
|
-
steps: [
|
|
24
|
-
"Open /products/product-beyblade-burst-valkyrie in a private window and view the page source.",
|
|
25
|
-
"Find every <script type=\"application/ld+json\"> block and read them.",
|
|
26
|
-
"In the Product block, read the offers object and confirm it still carries a price and a priceCurrency.",
|
|
27
|
-
"Find the WebPage block and read its isAccessibleForFree value and its hasPart.cssSelector value.",
|
|
28
|
-
"Search the rendered HTML for that exact selector's class name and confirm at least one element carries it.",
|
|
29
|
-
"Repeat all of the above for /auctions/auction-beyblade-metal-lightning-l-drago.",
|
|
30
|
-
],
|
|
31
|
-
expectedBehaviour: "The structured data keeps the price on purpose, so search engines still see it — and declares the on-page gate alongside it, so the richer markup is not an undeclared mismatch. Both halves are required: the price alone is a mismatch, and the declaration alone throws away the search value the decision was made to keep.",
|
|
32
|
-
expectedUiState: "The Product block's offers object contains a numeric price and priceCurrency 'INR'. A separate WebPage block is present carrying isAccessibleForFree: false and hasPart.cssSelector '.appkit-gated-price'. Searching the HTML for 'appkit-gated-price' finds at least one element. On the auction page the same two blocks are present, the offer price being the current bid. A page with offers.price and NO WebPage block is the failure; so is a cssSelector that matches no element in the HTML.",
|
|
33
|
-
expectedData: { webPageBlocksWithGateDeclared: 2, selectorMatchesElement: true },
|
|
34
|
-
endResult: "Read-only; nothing persists.",
|
|
35
|
-
},
|
|
36
|
-
"checklist-seo-canonical-and-host-apex-redirects-to-www": {
|
|
37
|
-
roles: ["guest"],
|
|
38
|
-
startPage: "/",
|
|
39
|
-
steps: [
|
|
40
|
-
"Open the site by typing the bare domain with no www prefix into the address bar.",
|
|
41
|
-
"Open the browser's network panel before the page finishes loading.",
|
|
42
|
-
"Read the status code of the FIRST response, before any redirect is followed.",
|
|
43
|
-
"Read the address bar afterwards.",
|
|
44
|
-
"Repeat with a deep path rather than the homepage.",
|
|
45
|
-
],
|
|
46
|
-
expectedBehaviour: "The apex redirects to the www host permanently. A temporary redirect explicitly tells a search engine NOT to move the index entry, so the old address stays indexed while the new one is the only place content lives — which is how a site keeps two competing addresses for every page indefinitely.",
|
|
47
|
-
expectedUiState: "The first response is a permanent redirect — a 301 or 308 — not a 307 or 302. The address bar ends on the www host, and the deep path is preserved rather than being dropped to the homepage.",
|
|
48
|
-
expectedData: { redirectIsPermanent: true },
|
|
49
|
-
endResult: "Read-only.",
|
|
50
|
-
},
|
|
51
|
-
"checklist-seo-canonical-and-host-locale-prefix-redirects-to-bare": {
|
|
52
|
-
roles: ["guest"],
|
|
53
|
-
startPage: "/products",
|
|
54
|
-
steps: [
|
|
55
|
-
"Type the products path with an /en prefix in front of it into the address bar.",
|
|
56
|
-
"Watch the network panel and read the first response's status.",
|
|
57
|
-
"Read where the address bar lands.",
|
|
58
|
-
"Open /products from the site's own navigation — the Products entry in the main nav, not a typed URL — and read the address bar. It must land on /products with no locale prefix; the site's own links are what matter here, since a typed /en/products would only prove the redirect works, not that the navigation stopped emitting prefixed hrefs.",
|
|
59
|
-
"Compare the two.",
|
|
60
|
-
],
|
|
61
|
-
expectedBehaviour: "A locale-prefixed path resolves to the unprefixed one, and the site's own links use the unprefixed form so no internal navigation pays the redirect. Two spellings of every path is two addresses a crawler has to reconcile, and one of them is always the slower.",
|
|
62
|
-
expectedUiState: "The prefixed path redirects and the address bar reads the bare path. The site's own navigation produces the bare path directly, with no redirect in the network panel.",
|
|
63
|
-
endResult: "Read-only.",
|
|
64
|
-
},
|
|
65
|
-
"checklist-seo-canonical-and-host-canonical-matches-visited-host": {
|
|
66
|
-
roles: ["guest"],
|
|
67
|
-
startPage: "/",
|
|
68
|
-
steps: [
|
|
69
|
-
"Open the homepage on the www host and view the page source. The canonical host has ONE definition — appkit.config.js seo.siteUrl, which defaults to https://www.letitrip.in and can be overridden by NEXT_PUBLIC_SITE_URL. That override is how these drifted apart before: one path read the env var and another held a hardcoded apex, so the sitemap advertised URLs on a host that redirected. Compare what you read here against the host in the address bar, not against a remembered value.",
|
|
70
|
-
"Find the canonical link element and read its href.",
|
|
71
|
-
"Compare its host against the host in the address bar.",
|
|
72
|
-
"Open /products and read its canonical.",
|
|
73
|
-
"Open /products/product-beyblade-burst-valkyrie and read its canonical.",
|
|
74
|
-
"Open /sitemap.xml and read the host on the first entry.",
|
|
75
|
-
"Compare all four hosts.",
|
|
76
|
-
],
|
|
77
|
-
expectedBehaviour: "One definition of the host feeds page canonicals, social tags, structured data, robots and the sitemap. Two owners drifted the moment the deployment environment changed, and neither side errored — the sitemap simply advertised URLs that redirected while the destination pointed somewhere the sitemap never named.",
|
|
78
|
-
expectedUiState: "The canonical on every page names the same host as the address bar and as the sitemap. Any page whose canonical names a different host is the finding, named by page.",
|
|
79
|
-
expectedData: { distinctHosts: 1 },
|
|
80
|
-
endResult: "Read-only.",
|
|
81
|
-
},
|
|
82
|
-
"checklist-seo-canonical-and-host-no-inherited-homepage-canonical": {
|
|
83
|
-
roles: ["guest"],
|
|
84
|
-
startPage: "/reviews",
|
|
85
|
-
steps: [
|
|
86
|
-
"Open /reviews and view the page source.",
|
|
87
|
-
"Find the canonical link element, if there is one, and read its href.",
|
|
88
|
-
"Check it is not the homepage's URL.",
|
|
89
|
-
"Open /promotions and read its canonical the same way. EXPECT NONE: it is a bare redirect, and a redirect page deliberately carries no metadata at all, because redirect() fires before a document is produced — a crawler follows it and reads the canonical of the page it LANDS on. An absent canonical here is correct; the homepage's URL appearing here is the defect.",
|
|
90
|
-
"Open /sellers and /brands — two more pages unlikely to declare their own metadata — and read theirs.",
|
|
91
|
-
],
|
|
92
|
-
expectedBehaviour: "Metadata declared at the root is INHERITED by every page beneath it, so a static absolute canonical there makes every page that does not override it declare itself a duplicate of the homepage. A page either declares its own or has none.",
|
|
93
|
-
expectedUiState: "No page other than the homepage carries the homepage's URL as its canonical. Every page whose canonical reads as the bare site root is a finding, listed by path.",
|
|
94
|
-
expectedData: { pagesCanonicalisedToHomepage: 0 },
|
|
95
|
-
endResult: "Read-only.",
|
|
96
|
-
},
|
|
97
|
-
"checklist-seo-canonical-and-host-tab-family-single-canonical": {
|
|
98
|
-
roles: ["guest"],
|
|
99
|
-
startPage: "/stores/store-beyblade-arena",
|
|
100
|
-
steps: [
|
|
101
|
-
"Open /stores/store-beyblade-arena and read its canonical from the page source.",
|
|
102
|
-
"Open the store's About tab and read its canonical.",
|
|
103
|
-
"Open two more of the store's tabs and read theirs.",
|
|
104
|
-
"Compare all four canonicals.",
|
|
105
|
-
"Read each tab's title and description as well.",
|
|
106
|
-
],
|
|
107
|
-
inputs: { storeId: "store-beyblade-arena" },
|
|
108
|
-
expectedBehaviour: "Tabs are views of ONE page, so they share one canonical — the store's own URL, which is the one the sitemap advertises. Four competing canonicals split the section into four addresses, none of which is the advertised one. Titles and descriptions genuinely differ per tab and must keep differing.",
|
|
109
|
-
expectedUiState: "All four tabs declare the same canonical, and it is the store's base URL. Each tab still has its own title and description. Four different canonicals is the failure; four identical titles is a separate, smaller one.",
|
|
110
|
-
expectedData: { distinctCanonicals: 1 },
|
|
111
|
-
endResult: "Read-only.",
|
|
112
|
-
},
|
|
113
|
-
"checklist-seo-canonical-and-host-redirect-only-page-no-canonical": {
|
|
114
|
-
roles: ["guest"],
|
|
115
|
-
startPage: "/promotions",
|
|
116
|
-
steps: [
|
|
117
|
-
"Open the network panel and navigate to /promotions.",
|
|
118
|
-
"Read whether the first response is a redirect.",
|
|
119
|
-
"Read where it lands.",
|
|
120
|
-
"View the source of the page it landed on and read its canonical.",
|
|
121
|
-
"Check that canonical names the LANDING page rather than /promotions.",
|
|
122
|
-
],
|
|
123
|
-
expectedBehaviour: "A redirect fires before any document is produced, so metadata declared on a redirecting page never reaches a browser at all — a crawler follows the redirect and reads the canonical of the page it lands on. Metadata there is code that reads as though it were doing something and is not.",
|
|
124
|
-
expectedUiState: "The redirect resolves and the landing page's canonical names the landing page. A canonical naming the redirecting path is the failure.",
|
|
125
|
-
endResult: "Read-only.",
|
|
126
|
-
},
|
|
127
|
-
};
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* WHY: Authored six-part procedures for the seo/og-images checklist page.
|
|
3
|
-
* WHAT: 5 case(s), keyed by full checklist id.
|
|
4
|
-
*
|
|
5
|
-
* A social card is rendered server-side and never appears in the page a visitor
|
|
6
|
-
* sees, so every failure here is invisible until somebody shares a link. The brand
|
|
7
|
-
* card's image reader named a field the record does not have — always undefined,
|
|
8
|
-
* always omitted, and the card still rendered.
|
|
9
|
-
*
|
|
10
|
-
* @tag domain:tester
|
|
11
|
-
* @tag layer:seed
|
|
12
|
-
* @tag pattern:none
|
|
13
|
-
* @tag access:server-only
|
|
14
|
-
* @tag consumers:seed-data/authored/index.ts
|
|
15
|
-
* @tag sideEffects:none
|
|
16
|
-
*/
|
|
17
|
-
export const authored = {
|
|
18
|
-
"checklist-seo-og-images-og-image-renders-homepage": {
|
|
19
|
-
roles: ["guest"],
|
|
20
|
-
startPage: "/",
|
|
21
|
-
steps: [
|
|
22
|
-
"Open the homepage and view the page source.",
|
|
23
|
-
"Find the og:image tag and copy its URL.",
|
|
24
|
-
"Open that URL in a fresh tab.",
|
|
25
|
-
"Read what renders — a real image, an error, or a blank frame.",
|
|
26
|
-
"Read the response status and content type in the network panel.",
|
|
27
|
-
],
|
|
28
|
-
expectedBehaviour: "The social image URL serves a real image. It is generated rather than a static file, so a failure inside the generator returns an error or an empty frame that nothing on the site would ever reveal.",
|
|
29
|
-
expectedUiState: "The URL returns 200 with an image content type and renders a card carrying the site's branding. A blank frame or an error page is the finding.",
|
|
30
|
-
endResult: "Read-only.",
|
|
31
|
-
},
|
|
32
|
-
"checklist-seo-og-images-og-image-product": {
|
|
33
|
-
roles: ["guest"],
|
|
34
|
-
startPage: "/products/product-beyblade-burst-valkyrie",
|
|
35
|
-
steps: [
|
|
36
|
-
"Open /products/product-beyblade-burst-valkyrie and note the product's title and main photo.",
|
|
37
|
-
"View the source, find the og:image tag and copy its URL.",
|
|
38
|
-
"Open that URL in a fresh tab.",
|
|
39
|
-
"Read the title rendered on the card and compare it against the product's.",
|
|
40
|
-
"Check the product's own photo appears on the card rather than a generic placeholder.",
|
|
41
|
-
],
|
|
42
|
-
inputs: { productId: "product-beyblade-burst-valkyrie" },
|
|
43
|
-
expectedBehaviour: "A product's card is built from that product. A card that renders correctly but with the site's default artwork is the more likely failure — it looks deliberate, and only comparing it against the product reveals that the record was never read.",
|
|
44
|
-
expectedUiState: "The card shows the product's own title and its own photo. A generic card is the finding.",
|
|
45
|
-
endResult: "Read-only.",
|
|
46
|
-
},
|
|
47
|
-
"checklist-seo-og-images-og-image-carries-no-price": {
|
|
48
|
-
roles: ["guest"],
|
|
49
|
-
startPage: "/products/product-beyblade-burst-valkyrie",
|
|
50
|
-
steps: [
|
|
51
|
-
"Open /products/product-beyblade-burst-valkyrie, view source, find the og:image tag and open its URL in a fresh tab.",
|
|
52
|
-
"Read every figure printed on the card.",
|
|
53
|
-
"Repeat for /bundles/bundle-every-generation-starter-pack.",
|
|
54
|
-
"Repeat for /classified/classified-beyblade-stadium-set.",
|
|
55
|
-
"Repeat for /digital-codes/digitalcode-beyblade-x-app-starter-pack.",
|
|
56
|
-
"Repeat for /live/live-golden-retriever-puppy.",
|
|
57
|
-
"Repeat for /prize-draws/prizedraw-beyblade-mystery-box.",
|
|
58
|
-
],
|
|
59
|
-
expectedBehaviour: "None of these cards prints a money amount. The card is a public image URL with its contents burned into the pixels, so a price there survives every gate on the page and is fetchable by anyone who has the listing URL. A prize draw that is genuinely free may still say 'Free entry' — that is a fact about the draw, not a disclosed amount.",
|
|
60
|
-
expectedUiState: "BEFORE: the product card showed '₹1,299', the bundle card its bundle price, the classified/digital-code/live/catalogue cards their own prices, and the prize-draw card '₹X / entry'. AFTER: no '₹' character appears on any of the six cards. The auction and pre-order cards are unchanged — they show an end date and a release date respectively and never carried a price.",
|
|
61
|
-
expectedData: { cardsShowingRupee: 0 },
|
|
62
|
-
endResult: "Read-only. A ₹ figure on any of these cards is the regression this case exists for.",
|
|
63
|
-
},
|
|
64
|
-
"checklist-seo-og-images-og-image-brand-logo-present": {
|
|
65
|
-
roles: ["guest"],
|
|
66
|
-
startPage: "/brands/brand-takara-tomy",
|
|
67
|
-
steps: [
|
|
68
|
-
"Open /brands/brand-takara-tomy and note the cover image shown in its hero.",
|
|
69
|
-
"View the source, find the og:image tag and copy its URL.",
|
|
70
|
-
"Open that URL in a fresh tab.",
|
|
71
|
-
"Read whether the brand's image is on the card or the slot is empty.",
|
|
72
|
-
"Repeat with /brands/brand-beyblade.",
|
|
73
|
-
],
|
|
74
|
-
inputs: { brandId: "brand-takara-tomy" },
|
|
75
|
-
expectedBehaviour: "The card reads the same cover image the brand page's hero uses. It previously read a field that does not exist on a brand record at all, so the value was always undefined and the image was silently omitted — the card still rendered, just without it.",
|
|
76
|
-
expectedUiState: "The brand's cover image is on the card for both brands. An empty image slot with the rest of the card intact is exactly the failure this case exists for.",
|
|
77
|
-
endResult: "Read-only.",
|
|
78
|
-
},
|
|
79
|
-
"checklist-seo-og-images-og-tags-present-and-absolute": {
|
|
80
|
-
roles: ["guest"],
|
|
81
|
-
startPage: "/products/product-beyblade-burst-valkyrie",
|
|
82
|
-
steps: [
|
|
83
|
-
"Open /products/product-beyblade-burst-valkyrie and view the source.",
|
|
84
|
-
"List every og: and twitter: tag present.",
|
|
85
|
-
"Check og:title, og:description, og:image and og:url are all there.",
|
|
86
|
-
"Read og:image's and og:url's values and check both are absolute URLs.",
|
|
87
|
-
"Check their host matches the canonical's host.",
|
|
88
|
-
"Repeat on a store page and a blog post.",
|
|
89
|
-
],
|
|
90
|
-
expectedBehaviour: "Social tags are present and their URLs are absolute on the canonical host. A relative social image URL is not fetchable by the service rendering the preview — it has no page context to resolve it against — so the card falls back to nothing.",
|
|
91
|
-
expectedUiState: "All four tags present on all three pages, with absolute URLs on the canonical host. A relative URL, or one on a different host, is the finding.",
|
|
92
|
-
endResult: "Read-only.",
|
|
93
|
-
},
|
|
94
|
-
"checklist-seo-og-images-og-image-missing-media-fallback": {
|
|
95
|
-
roles: ["guest"],
|
|
96
|
-
startPage: "/classified/classified-beyblade-stadium-set",
|
|
97
|
-
steps: [
|
|
98
|
-
"🛑 THIS BRANCH CANNOT BE REACHED THROUGH THE UI — answer null and record why, rather than hunting. The OG renderer falls back when a listing has neither mainImage nor images[0] (resolveOgImageUrl is passed null), but EVERY seeded listing carries images, and both product forms require one: the schema is mainImage: z.string().min(1, 'A main image is required'), on the quick form and the advanced form alike. So no listing a tester can find or create reaches the fallback. Confirm the branch exists by reading the source if you wish, then abstain — a fabricated yes here would be coverage of a path no visitor can produce.",
|
|
99
|
-
"Open its detail page and view the source.",
|
|
100
|
-
"Copy the og:image URL and open it in a fresh tab.",
|
|
101
|
-
"Read what renders.",
|
|
102
|
-
],
|
|
103
|
-
expectedBehaviour: "A record with no image still produces a readable card, falling back to the site's own artwork rather than to a broken image. A card generator that assumes an image exists throws, and the shared link then has no preview at all.",
|
|
104
|
-
expectedUiState: "The card renders with the listing's title over the site's default artwork. A broken image, an error page or a 500 are all findings.",
|
|
105
|
-
endResult: "Read-only.",
|
|
106
|
-
},
|
|
107
|
-
};
|