@faststore/core 4.8.0-dev.7 → 4.8.0-dev.8

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.
@@ -1,9 +1,9 @@
1
1
 
2
- > @faststore/core@4.8.0-dev.6 generate /home/runner/work/faststore/faststore/packages/core
2
+ > @faststore/core@4.8.0-dev.7 generate /home/runner/work/faststore/faststore/packages/core
3
3
  > pnpm run gen-types && pnpm run cache-graphql
4
4
 
5
5
 
6
- > @faststore/core@4.8.0-dev.6 gen-types /home/runner/work/faststore/faststore/packages/core
6
+ > @faststore/core@4.8.0-dev.7 gen-types /home/runner/work/faststore/faststore/packages/core
7
7
  > node ../cli/bin/run generate-types .
8
8
 
9
9
  [STARTED] Parse Configuration
@@ -19,7 +19,7 @@
19
19
  [COMPLETED] Generate to @generated/
20
20
  [COMPLETED] Generate outputs
21
21
 
22
- > @faststore/core@4.8.0-dev.6 cache-graphql /home/runner/work/faststore/faststore/packages/core
22
+ > @faststore/core@4.8.0-dev.7 cache-graphql /home/runner/work/faststore/faststore/packages/core
23
23
  > node ../cli/bin/run cache-graphql --config=./discovery.config.default.js --queries=./@generated/persisted-documents.json
24
24
 
25
25
  [Info] - Config file location: /home/runner/work/faststore/faststore/packages/core/discovery.config.default.js
@@ -1,5 +1,5 @@
1
1
 
2
- > @faststore/core@4.8.0-dev.6 test /home/runner/work/faststore/faststore/packages/core
2
+ > @faststore/core@4.8.0-dev.7 test /home/runner/work/faststore/faststore/packages/core
3
3
  > vitest run
4
4
 
5
5
 
@@ -10,16 +10,17 @@ Not implemented: navigation to another Document
10
10
  Browserslist: browsers data (caniuse-lite) is 7 months old. Please run:
11
11
  npx update-browserslist-db@latest
12
12
  Why you should do it regularly: https://github.com/browserslist/update-db#readme
13
- ✓  browser  test/sdk/ui/useScrollRestoration.browser.test.ts (43 tests) 837ms
14
- ✓  browser  test/components/CartRecommendationShelf/CartRecommendationShelf.browser.test.tsx (13 tests) 412ms
15
- ✓  browser  test/components/account/cards/MyAccountListCards.browser.test.tsx (14 tests) 1807ms
16
- ✓ shows the tab bar and renders Personal cards by default  601ms
17
- ✓ paginates when there are more than 25 cards  324ms
18
- ✓  browser  test/sdk/localization/useBindingSelector.browser.test.tsx (9 tests) 130ms
19
- ✓  browser  test/components/account/ContractSwitcher.browser.test.tsx (13 tests) 1943ms
20
- ✓ shows an error state when the list fails to load  610ms
21
- ✓  browser  test/components/ui/ProductGallery/GalleryPageHeightLock.browser.test.tsx (8 tests) 240ms
22
- ✓  browser  test/sdk/session/reconcileSessionLocale.browser.test.ts (5 tests) 17ms
13
+ ✓  browser  test/sdk/ui/useScrollRestoration.browser.test.ts (43 tests) 1248ms
14
+ ✓  browser  test/components/CartRecommendationShelf/CartRecommendationShelf.browser.test.tsx (13 tests) 572ms
15
+ ✓  browser  test/components/account/cards/MyAccountListCards.browser.test.tsx (16 tests) 2754ms
16
+ ✓ shows the tab bar and renders Personal cards by default  832ms
17
+ ✓ paginates when there are more than 25 cards  601ms
18
+ ✓  browser  test/sdk/localization/useBindingSelector.browser.test.tsx (9 tests) 222ms
19
+ ✓  browser  test/components/ui/ProductGallery/GalleryPageHeightLock.browser.test.tsx (8 tests) 264ms
20
+ ✓  browser  test/components/account/ContractSwitcher.browser.test.tsx (13 tests) 2747ms
21
+ ✓ shows an error state when the list fails to load  636ms
22
+ ✓ requires selecting a contract before Confirm is enabled, then switches (REQ-03)  386ms
23
+ ✓ keeps Confirm disabled when switching is unavailable  369ms
23
24
  stderr | test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx
24
25
  Error in optimistic validation: TypeError: Failed to parse URL from /api/graphql?operationName=ValidateCartMutation&operationHash=3c71b0d3fc2bade14df68abfa271858beb361b12
25
26
   at node:internal/deps/undici/undici:16416:13
@@ -46,12 +47,13 @@ Browserslist: browsers data (caniuse-lite) is 7 months old. Please run:
46
47
  }
47
48
  }
48
49
 
50
+ ✓  browser  test/sdk/session/reconcileSessionLocale.browser.test.ts (5 tests) 19ms
49
51
  stderr | test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx > RecommendationShelf > renders nothing when there is an error
50
52
  Error fetching recommendations undefined boom for campaign vrn:recommendations:acc:rec-top-items-v2:campaign-1
51
53
 
52
- ✓  browser  test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx (8 tests) 141ms
53
- ✓  browser  test/sdk/recommendations/useRecommendationShelf.browser.test.tsx (12 tests) 96ms
54
- ✓  browser  test/components/CartSidebar/CartSidebar.browser.test.tsx (5 tests) 97ms
54
+ ✓  browser  test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx (8 tests) 268ms
55
+ ✓  browser  test/sdk/recommendations/useRecommendationShelf.browser.test.tsx (12 tests) 143ms
56
+ ✓  browser  test/components/CartSidebar/CartSidebar.browser.test.tsx (5 tests) 117ms
55
57
  stderr | test/pages/password-protection.browser.test.tsx > PasswordProtectionLogin > posts the password and redirects to the requested return path
56
58
  Warning: An update to PasswordProtectionLogin inside a test was not wrapped in act(...).
57
59
 
@@ -137,7 +139,6 @@ act(() => {
137
139
  This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
138
140
  at PasswordProtectionLogin (/home/runner/work/faststore/faststore/packages/core/src/pages/password-protection/index.tsx:19:69)
139
141
 
140
- ✓  browser  test/sdk/session/getInitialSession.browser.test.ts (6 tests) 8ms
141
142
  stderr | test/pages/password-protection.browser.test.tsx > PasswordProtectionLogin > uses the fallback invalid-password message when API omits an error
142
143
  Warning: An update to PasswordProtectionLogin inside a test was not wrapped in act(...).
143
144
 
@@ -234,6 +235,8 @@ act(() => {
234
235
  This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
235
236
  at PasswordProtectionLogin (/home/runner/work/faststore/faststore/packages/core/src/pages/password-protection/index.tsx:19:69)
236
237
 
238
+ ✓  browser  test/components/account/OrganizationDrawer.browser.test.tsx (5 tests) 1005ms
239
+ ✓ renders the menu view with contract details and manage footer  538ms
237
240
  stderr | test/pages/password-protection.browser.test.tsx > PasswordProtectionLogin > shows service unavailable when the login request fails
238
241
  Warning: An update to PasswordProtectionLogin inside a test was not wrapped in act(...).
239
242
 
@@ -282,11 +285,10 @@ act(() => {
282
285
  This ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act
283
286
  at PasswordProtectionLogin (/home/runner/work/faststore/faststore/packages/core/src/pages/password-protection/index.tsx:19:69)
284
287
 
285
- ✓  browser  test/pages/password-protection.browser.test.tsx (6 tests) 619ms
286
- ✓ renders the password protection form  351ms
287
- ✓  browser  test/components/account/OrganizationDrawer.browser.test.tsx (5 tests) 682ms
288
- ✓ renders the menu view with contract details and manage footer  326ms
289
- ✓  browser  test/sdk/account/changeContractToken.browser.test.ts (9 tests) 40ms
288
+ ✓  browser  test/pages/password-protection.browser.test.tsx (6 tests) 1068ms
289
+ ✓ renders the password protection form  418ms
290
+ ✓  browser  test/sdk/session/getInitialSession.browser.test.ts (6 tests) 16ms
291
+ ✓  browser  test/sdk/account/changeContractToken.browser.test.ts (9 tests) 23ms
290
292
  stderr | test/sdk/localization/store-url.browser.test.ts
291
293
  Error in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
292
294
  at waitForSessionValidated (/home/runner/work/faststore/faststore/packages/core/src/sdk/cart/waitForSessionValidated.ts:16:32)
@@ -303,13 +305,13 @@ This ensures that you're testing the behavior the user would see in the browser.
303
305
  at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
304
306
   at processTicksAndRejections (node:internal/process/task_queues:103:5)
305
307
 
306
- ✓  browser  test/sdk/localization/store-url.browser.test.ts (3 tests) 4ms
307
- ✓  browser  test/sdk/account/useAvailableContracts.browser.test.ts (6 tests) 23ms
308
- ✓  browser  test/components/cms/RenderSections.browser.test.tsx (5 tests) 71ms
309
- ✓  browser  test/components/templates/SearchPage/SearchWrapper.browser.test.tsx (3 tests) 30ms
310
- ✓  browser  test/sdk/recommendations/useRecommendationShelf.sessionFallback.browser.test.tsx (2 tests) 120ms
311
- ✓  browser  test/sdk/account/useSwitchContract.browser.test.ts (4 tests) 25ms
312
- ✓  browser  test/components/CartRecommendationShelf/CartRecommendationProductCard.browser.test.tsx (3 tests) 42ms
308
+ ✓  browser  test/sdk/localization/store-url.browser.test.ts (3 tests) 6ms
309
+ ✓  browser  test/components/cms/RenderSections.browser.test.tsx (5 tests) 94ms
310
+ ✓  browser  test/sdk/account/useAvailableContracts.browser.test.ts (6 tests) 33ms
311
+ ✓  browser  test/components/templates/SearchPage/SearchWrapper.browser.test.tsx (3 tests) 41ms
312
+ ✓  browser  test/sdk/account/useSwitchContract.browser.test.ts (4 tests) 35ms
313
+ ✓  browser  test/sdk/recommendations/useRecommendationShelf.sessionFallback.browser.test.tsx (2 tests) 136ms
314
+ ✓  browser  test/components/CartRecommendationShelf/CartRecommendationProductCard.browser.test.tsx (3 tests) 71ms
313
315
  stderr | test/components/account/doLogout.browser.test.ts
314
316
  Error in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
315
317
  at waitForSessionValidated (/home/runner/work/faststore/faststore/packages/core/src/sdk/cart/waitForSessionValidated.ts:16:32)
@@ -318,11 +320,11 @@ This ensures that you're testing the behavior the user would see in the browser.
318
320
  at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
319
321
   at processTicksAndRejections (node:internal/process/task_queues:103:5)
320
322
 
321
- ✓  browser  test/components/account/doLogout.browser.test.ts (1 test) 21ms
322
- ✓  browser  test/components/ui/LocalizationButton.browser.test.tsx (3 tests) 40ms
323
- ✓  browser  test/components/sections/Account/AccountListCards.browser.test.tsx (3 tests) 62ms
324
- ✓  browser  test/components/account/OrganizationDrawerHeader.browser.test.tsx (3 tests) 220ms
325
- ✓  browser  test/components/account/OrganizationDrawerFooter.browser.test.tsx (3 tests) 230ms
323
+ ✓  browser  test/components/account/doLogout.browser.test.ts (1 test) 45ms
324
+ ✓  browser  test/components/ui/LocalizationButton.browser.test.tsx (3 tests) 51ms
325
+ ✓  browser  test/components/sections/Account/AccountListCards.browser.test.tsx (3 tests) 87ms
326
+ ✓  browser  test/components/account/OrganizationDrawerHeader.browser.test.tsx (3 tests) 292ms
327
+ ✓  browser  test/components/account/OrganizationDrawerFooter.browser.test.tsx (3 tests) 270ms
326
328
  stderr | test/sdk/account/clearPersistedSessionState.browser.test.ts
327
329
  Error in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
328
330
  at waitForSessionValidated (/home/runner/work/faststore/faststore/packages/core/src/sdk/cart/waitForSessionValidated.ts:16:32)
@@ -331,11 +333,12 @@ This ensures that you're testing the behavior the user would see in the browser.
331
333
  at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
332
334
   at processTicksAndRejections (node:internal/process/task_queues:103:5)
333
335
 
334
- ✓  browser  test/sdk/account/clearPersistedSessionState.browser.test.ts (1 test) 6ms
335
- ✓  browser  test/utils/isLocalHost.browser.test.ts (3 tests) 4ms
336
- ✓  browser  test/sdk/session/reconcileSessionLocale.disabled.browser.test.ts (1 test) 3ms
337
- ✓  node  test/utils/localization/bindingPaths.test.ts (71 tests) 12ms
338
- ✓  node  test/server/password-protection-service.test.ts (22 tests) 29ms
336
+ ✓  browser  test/sdk/account/clearPersistedSessionState.browser.test.ts (1 test) 9ms
337
+ ✓  browser  test/utils/isLocalHost.browser.test.ts (3 tests) 5ms
338
+ ✓  browser  test/sdk/session/reconcileSessionLocale.disabled.browser.test.ts (1 test) 4ms
339
+ ✓  node  test/utils/localization/bindingPaths.test.ts (71 tests) 25ms
340
+ ✓  browser  test/components/skeletons/ProductGridSkeleton.browser.test.tsx (2 tests) 44ms
341
+ ✓  node  test/server/password-protection-service.test.ts (22 tests) 36ms
339
342
  stderr | test/sdk/account/refreshToken.browser.test.ts
340
343
  Error in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
341
344
  at waitForSessionValidated (/home/runner/work/faststore/faststore/packages/core/src/sdk/cart/waitForSessionValidated.ts:16:32)
@@ -344,12 +347,11 @@ This ensures that you're testing the behavior the user would see in the browser.
344
347
  at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
345
348
   at processTicksAndRejections (node:internal/process/task_queues:103:5)
346
349
 
347
- ✓  browser  test/components/skeletons/ProductGridSkeleton.browser.test.tsx (2 tests) 34ms
348
- ✓  browser  test/sdk/account/refreshToken.browser.test.ts (1 test) 4ms
349
- ✓  node  test/utils/match-url.test.ts (10 tests) 8ms
350
- ✓  node  test/sdk/localization/useBindingSelector.test.tsx (22 tests) 12ms
351
- ✓  node  test/pages/api/unlock.test.ts (15 tests) 140ms
352
- ✓  node  test/sdk/localization/bindingSelector.test.ts (18 tests) 8ms
350
+ ✓  browser  test/sdk/account/refreshToken.browser.test.ts (1 test) 6ms
351
+ ✓  node  test/utils/match-url.test.ts (10 tests) 10ms
352
+ ✓  node  test/sdk/localization/useBindingSelector.test.tsx (22 tests) 18ms
353
+ ✓  node  test/pages/api/unlock.test.ts (15 tests) 175ms
354
+ ✓  node  test/sdk/localization/bindingSelector.test.ts (18 tests) 12ms
353
355
  stderr | test/components/search/SearchInputComponent.test.tsx
354
356
  Warning: forwardRef render functions accept exactly two parameters: props and ref. Did you forget to use the ref parameter?
355
357
 
@@ -413,19 +415,19 @@ Warning: React does not recognize the `providerProps` prop on a DOM element. If
413
415
  at Suspense
414
416
  at Wrapper (/home/runner/work/faststore/faststore/packages/core/test/components/search/SearchInputComponent.test.tsx:106:20)
415
417
 
416
- ✓  node  test/components/search/SearchInputComponent.test.tsx (6 tests) 62ms
417
- ✓  node  test/sdk/search/useSearchHistory.test.ts (13 tests) 38ms
418
- ✓  node  test/utils/cookieCacheBusting.test.ts (10 tests) 10ms
418
+ ✓  node  test/components/search/SearchInputComponent.test.tsx (6 tests) 80ms
419
+ ✓  node  test/sdk/search/useSearchHistory.test.ts (13 tests) 59ms
420
+ ✓  node  test/utils/cookieCacheBusting.test.ts (10 tests) 13ms
419
421
  stderr | test/pages/pvt/account/cards/index.test.ts > Cards page getServerSideProps > redirects to /pvt/account/403 when the query fails with 401/403
420
422
  { extensions: { status: 401 } }
421
423
 
422
424
  stderr | test/pages/pvt/account/cards/index.test.ts > Cards page getServerSideProps > renders the error state (no redirect) when the query fails with a non-auth status
423
425
  { extensions: { status: 502 } }
424
426
 
425
- ✓  node  test/pages/pvt/account/cards/index.test.ts (8 tests) 8ms
426
- ✓  node  test/utils/clearCookies.test.ts (20 tests) 24ms
427
- ✓  node  test/experimental/myAccountCmsServerSideProps.test.ts (5 tests) 7ms
428
- ✓  node  test/components/quotes/MyAccountListQuotesTable.test.tsx (12 tests) 314ms
427
+ ✓  node  test/pages/pvt/account/cards/index.test.ts (8 tests) 9ms
428
+ ✓  node  test/utils/clearCookies.test.ts (20 tests) 28ms
429
+ ✓  node  test/experimental/myAccountCmsServerSideProps.test.ts (5 tests) 11ms
430
+ ✓  node  test/components/quotes/MyAccountListQuotesTable.test.tsx (12 tests) 456ms
429
431
  stderr | test/pages/api/graphql.test.ts > /api/graphql error status propagation > propagates the upstream 400 from a wrapped BadRequestError instead of 500
430
432
  Graphql execution returned with error: [
431
433
  {
@@ -518,69 +520,70 @@ Warning: React does not recognize the `providerProps` prop on a DOM element. If
518
520
  at file:///home/runner/work/faststore/faststore/node_modules/.pnpm/@vitest+runner@4.0.18/node_modules/@vitest/runner/dist/index.js:1653:37
519
521
  at Traces.$ (file:///home/runner/work/faststore/faststore/node_modules/.pnpm/vitest@4.0.18_@opentelemetry+api@1.9.0_@types+node@20.19.13_jiti@2.6.1_jsdom@27.4.0_sas_13be941c57d55f08f06eeaf1c180ddfe/node_modules/vitest/dist/chunks/traces.CCmnQaNT.js:142:27)
520
522
 
521
- ✓  node  test/pages/api/graphql.test.ts (17 tests) 19ms
523
+ ✓  node  test/pages/api/graphql.test.ts (17 tests) 25ms
524
+ ✓  node  test/components/quotes/MyAccountListQuotes.test.tsx (9 tests) 840ms
525
+ ✓ navigates with the search term on blur  364ms
526
+ ✓ navigates without a label param when the search is cleared  359ms
522
527
  stderr | test/sdk/account/useSetPassword.test.ts > useSetPassword > maps wrongcredentials error responses to the existing message
523
528
  Set password request failed: Bad Request
524
529
 
525
- ✓  node  test/sdk/account/useSetPassword.test.ts (6 tests) 22ms
526
- ✓  node  test/components/quotes/quoteFilters.test.ts (23 tests) 22ms
527
- ✓  node  test/components/quotes/MyAccountListQuotes.test.tsx (9 tests) 796ms
528
- ✓ navigates with the search term on blur  358ms
529
- ✓ navigates without a label param when the search is cleared  357ms
530
- ✓  node  test/sdk/orderEntry/useOrderEntryOperation.test.ts (8 tests) 37ms
531
- ✓  node  test/utils/multipleTemplates.test.ts (8 tests) 4ms
532
- ✓  node  test/utils/localization/localizeRedirectDestination.test.ts (11 tests) 5ms
533
- ✓  node  test/utils/localization/hreflang.test.ts (8 tests) 5ms
534
- ✓  node  test/sdk/account/getMyAccountRoutes.test.ts (12 tests) 11ms
535
- ✓  node  test/sdk/orderEntry/useOrderEntryUpload.test.ts (8 tests) 38ms
536
- ✓  node  test/sdk/redirects/index.test.ts (7 tests) 39ms
537
- ✓  node  test/components/quotes/MyAccountQuotesFilterSlider.test.tsx (5 tests) 119ms
538
- ✓  node  test/utils/productJsonLd.test.ts (17 tests) 8ms
539
- ✓  node  test/proxy.localization.test.ts (5 tests) 29ms
540
- ✓  node  test/sdk/graphql/retryPolicy.test.ts (18 tests) 14ms
541
- ✓  node  test/sdk/orderEntry/useOrderEntry.test.ts (8 tests) 30ms
542
- ✓  node  test/server/index.test.ts (7 tests) 794ms
543
- ✓ should handle options and execute  376ms
544
- ✓  node  test/sdk/session/syncSalesChannelFromOrderForm.test.ts (6 tests) 7ms
545
- ✓  node  test/sdk/analytics/useStartRecommendationSession.test.ts (6 tests) 43ms
546
- ✓  node  test/components/quotes/MyAccountQuotesSelectedTags.test.tsx (8 tests) 69ms
547
- ✓  node  test/server/webops-api.test.ts (9 tests) 16ms
548
- ✓  node  test/proxy.test.ts (4 tests) 12ms
549
- ✓  node  test/sdk/orderEntry/useOrderFormItems.test.ts (7 tests) 30ms
550
- ✓  node  test/sdk/cart/waitForSessionValidated.test.ts (5 tests) 11ms
551
- ✓  node  test/sdk/localization/store-url.test.ts (4 tests) 4ms
530
+ ✓  node  test/sdk/account/useSetPassword.test.ts (6 tests) 30ms
531
+ ✓  node  test/components/quotes/quoteFilters.test.ts (23 tests) 41ms
532
+ ✓  node  test/sdk/orderEntry/useOrderEntryOperation.test.ts (8 tests) 41ms
533
+ ✓  node  test/utils/multipleTemplates.test.ts (8 tests) 8ms
534
+ ✓  node  test/utils/localization/localizeRedirectDestination.test.ts (11 tests) 7ms
535
+ ✓  node  test/utils/localization/hreflang.test.ts (8 tests) 7ms
536
+ ✓  node  test/sdk/account/getMyAccountRoutes.test.ts (12 tests) 10ms
537
+ ✓  node  test/sdk/orderEntry/useOrderEntryUpload.test.ts (8 tests) 62ms
538
+ ✓  node  test/sdk/redirects/index.test.ts (7 tests) 51ms
539
+ ✓  node  test/components/quotes/MyAccountQuotesFilterSlider.test.tsx (5 tests) 161ms
540
+ ✓  node  test/utils/productJsonLd.test.ts (17 tests) 12ms
541
+ ✓  node  test/proxy.localization.test.ts (5 tests) 43ms
542
+ ✓  node  test/sdk/orderEntry/useOrderEntry.test.ts (8 tests) 31ms
543
+ ✓  node  test/sdk/graphql/retryPolicy.test.ts (18 tests) 17ms
544
+ ✓  node  test/server/index.test.ts (7 tests) 1124ms
545
+ ✓ should return a valid merged GraphQL schema  359ms
546
+ ✓ should handle options and execute  479ms
547
+ ✓  node  test/sdk/session/syncSalesChannelFromOrderForm.test.ts (6 tests) 10ms
548
+ ✓  node  test/sdk/analytics/useStartRecommendationSession.test.ts (6 tests) 67ms
549
+ ✓  node  test/components/quotes/MyAccountQuotesSelectedTags.test.tsx (8 tests) 120ms
550
+ ✓  node  test/server/webops-api.test.ts (9 tests) 18ms
551
+ ✓  node  test/sdk/orderEntry/useOrderFormItems.test.ts (7 tests) 37ms
552
+ ✓  node  test/proxy.test.ts (4 tests) 33ms
553
+ ✓  node  test/sdk/cart/waitForSessionValidated.test.ts (5 tests) 12ms
554
+ ✓  node  test/sdk/localization/store-url.test.ts (4 tests) 8ms
555
+ ✓  node  test/server/content/service.test.ts (5 tests) 6ms
552
556
  ✓  node  test/server/cms/myAccountDefaultSections.test.ts (7 tests) 6ms
553
- ✓  node  test/server/content/service.test.ts (5 tests) 4ms
554
- ✓  node  test/utils/productJsonLdRendering.test.tsx (4 tests) 9ms
555
- ✓  node  test/server/cms/global.test.ts (3 tests) 4ms
556
- ✓  node  test/sdk/account/refreshToken.test.ts (5 tests) 5ms
557
- ✓  node  test/sdk/auth/useAuth.test.ts (5 tests) 27ms
558
- ✓  node  test/components/quotes/MyAccountQuotesStatusSelector.test.tsx (6 tests) 112ms
559
- ✓  node  test/utils/getRequestHostname.test.ts (12 tests) 4ms
560
- ✓  node  test/server/rootSpan.test.ts (4 tests) 32ms
561
- ✓  node  test/pages/api/preview.test.ts (2 tests) 8ms
562
- ✓  node  test/components/search/SearchInput.test.ts (6 tests) 7ms
563
- ✓  node  test/utils/validateSessionRefreshToken.test.ts (6 tests) 3ms
564
- ✓  node  test/components/account/Layout.test.tsx (6 tests) 58ms
565
- ✓  node  test/sdk/recommendations/vrn.test.ts (5 tests) 4ms
566
- ✓  node  test/server/cms/index.test.ts (2 tests) 4ms
567
- ✓  node  test/utils/retry.test.ts (5 tests) 12ms
568
- ✓  node  test/sdk/account/getB2BSessionClaims.test.ts (4 tests) 3ms
569
- ✓  node  test/utils/unlockResponse.test.ts (11 tests) 3ms
557
+ ✓  node  test/utils/productJsonLdRendering.test.tsx (4 tests) 13ms
558
+ ✓  node  test/sdk/account/refreshToken.test.ts (5 tests) 8ms
559
+ ✓  node  test/server/cms/global.test.ts (3 tests) 6ms
560
+ ✓  node  test/sdk/auth/useAuth.test.ts (5 tests) 32ms
561
+ ✓  node  test/components/quotes/MyAccountQuotesStatusSelector.test.tsx (6 tests) 143ms
562
+ ✓  node  test/utils/getRequestHostname.test.ts (12 tests) 7ms
563
+ ✓  node  test/server/rootSpan.test.ts (4 tests) 41ms
564
+ ✓  node  test/pages/api/preview.test.ts (2 tests) 7ms
565
+ ✓  node  test/components/search/SearchInput.test.ts (6 tests) 8ms
566
+ ✓  node  test/utils/validateSessionRefreshToken.test.ts (6 tests) 6ms
567
+ ✓  node  test/sdk/recommendations/vrn.test.ts (5 tests) 5ms
568
+ ✓  node  test/components/account/Layout.test.tsx (6 tests) 67ms
569
+ ✓  node  test/utils/retry.test.ts (5 tests) 15ms
570
+ ✓  node  test/server/cms/index.test.ts (2 tests) 5ms
571
+ ✓  node  test/sdk/account/getB2BSessionClaims.test.ts (4 tests) 6ms
572
+ ✓  node  test/utils/unlockResponse.test.ts (11 tests) 7ms
570
573
  ✓  node  test/sdk/recommendations/useRecommendations.test.ts (2 tests) 4ms
571
- ✓  node  test/sdk/recommendations/useRecommendationUserId.test.ts (4 tests) 176ms
572
- ✓  node  test/utils/isLocalHost.test.ts (7 tests) 4ms
573
- ✓  node  test/components/account/OrganizationDrawerBody.test.tsx (3 tests) 37ms
574
- ✓  node  test/utils/userOrderStatus.test.ts (3 tests) 3ms
575
- ✓  node  test/utils/getCookie.test.ts (4 tests) 4ms
576
- ✓  node  test/sdk/analytics/utils.test.ts (2 tests) 3ms
577
- ✓  node  test/components/auth/ProfileChallenge.test.tsx (3 tests) 32ms
578
- ✓  node  test/instrumentation.test.ts (3 tests) 3ms
579
- ✓  node  test/sdk/account/clearPersistedSessionState.test.ts (1 test) 6ms
580
- ✓  node  test/components/quotes/MyAccountQuoteStatusBadge.test.tsx (2 tests) 19ms
574
+ ✓  node  test/sdk/recommendations/useRecommendationUserId.test.ts (4 tests) 182ms
575
+ ✓  node  test/utils/isLocalHost.test.ts (7 tests) 5ms
576
+ ✓  node  test/utils/userOrderStatus.test.ts (3 tests) 4ms
577
+ ✓  node  test/components/account/OrganizationDrawerBody.test.tsx (3 tests) 45ms
578
+ ✓  node  test/utils/getCookie.test.ts (4 tests) 6ms
579
+ ✓  node  test/sdk/analytics/utils.test.ts (2 tests) 6ms
580
+ ✓  node  test/instrumentation.test.ts (3 tests) 5ms
581
+ ✓  node  test/components/auth/ProfileChallenge.test.tsx (3 tests) 29ms
582
+ ✓  node  test/sdk/account/clearPersistedSessionState.test.ts (1 test) 15ms
583
+ ✓  node  test/components/quotes/MyAccountQuoteStatusBadge.test.tsx (2 tests) 25ms
581
584
 
582
585
   Test Files  98 passed (98)
583
-  Tests  793 passed (793)
584
-  Start at  17:47:42
585
-  Duration  36.02s (transform 10.49s, setup 0ms, import 32.11s, tests 11.46s, environment 45.03s)
586
+  Tests  795 passed (795)
587
+  Start at  23:27:58
588
+  Duration  50.91s (transform 12.87s, setup 0ms, import 46.91s, tests 16.15s, environment 62.03s)
586
589
 
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [4.8.0-dev.8](https://github.com/vtex/faststore/compare/v4.8.0-dev.7...v4.8.0-dev.8) (2026-09-14)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **core:** align the saved-cards list with the design reference ([#3487](https://github.com/vtex/faststore/issues/3487)) ([0e0d3ea](https://github.com/vtex/faststore/commit/0e0d3eacc23f5d2027ef5f933b03cd8a0338885c))
11
+
6
12
  # [4.8.0-dev.7](https://github.com/vtex/faststore/compare/v4.8.0-dev.6...v4.8.0-dev.7) (2026-09-14)
7
13
 
8
14
  ### Bug Fixes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/core",
3
- "version": "4.8.0-dev.7",
3
+ "version": "4.8.0-dev.8",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -71,11 +71,11 @@
71
71
  "style-loader": "^3.3.1",
72
72
  "swr": "^2.2.5",
73
73
  "use-sync-external-store": "^1.6.0",
74
- "@faststore/api": "4.8.0-dev.7",
75
- "@faststore/diagnostics": "4.8.0-dev.7",
76
- "@faststore/ui": "4.8.0-dev.7",
77
- "@faststore/lighthouse": "4.8.0-dev.7",
78
- "@faststore/sdk": "4.8.0-dev.7"
74
+ "@faststore/api": "4.8.0-dev.8",
75
+ "@faststore/diagnostics": "4.8.0-dev.8",
76
+ "@faststore/lighthouse": "4.8.0-dev.8",
77
+ "@faststore/ui": "4.8.0-dev.8",
78
+ "@faststore/sdk": "4.8.0-dev.8"
79
79
  },
80
80
  "devDependencies": {
81
81
  "@cypress/code-coverage": "^3.12.1",
@@ -350,6 +350,7 @@ export default function MyAccountListCards({
350
350
  />
351
351
 
352
352
  <div
353
+ data-fs-list-cards-panel
353
354
  role={sharedOnly ? undefined : 'tabpanel'}
354
355
  id={sharedOnly ? undefined : PANEL_ID}
355
356
  aria-labelledby={sharedOnly ? undefined : activeTabId}
@@ -52,6 +52,16 @@
52
52
  color: var(--fs-text-link, #0632c1);
53
53
  }
54
54
 
55
+ // The tabpanel wrapper sits between .page and the controls/grid pair, so
56
+ // .page's column gap stops at this element and never separates the search
57
+ // row from the list below it. Carry the same rhythm down one level rather
58
+ // than dropping the wrapper, which owns the tabpanel role the tabs point at.
59
+ [data-fs-list-cards-panel] {
60
+ display: flex;
61
+ flex-direction: column;
62
+ gap: var(--fs-spacing-4, 1.5rem);
63
+ }
64
+
55
65
  [data-fs-list-cards-controls] {
56
66
  display: flex;
57
67
  flex-wrap: wrap;
@@ -84,14 +94,25 @@
84
94
 
85
95
  [data-fs-list-cards-item] {
86
96
  display: flex;
97
+
98
+ // Square tile, per the design reference: brand mark at the top, label and
99
+ // number at the bottom, with the slack between them. `aspect-ratio` sets
100
+ // the preferred box only — a long label still grows the card rather than
101
+ // overflowing it, since `min-height` stays `auto`.
87
102
  flex-direction: column;
88
103
  gap: var(--fs-spacing-1, 0.5rem);
104
+ aspect-ratio: 1;
89
105
  padding: var(--fs-spacing-2, 1rem);
90
106
  border: 1px solid var(--fs-border-color, #d9d9d9);
91
107
  border-radius: var(--fs-border-radius, 0.25rem);
92
108
  }
93
109
 
94
110
  [data-fs-list-cards-item-brand] {
111
+ // Pins the brand mark to the top edge and lets the label and number stay
112
+ // grouped at the bottom, as the design reference has them. `space-between`
113
+ // on the parent cannot express this: with three children it spreads all
114
+ // three evenly and strands the label in the middle of the tile.
115
+ margin-bottom: auto;
95
116
  font-size: 0.875rem;
96
117
  font-weight: 700;
97
118
  }
@@ -298,4 +298,42 @@ describe('MyAccountListCards', () => {
298
298
  fireEvent.click(screen.getByRole('button', { name: 'Try again' }))
299
299
  expect(mockReload).toHaveBeenCalledTimes(1)
300
300
  })
301
+
302
+ // Regression guard for the search/list spacing fix. The stylesheet hangs the
303
+ // column gap off this attribute because .page's own gap stops at this
304
+ // wrapper and never separates the controls row from the list below it.
305
+ // Dropping the attribute collapses that gap back to zero, silently.
306
+ it('marks the panel wrapper that carries the spacing between controls and list', () => {
307
+ const { container } = render(
308
+ <MyAccountListCards
309
+ personalCards={[VISA_PERSONAL]}
310
+ sharedCards={[AMEX_SHARED]}
311
+ hasOrgAssociation
312
+ canViewPersonalCards
313
+ />
314
+ )
315
+
316
+ const panel = container.querySelector('[data-fs-list-cards-panel]')
317
+
318
+ expect(panel).not.toBeNull()
319
+ expect(panel).toHaveAttribute('role', 'tabpanel')
320
+ expect(panel?.querySelector('[data-fs-list-cards-controls]')).not.toBeNull()
321
+ expect(panel?.querySelector('[data-fs-list-cards-grid]')).not.toBeNull()
322
+ })
323
+
324
+ it('keeps the panel marker in the shared-only rendering, which has no tabpanel role', () => {
325
+ const { container } = render(
326
+ <MyAccountListCards
327
+ personalCards={[]}
328
+ sharedCards={[AMEX_SHARED]}
329
+ hasOrgAssociation
330
+ canViewPersonalCards={false}
331
+ />
332
+ )
333
+
334
+ const panel = container.querySelector('[data-fs-list-cards-panel]')
335
+
336
+ expect(panel).not.toBeNull()
337
+ expect(panel).not.toHaveAttribute('role')
338
+ })
301
339
  })