@faststore/core 4.8.1-dev.2 → 4.8.1-dev.3

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.1-dev.1 generate /home/runner/work/faststore/faststore/packages/core
2
+ > @faststore/core@4.8.1-dev.2 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.1-dev.1 gen-types /home/runner/work/faststore/faststore/packages/core
6
+ > @faststore/core@4.8.1-dev.2 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.1-dev.1 cache-graphql /home/runner/work/faststore/faststore/packages/core
22
+ > @faststore/core@4.8.1-dev.2 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.1-dev.1 test /home/runner/work/faststore/faststore/packages/core
2
+ > @faststore/core@4.8.1-dev.2 test /home/runner/work/faststore/faststore/packages/core
3
3
  > vitest run
4
4
 
5
5
 
@@ -10,20 +10,21 @@ 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) 1066ms
14
- ✓  browser  test/components/account/cards/MyAccountListCards.browser.test.tsx (16 tests) 2228ms
15
- ✓ shows the tab bar and renders Personal cards by default  862ms
16
- ✓ paginates when there are more than 25 cards  310ms
17
- ✓  browser  test/components/account/orders/BuyingPolicyAlert.browser.test.tsx (13 tests) 2131ms
18
- ✓ opens the reject confirmation modal with the default English copy  850ms
19
- ✓ opens the reject confirmation modal with CMS-provided labels  365ms
20
- ✓  browser  test/components/CartRecommendationShelf/CartRecommendationShelf.browser.test.tsx (13 tests) 208ms
21
- ✓  browser  test/components/account/ContractSwitcher.browser.test.tsx (14 tests) 1758ms
22
- ✓ shows an error state when the list fails to load  667ms
23
- ✓  browser  test/components/account/OrganizationDrawer.browser.test.tsx (10 tests) 1228ms
24
- ✓ renders the menu view with contract details and manage footer  613ms
25
- ✓  browser  test/sdk/localization/useBindingSelector.browser.test.tsx (9 tests) 106ms
26
- ✓  browser  test/components/ui/ProductGallery/GalleryPageHeightLock.browser.test.tsx (8 tests) 93ms
13
+ ✓  browser  test/sdk/ui/useScrollRestoration.browser.test.ts (43 tests) 1217ms
14
+ ✓  browser  test/components/account/orders/BuyingPolicyAlert.browser.test.tsx (13 tests) 3095ms
15
+ ✓ opens the reject confirmation modal with the default English copy  1205ms
16
+ ✓ opens the reject confirmation modal with CMS-provided labels  491ms
17
+ ✓  browser  test/components/account/cards/MyAccountListCards.browser.test.tsx (16 tests) 3349ms
18
+ ✓ shows the tab bar and renders Personal cards by default  1414ms
19
+ ✓ paginates when there are more than 25 cards  549ms
20
+ ✓  browser  test/components/account/ContractSwitcher.browser.test.tsx (14 tests) 2091ms
21
+ ✓ shows an error state when the list fails to load  716ms
22
+ ✓  browser  test/components/CartRecommendationShelf/CartRecommendationShelf.browser.test.tsx (13 tests) 481ms
23
+ ✓  browser  test/components/account/OrganizationDrawer.browser.test.tsx (10 tests) 1375ms
24
+ ✓ renders the menu view with contract details and manage footer  958ms
25
+ ✓  browser  test/sdk/localization/useBindingSelector.browser.test.tsx (9 tests) 140ms
26
+ ✓  browser  test/components/ui/ProductGallery/GalleryPageHeightLock.browser.test.tsx (8 tests) 87ms
27
+ ✓  browser  test/sdk/session/reconcileSessionLocale.browser.test.ts (5 tests) 9ms
27
28
  stderr | test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx
28
29
  Error in optimistic validation: TypeError: Failed to parse URL from /api/graphql?operationName=ValidateCartMutation&operationHash=3c71b0d3fc2bade14df68abfa271858beb361b12
29
30
   at node:internal/deps/undici/undici:16416:13
@@ -53,11 +54,10 @@ Browserslist: browsers data (caniuse-lite) is 7 months old. Please run:
53
54
  stderr | test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx > RecommendationShelf > renders nothing when there is an error
54
55
  Error fetching recommendations undefined boom for campaign vrn:recommendations:acc:rec-top-items-v2:campaign-1
55
56
 
56
- ✓  browser  test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx (8 tests) 133ms
57
- ✓  browser  test/sdk/session/reconcileSessionLocale.browser.test.ts (5 tests) 18ms
58
- ✓  browser  test/sdk/recommendations/useRecommendationShelf.browser.test.tsx (12 tests) 38ms
59
- ✓  browser  test/components/CartSidebar/CartSidebar.browser.test.tsx (5 tests) 97ms
60
- ✓  browser  test/components/sections/Account/AccountOrderDetails.browser.test.tsx (4 tests) 49ms
57
+ ✓  browser  test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx (8 tests) 142ms
58
+ ✓  browser  test/sdk/recommendations/useRecommendationShelf.browser.test.tsx (12 tests) 108ms
59
+ ✓  browser  test/components/CartSidebar/CartSidebar.browser.test.tsx (5 tests) 112ms
60
+ ✓  browser  test/components/sections/Account/AccountOrderDetails.browser.test.tsx (4 tests) 131ms
61
61
  stderr | test/pages/password-protection.browser.test.tsx > PasswordProtectionLogin > posts the password and redirects to the requested return path
62
62
  Warning: An update to PasswordProtectionLogin inside a test was not wrapped in act(...).
63
63
 
@@ -95,8 +95,6 @@ act(() => {
95
95
  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
96
96
  at PasswordProtectionLogin (/home/runner/work/faststore/faststore/packages/core/src/pages/password-protection/index.tsx:19:69)
97
97
 
98
- ✓  browser  test/components/navigation/Navbar.browser.test.tsx (3 tests) 46ms
99
- ✓  browser  test/sdk/session/getInitialSession.browser.test.ts (6 tests) 7ms
100
98
  stderr | test/pages/password-protection.browser.test.tsx > PasswordProtectionLogin > defaults returnTo to root and shows API validation errors
101
99
  Warning: An update to PasswordProtectionLogin inside a test was not wrapped in act(...).
102
100
 
@@ -289,8 +287,12 @@ act(() => {
289
287
  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
290
288
  at PasswordProtectionLogin (/home/runner/work/faststore/faststore/packages/core/src/pages/password-protection/index.tsx:19:69)
291
289
 
292
- ✓  browser  test/pages/password-protection.browser.test.tsx (6 tests) 420ms
293
- ✓  browser  test/sdk/account/useSwitchContract.browser.test.ts (5 tests) 34ms
290
+ ✓  browser  test/pages/password-protection.browser.test.tsx (6 tests) 681ms
291
+ ✓ renders the password protection form  310ms
292
+ ✓  browser  test/components/navigation/Navbar.browser.test.tsx (3 tests) 54ms
293
+ ✓  browser  test/sdk/session/getInitialSession.browser.test.ts (6 tests) 9ms
294
+ ✓  browser  test/sdk/account/useSwitchContract.browser.test.ts (5 tests) 39ms
295
+ ✓  browser  test/components/account/OrganizationDrawerFooter.browser.test.tsx (8 tests) 400ms
294
296
  stderr | test/components/cms/RenderSections.browser.test.tsx
295
297
  Error in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
296
298
  at waitForSessionValidated (/home/runner/work/faststore/faststore/packages/core/src/sdk/cart/waitForSessionValidated.ts:16:32)
@@ -299,9 +301,8 @@ This ensures that you're testing the behavior the user would see in the browser.
299
301
  at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
300
302
   at processTicksAndRejections (node:internal/process/task_queues:103:5)
301
303
 
302
- ✓  browser  test/components/account/OrganizationDrawerFooter.browser.test.tsx (8 tests) 263ms
303
- ✓  browser  test/components/cms/RenderSections.browser.test.tsx (5 tests) 66ms
304
- ✓  browser  test/components/navigation/NavbarSlider.browser.test.tsx (2 tests) 33ms
304
+ ✓  browser  test/components/cms/RenderSections.browser.test.tsx (5 tests) 59ms
305
+ ✓  browser  test/components/navigation/NavbarSlider.browser.test.tsx (2 tests) 49ms
305
306
  stderr | test/sdk/localization/store-url.browser.test.ts
306
307
  Error in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
307
308
  at waitForSessionValidated (/home/runner/work/faststore/faststore/packages/core/src/sdk/cart/waitForSessionValidated.ts:16:32)
@@ -310,14 +311,14 @@ This ensures that you're testing the behavior the user would see in the browser.
310
311
  at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
311
312
   at processTicksAndRejections (node:internal/process/task_queues:103:5)
312
313
 
313
- ✓  browser  test/components/account/Menu.browser.test.tsx (6 tests) 252ms
314
- ✓  browser  test/sdk/localization/store-url.browser.test.ts (3 tests) 5ms
315
- ✓  browser  test/sdk/account/useAvailableContracts.browser.test.ts (6 tests) 32ms
316
- ✓  browser  test/components/templates/SearchPage/SearchWrapper.browser.test.tsx (3 tests) 31ms
317
- ✓  browser  test/sdk/recommendations/useRecommendationShelf.sessionFallback.browser.test.tsx (2 tests) 129ms
318
- ✓  browser  test/components/navigation/NavbarAccountArea.browser.test.tsx (4 tests) 49ms
319
- ✓  browser  test/sdk/account/changeContractToken.browser.test.ts (9 tests) 17ms
320
- ✓  browser  test/components/CartRecommendationShelf/CartRecommendationProductCard.browser.test.tsx (3 tests) 35ms
314
+ ✓  browser  test/sdk/localization/store-url.browser.test.ts (3 tests) 7ms
315
+ ✓  browser  test/components/account/Menu.browser.test.tsx (6 tests) 341ms
316
+ ✓  browser  test/sdk/account/useAvailableContracts.browser.test.ts (6 tests) 38ms
317
+ ✓  browser  test/components/templates/SearchPage/SearchWrapper.browser.test.tsx (3 tests) 36ms
318
+ ✓  browser  test/sdk/recommendations/useRecommendationShelf.sessionFallback.browser.test.tsx (2 tests) 134ms
319
+ ✓  browser  test/sdk/account/changeContractToken.browser.test.ts (9 tests) 16ms
320
+ ✓  browser  test/components/navigation/NavbarAccountArea.browser.test.tsx (4 tests) 97ms
321
+ ✓  browser  test/components/CartRecommendationShelf/CartRecommendationProductCard.browser.test.tsx (3 tests) 71ms
321
322
  stderr | test/components/account/doLogout.browser.test.ts
322
323
  Error in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
323
324
  at waitForSessionValidated (/home/runner/work/faststore/faststore/packages/core/src/sdk/cart/waitForSessionValidated.ts:16:32)
@@ -326,7 +327,7 @@ This ensures that you're testing the behavior the user would see in the browser.
326
327
  at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
327
328
   at processTicksAndRejections (node:internal/process/task_queues:103:5)
328
329
 
329
- ✓  browser  test/components/account/doLogout.browser.test.ts (1 test) 15ms
330
+ ✓  browser  test/components/account/doLogout.browser.test.ts (1 test) 23ms
330
331
  stderr | test/sdk/account/clearPersistedSessionState.browser.test.ts
331
332
  Error in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
332
333
  at waitForSessionValidated (/home/runner/work/faststore/faststore/packages/core/src/sdk/cart/waitForSessionValidated.ts:16:32)
@@ -335,24 +336,24 @@ This ensures that you're testing the behavior the user would see in the browser.
335
336
  at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
336
337
   at processTicksAndRejections (node:internal/process/task_queues:103:5)
337
338
 
338
- ✓  browser  test/sdk/account/clearPersistedSessionState.browser.test.ts (4 tests) 16ms
339
- ✓  browser  test/components/ui/LocalizationButton.browser.test.tsx (3 tests) 29ms
340
- ✓  browser  test/components/sections/Account/AccountOrderDelivery.browser.test.tsx (2 tests) 83ms
341
- ✓  browser  test/components/account/orders/DeliveryOptionAccordion.browser.test.tsx (2 tests) 71ms
342
- ✓  browser  test/components/sections/Account/AccountOrderStatus.browser.test.tsx (3 tests) 88ms
343
- ✓  browser  test/components/sections/Account/AccountListCards.browser.test.tsx (3 tests) 61ms
344
- ✓  browser  test/components/sections/Account/AccountOrdersList.browser.test.tsx (2 tests) 30ms
345
- ✓  browser  test/components/account/OrganizationDrawerHeader.browser.test.tsx (3 tests) 218ms
346
- ✓  browser  test/components/account/orders/SummaryCard.browser.test.tsx (2 tests) 61ms
347
- ✓  browser  test/components/account/orders/DeliveryOptionAccordionDeliveryInfo.browser.test.tsx (1 test) 34ms
348
- ✓  browser  test/components/account/OrganizationSignInButton.browser.test.tsx (2 tests) 194ms
349
- ✓  browser  test/components/account/orders/StatusCard.browser.test.tsx (2 tests) 87ms
350
- ✓  browser  test/utils/isLocalHost.browser.test.ts (3 tests) 4ms
351
- ✓  browser  test/sdk/session/reconcileSessionLocale.disabled.browser.test.ts (1 test) 3ms
352
- ✓  browser  test/components/account/orders/DeliveryOptionAccordionProducts.browser.test.tsx (1 test) 33ms
353
- ✓  browser  test/components/account/orders/DeliveryCard.browser.test.tsx (1 test) 38ms
354
- ✓  browser  test/components/skeletons/ProductGridSkeleton.browser.test.tsx (2 tests) 32ms
355
- ✓  node  test/utils/localization/bindingPaths.test.ts (71 tests) 20ms
339
+ ✓  browser  test/components/ui/LocalizationButton.browser.test.tsx (3 tests) 40ms
340
+ ✓  browser  test/sdk/account/clearPersistedSessionState.browser.test.ts (4 tests) 29ms
341
+ ✓  browser  test/components/sections/Account/AccountOrderDelivery.browser.test.tsx (2 tests) 122ms
342
+ ✓  browser  test/components/account/orders/DeliveryOptionAccordion.browser.test.tsx (2 tests) 94ms
343
+ ✓  browser  test/components/sections/Account/AccountOrderStatus.browser.test.tsx (3 tests) 132ms
344
+ ✓  browser  test/components/sections/Account/AccountListCards.browser.test.tsx (3 tests) 91ms
345
+ ✓  browser  test/components/sections/Account/AccountOrdersList.browser.test.tsx (2 tests) 27ms
346
+ ✓  browser  test/components/account/OrganizationDrawerHeader.browser.test.tsx (3 tests) 344ms
347
+ ✓  browser  test/components/account/orders/DeliveryOptionAccordionDeliveryInfo.browser.test.tsx (1 test) 32ms
348
+ ✓  browser  test/components/account/orders/SummaryCard.browser.test.tsx (2 tests) 100ms
349
+ ✓  browser  test/components/account/OrganizationSignInButton.browser.test.tsx (2 tests) 250ms
350
+ ✓  browser  test/utils/isLocalHost.browser.test.ts (3 tests) 5ms
351
+ ✓  browser  test/sdk/session/reconcileSessionLocale.disabled.browser.test.ts (1 test) 4ms
352
+ ✓  browser  test/components/account/orders/StatusCard.browser.test.tsx (2 tests) 138ms
353
+ ✓  browser  test/components/account/orders/DeliveryCard.browser.test.tsx (1 test) 47ms
354
+ ✓  browser  test/components/account/orders/DeliveryOptionAccordionProducts.browser.test.tsx (1 test) 49ms
355
+ ✓  browser  test/components/skeletons/ProductGridSkeleton.browser.test.tsx (2 tests) 40ms
356
+ ✓  node  test/utils/localization/bindingPaths.test.ts (71 tests) 28ms
356
357
  stderr | test/sdk/account/refreshToken.browser.test.ts
357
358
  Error in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
358
359
  at waitForSessionValidated (/home/runner/work/faststore/faststore/packages/core/src/sdk/cart/waitForSessionValidated.ts:16:32)
@@ -361,14 +362,14 @@ This ensures that you're testing the behavior the user would see in the browser.
361
362
  at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
362
363
   at processTicksAndRejections (node:internal/process/task_queues:103:5)
363
364
 
364
- ✓  browser  test/sdk/account/refreshToken.browser.test.ts (1 test) 5ms
365
- ✓  node  test/server/password-protection-service.test.ts (22 tests) 43ms
366
- ✓  node  test/pages/api/switch-contract.test.ts (25 tests) 67ms
367
- ✓  browser  test/components/account/orders/FilterFacetPendingApproval.browser.test.tsx (1 test) 160ms
368
- ✓  node  test/utils/match-url.test.ts (10 tests) 7ms
369
- ✓  node  test/pages/api/unlock.test.ts (15 tests) 109ms
365
+ ✓  node  test/server/password-protection-service.test.ts (22 tests) 38ms
366
+ ✓  browser  test/sdk/account/refreshToken.browser.test.ts (1 test) 4ms
367
+ ✓  node  test/pages/api/switch-contract.test.ts (25 tests) 109ms
368
+ ✓  browser  test/components/account/orders/FilterFacetPendingApproval.browser.test.tsx (1 test) 274ms
369
+ ✓  node  test/utils/match-url.test.ts (10 tests) 10ms
370
370
  ✓  node  test/sdk/localization/useBindingSelector.test.tsx (22 tests) 13ms
371
- ✓  node  test/sdk/localization/bindingSelector.test.ts (18 tests) 11ms
371
+ ✓  node  test/pages/api/unlock.test.ts (15 tests) 174ms
372
+ ✓  node  test/sdk/localization/bindingSelector.test.ts (18 tests) 8ms
372
373
  stderr | test/components/search/SearchInputComponent.test.tsx
373
374
  Warning: forwardRef render functions accept exactly two parameters: props and ref. Did you forget to use the ref parameter?
374
375
 
@@ -432,16 +433,16 @@ Warning: React does not recognize the `providerProps` prop on a DOM element. If
432
433
  at Suspense
433
434
  at Wrapper (/home/runner/work/faststore/faststore/packages/core/test/components/search/SearchInputComponent.test.tsx:106:20)
434
435
 
435
- ✓  node  test/components/search/SearchInputComponent.test.tsx (6 tests) 58ms
436
- ✓  node  test/sdk/search/useSearchHistory.test.ts (13 tests) 37ms
437
- ✓  node  test/utils/cookieCacheBusting.test.ts (10 tests) 10ms
436
+ ✓  node  test/components/search/SearchInputComponent.test.tsx (6 tests) 86ms
437
+ ✓  node  test/sdk/search/useSearchHistory.test.ts (13 tests) 53ms
438
+ ✓  node  test/utils/cookieCacheBusting.test.ts (10 tests) 14ms
438
439
  stderr | test/pages/pvt/account/cards/index.test.ts > Cards page getServerSideProps > redirects to /pvt/account/403 when the query fails with 401/403
439
440
  { extensions: { status: 401 } }
440
441
 
441
442
  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
442
443
  { extensions: { status: 502 } }
443
444
 
444
- ✓  node  test/pages/pvt/account/cards/index.test.ts (8 tests) 7ms
445
+ ✓  node  test/pages/pvt/account/cards/index.test.ts (8 tests) 9ms
445
446
  stderr | test/pages/api/graphql.test.ts > /api/graphql error status propagation > propagates the upstream 400 from a wrapped BadRequestError instead of 500
446
447
  Graphql execution returned with error: [
447
448
  {
@@ -551,77 +552,78 @@ Warning: React does not recognize the `providerProps` prop on a DOM element. If
551
552
  at trace (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/test.B8ej_ZHS.js:239:21)
552
553
  at runTest (file:///home/runner/work/faststore/faststore/node_modules/.pnpm/@vitest+runner@4.0.18/node_modules/@vitest/runner/dist/index.js:1653:12)
553
554
 
554
- ✓  node  test/pages/api/graphql.test.ts (19 tests) 29ms
555
- ✓  node  test/utils/clearCookies.test.ts (20 tests) 16ms
556
- ✓  node  test/experimental/myAccountCmsServerSideProps.test.ts (5 tests) 8ms
555
+ ✓  node  test/pages/api/graphql.test.ts (19 tests) 34ms
556
+ ✓  node  test/utils/clearCookies.test.ts (20 tests) 29ms
557
+ ✓  node  test/experimental/myAccountCmsServerSideProps.test.ts (5 tests) 10ms
557
558
  stderr | test/sdk/account/useSetPassword.test.ts > useSetPassword > maps wrongcredentials error responses to the existing message
558
559
  Set password request failed: Bad Request
559
560
 
560
- ✓  node  test/sdk/account/useSetPassword.test.ts (6 tests) 35ms
561
- ✓  node  test/components/quotes/MyAccountListQuotesTable.test.tsx (12 tests) 271ms
562
- ✓  node  test/components/quotes/quoteFilters.test.ts (23 tests) 18ms
563
- ✓  node  test/utils/multipleTemplates.test.ts (8 tests) 3ms
564
- ✓  node  test/utils/localization/localizeRedirectDestination.test.ts (11 tests) 3ms
565
- ✓  node  test/sdk/orderEntry/useOrderEntryOperation.test.ts (8 tests) 31ms
566
- ✓  node  test/components/quotes/MyAccountListQuotes.test.tsx (9 tests) 814ms
567
- ✓ navigates with the search term on blur  363ms
568
- ✓ navigates without a label param when the search is cleared  360ms
569
- ✓  node  test/utils/localization/hreflang.test.ts (8 tests) 7ms
570
- ✓  node  test/sdk/account/getMyAccountRoutes.test.ts (13 tests) 8ms
571
- ✓  node  test/sdk/orderEntry/useOrderEntryUpload.test.ts (8 tests) 35ms
572
- ✓  node  test/sdk/redirects/index.test.ts (7 tests) 40ms
573
- ✓  node  test/components/quotes/MyAccountQuotesFilterSlider.test.tsx (5 tests) 117ms
574
- ✓  node  test/utils/productJsonLd.test.ts (17 tests) 8ms
575
- ✓  node  test/proxy.localization.test.ts (5 tests) 50ms
561
+ ✓  node  test/sdk/account/useSetPassword.test.ts (6 tests) 49ms
562
+ ✓  node  test/components/quotes/MyAccountListQuotesTable.test.tsx (12 tests) 450ms
563
+ ✓  node  test/components/quotes/quoteFilters.test.ts (23 tests) 24ms
564
+ ✓  node  test/utils/multipleTemplates.test.ts (8 tests) 5ms
565
+ ✓  node  test/utils/localization/localizeRedirectDestination.test.ts (11 tests) 5ms
566
+ ✓  node  test/components/quotes/MyAccountListQuotes.test.tsx (9 tests) 857ms
567
+ ✓ navigates with the search term on blur  362ms
568
+ ✓ navigates without a label param when the search is cleared  362ms
569
+ ✓  node  test/sdk/orderEntry/useOrderEntryOperation.test.ts (8 tests) 49ms
570
+ ✓  node  test/utils/localization/hreflang.test.ts (8 tests) 10ms
571
+ ✓  node  test/sdk/account/getMyAccountRoutes.test.ts (13 tests) 7ms
572
+ ✓  node  test/sdk/orderEntry/useOrderEntryUpload.test.ts (8 tests) 46ms
573
+ ✓  node  test/sdk/redirects/index.test.ts (7 tests) 55ms
574
+ ✓  node  test/components/quotes/MyAccountQuotesFilterSlider.test.tsx (5 tests) 161ms
575
+ ✓  node  test/utils/productJsonLd.test.ts (17 tests) 11ms
576
+ ✓  node  test/proxy.localization.test.ts (5 tests) 36ms
576
577
  ✓  node  test/components/account/orders/getDeliveryOptionLabel.test.ts (21 tests) 6ms
577
- ✓  node  test/sdk/graphql/retryPolicy.test.ts (18 tests) 15ms
578
- ✓  node  test/sdk/orderEntry/useOrderEntry.test.ts (8 tests) 34ms
579
- ✓  node  test/server/index.test.ts (7 tests) 716ms
580
- ✓  node  test/sdk/session/syncSalesChannelFromOrderForm.test.ts (6 tests) 7ms
581
- ✓  node  test/sdk/analytics/useStartRecommendationSession.test.ts (6 tests) 43ms
582
- ✓  node  test/components/quotes/MyAccountQuotesSelectedTags.test.tsx (8 tests) 89ms
583
- ✓  node  test/proxy.test.ts (4 tests) 15ms
584
- ✓  node  test/server/webops-api.test.ts (9 tests) 13ms
585
- ✓  node  test/components/account/orders/StatusCard.test.ts (3 tests) 21ms
586
- ✓  node  test/sdk/orderEntry/useOrderFormItems.test.ts (7 tests) 37ms
578
+ ✓  node  test/sdk/graphql/retryPolicy.test.ts (18 tests) 22ms
579
+ ✓  node  test/sdk/orderEntry/useOrderEntry.test.ts (8 tests) 42ms
580
+ ✓  node  test/server/index.test.ts (7 tests) 885ms
581
+ ✓ should handle options and execute  340ms
582
+ ✓  node  test/sdk/session/syncSalesChannelFromOrderForm.test.ts (6 tests) 10ms
583
+ ✓  node  test/sdk/analytics/useStartRecommendationSession.test.ts (6 tests) 51ms
584
+ ✓  node  test/components/quotes/MyAccountQuotesSelectedTags.test.tsx (8 tests) 109ms
585
+ ✓  node  test/server/webops-api.test.ts (9 tests) 17ms
586
+ ✓  node  test/proxy.test.ts (4 tests) 23ms
587
+ ✓  node  test/sdk/orderEntry/useOrderFormItems.test.ts (7 tests) 44ms
588
+ ✓  node  test/components/account/orders/StatusCard.test.ts (3 tests) 30ms
587
589
  ✓  node  test/sdk/localization/store-url.test.ts (4 tests) 5ms
588
- ✓  node  test/sdk/cart/waitForSessionValidated.test.ts (5 tests) 10ms
589
- ✓  node  test/server/cms/myAccountDefaultSections.test.ts (7 tests) 5ms
590
- ✓  node  test/utils/productJsonLdRendering.test.tsx (4 tests) 11ms
591
- ✓  node  test/sdk/account/refreshToken.test.ts (5 tests) 7ms
592
- ✓  node  test/server/content/service.test.ts (5 tests) 4ms
593
- ✓  node  test/server/cms/global.test.ts (3 tests) 4ms
594
- ✓  node  test/sdk/auth/useAuth.test.ts (5 tests) 25ms
595
- ✓  node  test/components/quotes/MyAccountQuotesStatusSelector.test.tsx (6 tests) 115ms
596
- ✓  node  test/utils/getRequestHostname.test.ts (12 tests) 4ms
597
- ✓  node  test/server/rootSpan.test.ts (4 tests) 31ms
598
- ✓  node  test/pages/api/preview.test.ts (2 tests) 7ms
599
- ✓  node  test/utils/validateSessionRefreshToken.test.ts (6 tests) 3ms
600
- ✓  node  test/components/search/SearchInput.test.ts (6 tests) 6ms
601
- ✓  node  test/components/account/Layout.test.tsx (6 tests) 54ms
602
- ✓  node  test/sdk/recommendations/vrn.test.ts (5 tests) 5ms
603
- ✓  node  test/server/cms/index.test.ts (2 tests) 7ms
604
- ✓  node  test/utils/retry.test.ts (5 tests) 11ms
605
- ✓  node  test/sdk/account/getB2BSessionClaims.test.ts (4 tests) 5ms
606
- ✓  node  test/utils/userOrderStatus.test.ts (4 tests) 5ms
607
- ✓  node  test/utils/unlockResponse.test.ts (11 tests) 3ms
590
+ ✓  node  test/sdk/cart/waitForSessionValidated.test.ts (5 tests) 17ms
591
+ ✓  node  test/server/cms/myAccountDefaultSections.test.ts (7 tests) 6ms
592
+ ✓  node  test/server/content/service.test.ts (5 tests) 5ms
593
+ ✓  node  test/utils/productJsonLdRendering.test.tsx (4 tests) 15ms
594
+ ✓  node  test/sdk/account/refreshToken.test.ts (5 tests) 8ms
595
+ ✓  node  test/server/cms/global.test.ts (3 tests) 6ms
596
+ ✓  node  test/sdk/auth/useAuth.test.ts (5 tests) 36ms
597
+ ✓  node  test/components/quotes/MyAccountQuotesStatusSelector.test.tsx (6 tests) 159ms
598
+ ✓  node  test/server/rootSpan.test.ts (4 tests) 46ms
599
+ ✓  node  test/utils/getRequestHostname.test.ts (12 tests) 7ms
600
+ ✓  node  test/pages/api/preview.test.ts (2 tests) 9ms
601
+ ✓  node  test/components/search/SearchInput.test.ts (6 tests) 8ms
602
+ ✓  node  test/utils/validateSessionRefreshToken.test.ts (6 tests) 4ms
603
+ ✓  node  test/sdk/recommendations/vrn.test.ts (5 tests) 6ms
604
+ ✓  node  test/components/account/Layout.test.tsx (6 tests) 79ms
605
+ ✓  node  test/utils/retry.test.ts (5 tests) 13ms
606
+ ✓  node  test/server/cms/index.test.ts (2 tests) 6ms
607
+ ✓  node  test/sdk/account/getB2BSessionClaims.test.ts (4 tests) 15ms
608
+ ✓  node  test/utils/userOrderStatus.test.ts (4 tests) 4ms
609
+ ✓  node  test/sdk/recommendations/useRecommendationUserId.test.ts (4 tests) 192ms
610
+ ✓  node  test/utils/unlockResponse.test.ts (11 tests) 8ms
608
611
  ✓  node  test/sdk/recommendations/useRecommendations.test.ts (2 tests) 4ms
609
- ✓  node  test/sdk/recommendations/useRecommendationUserId.test.ts (4 tests) 185ms
610
- ✓  node  test/components/account/OrganizationDrawerBody.test.tsx (3 tests) 38ms
612
+ ✓  node  test/components/account/OrganizationDrawerBody.test.tsx (3 tests) 57ms
611
613
  ✓  node  test/utils/isLocalHost.test.ts (7 tests) 4ms
612
- ✓  node  test/components/account/orders/getOrderTotalLabel.test.ts (6 tests) 4ms
614
+ ✓  node  test/components/account/orders/getOrderTotalLabel.test.ts (6 tests) 3ms
613
615
  ✓  node  test/components/account/orders/listOrdersLabels.test.ts (2 tests) 3ms
614
- ✓  node  test/utils/getCookie.test.ts (4 tests) 4ms
615
- ✓  node  test/sdk/session/isSignInAreaResolved.test.ts (3 tests) 3ms
616
- ✓  node  test/components/auth/ProfileChallenge.test.tsx (3 tests) 35ms
617
- ✓  node  test/sdk/analytics/utils.test.ts (2 tests) 2ms
618
- ✓  node  test/components/quotes/MyAccountQuoteStatusBadge.test.tsx (2 tests) 31ms
619
- ✓  node  test/instrumentation.test.ts (3 tests) 3ms
620
- ✓  node  test/components/account/orders/orderDetailsLabels.test.ts (1 test) 3ms
621
- ✓  node  test/sdk/account/clearPersistedSessionState.test.ts (1 test) 8ms
616
+ ✓  node  test/utils/getCookie.test.ts (4 tests) 5ms
617
+ ✓  node  test/sdk/session/isSignInAreaResolved.test.ts (3 tests) 4ms
618
+ ✓  node  test/components/auth/ProfileChallenge.test.tsx (3 tests) 44ms
619
+ ✓  node  test/sdk/analytics/utils.test.ts (2 tests) 4ms
620
+ ✓  node  test/instrumentation.test.ts (3 tests) 4ms
621
+ ✓  node  test/components/account/orders/orderDetailsLabels.test.ts (1 test) 4ms
622
+ ✓  node  test/components/quotes/MyAccountQuoteStatusBadge.test.tsx (2 tests) 38ms
623
+ ✓  node  test/sdk/account/clearPersistedSessionState.test.ts (1 test) 9ms
622
624
 
623
625
   Test Files  122 passed (122)
624
626
   Tests  926 passed (926)
625
-  Start at  23:47:19
626
-  Duration  42.97s (transform 10.45s, setup 0ms, import 38.63s, tests 15.36s, environment 52.12s)
627
+  Start at  23:31:16
628
+  Duration  59.06s (transform 13.22s, setup 0ms, import 51.66s, tests 20.67s, environment 73.87s)
627
629
 
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
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.1-dev.3](https://github.com/vtex/faststore/compare/v4.8.1-dev.2...v4.8.1-dev.3) (2026-09-22)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **core:** also normalize search-path concatenations in index/s pages ([519fb88](https://github.com/vtex/faststore/commit/519fb8885e483a8b00b292d342cce34cb4dd2cd6)), closes [#3498](https://github.com/vtex/faststore/issues/3498)
11
+ - **core:** normalize trailing slash on locale-aware store URLs (SFS-3390) ([07ff320](https://github.com/vtex/faststore/commit/07ff320232df8ba75e48902e4fb93f22fc33505c))
12
+ - **core:** pass rendered locale to getStoreURL in search canonical URL ([4ead8b8](https://github.com/vtex/faststore/commit/4ead8b86c1c53645db3afcd6cef41b085ffd5130))
13
+
6
14
  ## [4.8.1-dev.2](https://github.com/vtex/faststore/compare/v4.8.1-dev.1...v4.8.1-dev.2) (2026-09-21)
7
15
 
8
16
  ### Bug Fixes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/core",
3
- "version": "4.8.1-dev.2",
3
+ "version": "4.8.1-dev.3",
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.1-dev.2",
75
- "@faststore/diagnostics": "4.8.1-dev.2",
76
- "@faststore/sdk": "4.8.1-dev.2",
77
- "@faststore/lighthouse": "4.8.1-dev.2",
78
- "@faststore/ui": "4.8.1-dev.2"
74
+ "@faststore/api": "4.8.1-dev.3",
75
+ "@faststore/lighthouse": "4.8.1-dev.3",
76
+ "@faststore/diagnostics": "4.8.1-dev.3",
77
+ "@faststore/ui": "4.8.1-dev.3",
78
+ "@faststore/sdk": "4.8.1-dev.3"
79
79
  },
80
80
  "devDependencies": {
81
81
  "@cypress/code-coverage": "^3.12.1",
@@ -65,7 +65,7 @@ export default function LandingPage({
65
65
  storeConfig.seo.titleTemplate ??
66
66
  storeConfig.seo.title
67
67
 
68
- const storeURL = getStoreURL(router.locale)
68
+ const storeURL = getStoreURL(router.locale).replace(/\/$/, '')
69
69
 
70
70
  return (
71
71
  <>
@@ -167,9 +167,11 @@ function Page({
167
167
 
168
168
  let itemListElements = product.breadcrumbList.itemListElement ?? []
169
169
  if (itemListElements.length !== 0) {
170
+ const storeURL = getStoreURL(router.locale).replace(/\/$/, '')
171
+
170
172
  itemListElements = itemListElements.map(
171
173
  ({ item: pathname, name, position }) => {
172
- const pageUrl = getStoreURL(router.locale) + pathname
174
+ const pageUrl = storeURL + pathname
173
175
 
174
176
  return { name, position, item: pageUrl }
175
177
  }
@@ -56,6 +56,7 @@ function Page({
56
56
  )
57
57
 
58
58
  const storeUrl = getStoreURL(router.locale)
59
+ const searchStoreUrl = storeUrl.replace(/\/$/, '')
59
60
 
60
61
  return (
61
62
  <>
@@ -79,7 +80,7 @@ function Page({
79
80
  url={storeUrl}
80
81
  potentialActions={[
81
82
  {
82
- target: `${storeUrl}/s/?q`,
83
+ target: `${searchStoreUrl}/s/?q`,
83
84
  queryInput: 'search_term_string',
84
85
  },
85
86
  ]}
package/src/pages/s.tsx CHANGED
@@ -54,7 +54,8 @@ type StoreConfig = typeof storeConfig
54
54
  function generateSEOData(
55
55
  storeConfig: StoreConfig,
56
56
  searchTerm?: string,
57
- pageSeoSettings?: SearchSettings['settings']['seo']
57
+ pageSeoSettings?: SearchSettings['settings']['seo'],
58
+ locale?: string
58
59
  ) {
59
60
  const { search: searchSeo, ...seo } = storeConfig.seo
60
61
 
@@ -88,7 +89,10 @@ function generateSEOData(
88
89
  }
89
90
 
90
91
  const canonical = searchTerm
91
- ? `${getStoreURL()}/s?q=${searchTerm.replaceAll(' ', '+')}`
92
+ ? `${getStoreURL(locale).replace(/\/$/, '')}/s?q=${searchTerm.replaceAll(
93
+ ' ',
94
+ '+'
95
+ )}`
92
96
  : undefined
93
97
 
94
98
  return {
@@ -114,6 +118,7 @@ function Page({
114
118
  const { sections: globalSections, settings: globalSettings } =
115
119
  globalSectionsProp ?? {}
116
120
  const { settings } = searchContentType
121
+ const { locale } = useRouter()
117
122
  const applySearchState = useApplySearchState()
118
123
  const searchParams = useSearchParams({
119
124
  sort: settings?.productGallery?.sortBySelection as SearchState['sort'],
@@ -138,7 +143,8 @@ function Page({
138
143
  const { noindex, nofollow, ...seoData } = generateSEOData(
139
144
  storeConfig,
140
145
  effectiveSearchTerm,
141
- settings?.seo
146
+ settings?.seo,
147
+ locale
142
148
  )
143
149
 
144
150
  return (