@faststore/core 4.7.0-dev.3 → 4.7.0-dev.5
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/.turbo/turbo-generate.log +3 -3
- package/.turbo/turbo-test.log +101 -92
- package/CHANGELOG.md +18 -0
- package/cms/faststore/components/cms_component__recommendationshelf.jsonc +1 -7
- package/cms/faststore/my-account/README.md +2 -2
- package/cms/faststore/schema.json +1 -7
- package/discovery.config.default.js +5 -0
- package/package.json +6 -6
- package/src/Layout.tsx +3 -3
- package/src/components/account/orders/OrderDetails/section.module.scss +44 -3
- package/src/components/cms/RenderSections.tsx +20 -2
- package/src/components/sections/RecommendationShelf/README.md +25 -15
- package/src/components/sections/RecommendationShelf/RecommendationShelf.tsx +0 -2
- package/src/components/sections/RecommendationShelf/RecommendationShelf.types.ts +0 -7
- package/src/pages/pvt/account/403.tsx +1 -0
- package/src/pages/pvt/account/404.tsx +5 -1
- package/src/pages/pvt/account/cards/index.tsx +1 -0
- package/src/pages/pvt/account/orders/[id].tsx +5 -1
- package/src/pages/pvt/account/orders/index.tsx +1 -0
- package/src/pages/pvt/account/profile.tsx +1 -0
- package/src/pages/pvt/account/security.tsx +1 -0
- package/src/pages/pvt/account/user-details.tsx +1 -0
- package/src/sdk/analytics/hooks/useStartRecommendationSession.ts +18 -13
- package/src/sdk/recommendations/useRecommendationShelf.ts +17 -15
- package/src/server/cms/myAccountDefaultSections.ts +8 -3
- package/test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx +11 -32
- package/test/components/cms/RenderSections.browser.test.tsx +135 -0
- package/test/sdk/analytics/useStartRecommendationSession.test.ts +27 -58
- package/test/sdk/recommendations/useRecommendationShelf.browser.test.tsx +32 -34
- package/test/sdk/recommendations/useRecommendationShelf.sessionFallback.browser.test.tsx +110 -0
- package/test/server/cms/myAccountDefaultSections.test.ts +44 -0
- package/src/sdk/analytics/utils/hasEnabledRecommendationShelf.ts +0 -49
- package/test/sdk/analytics/hasEnabledRecommendationShelf.test.ts +0 -88
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @faststore/core@4.7.0-dev.
|
|
2
|
+
> @faststore/core@4.7.0-dev.4 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.7.0-dev.
|
|
6
|
+
> @faststore/core@4.7.0-dev.4 gen-types /home/runner/work/faststore/faststore/packages/core
|
|
7
7
|
> node ../cli/bin/run generate-types .
|
|
8
8
|
|
|
9
9
|
[33m[STARTED][39m Parse Configuration
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
[32m[COMPLETED][39m Generate to /home/runner/work/faststore/faststore/packages/core/@generated/
|
|
20
20
|
[32m[COMPLETED][39m Generate outputs
|
|
21
21
|
|
|
22
|
-
> @faststore/core@4.7.0-dev.
|
|
22
|
+
> @faststore/core@4.7.0-dev.4 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
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @faststore/core@4.7.0-dev.
|
|
2
|
+
> @faststore/core@4.7.0-dev.4 test /home/runner/work/faststore/faststore/packages/core
|
|
3
3
|
> vitest run
|
|
4
4
|
|
|
5
5
|
|
|
@@ -7,20 +7,20 @@
|
|
|
7
7
|
|
|
8
8
|
Not implemented: navigation to another Document
|
|
9
9
|
Not implemented: navigation to another Document
|
|
10
|
-
[32m✓[39m [30m[46m browser [49m[39m test/sdk/ui/useScrollRestoration.browser.test.ts [2m([22m[2m43 tests[22m[2m)[22m[33m
|
|
10
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/ui/useScrollRestoration.browser.test.ts [2m([22m[2m43 tests[22m[2m)[22m[33m 1325[2mms[22m[39m
|
|
11
11
|
Browserslist: browsers data (caniuse-lite) is 6 months old. Please run:
|
|
12
12
|
npx update-browserslist-db@latest
|
|
13
13
|
Why you should do it regularly: https://github.com/browserslist/update-db#readme
|
|
14
|
-
[32m✓[39m [30m[46m browser [49m[39m test/components/
|
|
15
|
-
|
|
16
|
-
[33m[2m✓[22m[39m
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
[33m[2m✓[22m[39m
|
|
21
|
-
[33m[2m✓[22m[39m
|
|
22
|
-
[32m✓[39m [30m[46m browser [49m[39m test/sdk/session/reconcileSessionLocale.browser.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
23
|
-
[32m✓[39m [30m[46m browser [49m[39m test/sdk/recommendations/useRecommendationShelf.browser.test.tsx [2m([22m[
|
|
14
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/ui/ProductGallery/GalleryPageHeightLock.browser.test.tsx [2m([22m[2m8 tests[22m[2m)[22m[32m 260[2mms[22m[39m
|
|
15
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/account/ContractSwitcher.browser.test.tsx [2m([22m[2m13 tests[22m[2m)[22m[33m 2965[2mms[22m[39m
|
|
16
|
+
[33m[2m✓[22m[39m shows an error state when the list fails to load [33m 863[2mms[22m[39m
|
|
17
|
+
[33m[2m✓[22m[39m requires selecting a contract before Confirm is enabled, then switches (REQ-03) [33m 427[2mms[22m[39m
|
|
18
|
+
[33m[2m✓[22m[39m keeps Confirm disabled when switching is unavailable [33m 372[2mms[22m[39m
|
|
19
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/account/cards/MyAccountListCards.browser.test.tsx [2m([22m[2m14 tests[22m[2m)[22m[33m 2735[2mms[22m[39m
|
|
20
|
+
[33m[2m✓[22m[39m shows the tab bar and renders Personal cards by default [33m 1165[2mms[22m[39m
|
|
21
|
+
[33m[2m✓[22m[39m paginates when there are more than 25 cards [33m 380[2mms[22m[39m
|
|
22
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/session/reconcileSessionLocale.browser.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 30[2mms[22m[39m
|
|
23
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/recommendations/useRecommendationShelf.browser.test.tsx [2m([22m[2m12 tests[22m[2m)[22m[32m 218[2mms[22m[39m
|
|
24
24
|
[90mstderr[2m | test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx
|
|
25
25
|
[22m[39mError in optimistic validation: TypeError: Failed to parse URL from /api/graphql?operationName=ValidateCartMutation&operationHash=3c71b0d3fc2bade14df68abfa271858beb361b12
|
|
26
26
|
[90m at node:internal/deps/undici/undici:16416:13[39m
|
|
@@ -50,8 +50,7 @@ Browserslist: browsers data (caniuse-lite) is 6 months old. Please run:
|
|
|
50
50
|
[90mstderr[2m | test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx[2m > [22m[2mRecommendationShelf[2m > [22m[2mrenders nothing when there is an error
|
|
51
51
|
[22m[39mError fetching recommendations [90mundefined[39m boom for campaign vrn:recommendations:acc:rec-top-items-v2:campaign-1
|
|
52
52
|
|
|
53
|
-
[32m✓[39m [30m[46m browser [49m[39m test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx [2m([22m[
|
|
54
|
-
[32m✓[39m [30m[46m browser [49m[39m test/sdk/session/getInitialSession.browser.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 22[2mms[22m[39m
|
|
53
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/RecommendationShelf/RecommendationShelf.browser.test.tsx [2m([22m[2m7 tests[22m[2m)[22m[32m 292[2mms[22m[39m
|
|
55
54
|
[90mstderr[2m | test/pages/password-protection.browser.test.tsx[2m > [22m[2mPasswordProtectionLogin[2m > [22m[2mposts the password and redirects to the requested return path
|
|
56
55
|
[22m[39mWarning: An update to PasswordProtectionLogin inside a test was not wrapped in act(...).
|
|
57
56
|
|
|
@@ -185,8 +184,7 @@ act(() => {
|
|
|
185
184
|
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
|
|
186
185
|
at PasswordProtectionLogin (/home/runner/work/faststore/faststore/packages/core/src/pages/password-protection/index.tsx:19:69)
|
|
187
186
|
|
|
188
|
-
[32m✓[39m [30m[46m browser [49m[39m test/
|
|
189
|
-
[33m[2m✓[22m[39m renders the menu view with contract details and manage footer [33m 632[2mms[22m[39m
|
|
187
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/session/getInitialSession.browser.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 31[2mms[22m[39m
|
|
190
188
|
[90mstderr[2m | test/pages/password-protection.browser.test.tsx[2m > [22m[2mPasswordProtectionLogin[2m > [22m[2mshows service unavailable when the response is not a login payload
|
|
191
189
|
[22m[39mWarning: An update to PasswordProtectionLogin inside a test was not wrapped in act(...).
|
|
192
190
|
|
|
@@ -283,9 +281,19 @@ act(() => {
|
|
|
283
281
|
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
|
|
284
282
|
at PasswordProtectionLogin (/home/runner/work/faststore/faststore/packages/core/src/pages/password-protection/index.tsx:19:69)
|
|
285
283
|
|
|
286
|
-
[32m✓[39m [30m[46m browser [49m[39m test/pages/password-protection.browser.test.tsx [2m([22m[2m6 tests[22m[2m)[22m[33m
|
|
287
|
-
[33m[2m✓[22m[39m renders the password protection form [33m
|
|
288
|
-
[32m✓[39m [30m[46m browser [49m[39m test/
|
|
284
|
+
[32m✓[39m [30m[46m browser [49m[39m test/pages/password-protection.browser.test.tsx [2m([22m[2m6 tests[22m[2m)[22m[33m 1454[2mms[22m[39m
|
|
285
|
+
[33m[2m✓[22m[39m renders the password protection form [33m 616[2mms[22m[39m
|
|
286
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/account/OrganizationDrawer.browser.test.tsx [2m([22m[2m5 tests[22m[2m)[22m[33m 1396[2mms[22m[39m
|
|
287
|
+
[33m[2m✓[22m[39m renders the menu view with contract details and manage footer [33m 889[2mms[22m[39m
|
|
288
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/changeContractToken.browser.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 24[2mms[22m[39m
|
|
289
|
+
[90mstderr[2m | test/components/cms/RenderSections.browser.test.tsx
|
|
290
|
+
[22m[39mError in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
|
|
291
|
+
at waitForSessionValidated [90m(/home/runner/work/faststore/faststore/packages/core/[39msrc/sdk/cart/waitForSessionValidated.ts:16:32[90m)[39m
|
|
292
|
+
at validateCart [90m(/home/runner/work/faststore/faststore/packages/core/[39msrc/sdk/cart/index.ts:120:9[90m)[39m
|
|
293
|
+
at onValidate [90m(/home/runner/work/faststore/faststore/packages/core/[39msrc/sdk/useStore.ts:18:20[90m)[39m
|
|
294
|
+
at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
|
|
295
|
+
[90m at processTicksAndRejections (node:internal/process/task_queues:103:5)[39m
|
|
296
|
+
|
|
289
297
|
[90mstderr[2m | test/sdk/localization/store-url.browser.test.ts
|
|
290
298
|
[22m[39mError in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
|
|
291
299
|
at waitForSessionValidated [90m(/home/runner/work/faststore/faststore/packages/core/[39msrc/sdk/cart/waitForSessionValidated.ts:16:32[90m)[39m
|
|
@@ -294,10 +302,12 @@ This ensures that you're testing the behavior the user would see in the browser.
|
|
|
294
302
|
at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
|
|
295
303
|
[90m at processTicksAndRejections (node:internal/process/task_queues:103:5)[39m
|
|
296
304
|
|
|
297
|
-
[32m✓[39m [30m[46m browser [49m[39m test/sdk/localization/store-url.browser.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m
|
|
298
|
-
[32m✓[39m [30m[46m browser [49m[39m test/
|
|
299
|
-
[32m✓[39m [30m[46m browser [49m[39m test/
|
|
300
|
-
[32m✓[39m [30m[46m browser [49m[39m test/
|
|
305
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/localization/store-url.browser.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
306
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/cms/RenderSections.browser.test.tsx [2m([22m[2m5 tests[22m[2m)[22m[32m 81[2mms[22m[39m
|
|
307
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/useAvailableContracts.browser.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 34[2mms[22m[39m
|
|
308
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/templates/SearchPage/SearchWrapper.browser.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 35[2mms[22m[39m
|
|
309
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/useSwitchContract.browser.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 42[2mms[22m[39m
|
|
310
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/recommendations/useRecommendationShelf.sessionFallback.browser.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[32m 137[2mms[22m[39m
|
|
301
311
|
[90mstderr[2m | test/components/account/doLogout.browser.test.ts
|
|
302
312
|
[22m[39mError in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
|
|
303
313
|
at waitForSessionValidated [90m(/home/runner/work/faststore/faststore/packages/core/[39msrc/sdk/cart/waitForSessionValidated.ts:16:32[90m)[39m
|
|
@@ -306,10 +316,9 @@ This ensures that you're testing the behavior the user would see in the browser.
|
|
|
306
316
|
at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
|
|
307
317
|
[90m at processTicksAndRejections (node:internal/process/task_queues:103:5)[39m
|
|
308
318
|
|
|
309
|
-
[32m✓[39m [30m[46m browser [49m[39m test/components/account/doLogout.browser.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m
|
|
310
|
-
[32m✓[39m [30m[46m browser [49m[39m test/components/sections/Account/AccountListCards.browser.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m
|
|
311
|
-
[32m✓[39m [30m[46m browser [49m[39m test/components/account/OrganizationDrawerHeader.browser.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[
|
|
312
|
-
[32m✓[39m [30m[46m browser [49m[39m test/components/account/OrganizationDrawerFooter.browser.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 281[2mms[22m[39m
|
|
319
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/account/doLogout.browser.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 20[2mms[22m[39m
|
|
320
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/sections/Account/AccountListCards.browser.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 86[2mms[22m[39m
|
|
321
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/account/OrganizationDrawerHeader.browser.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[33m 317[2mms[22m[39m
|
|
313
322
|
[90mstderr[2m | test/sdk/account/clearPersistedSessionState.browser.test.ts
|
|
314
323
|
[22m[39mError in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
|
|
315
324
|
at waitForSessionValidated [90m(/home/runner/work/faststore/faststore/packages/core/[39msrc/sdk/cart/waitForSessionValidated.ts:16:32[90m)[39m
|
|
@@ -318,12 +327,10 @@ This ensures that you're testing the behavior the user would see in the browser.
|
|
|
318
327
|
at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
|
|
319
328
|
[90m at processTicksAndRejections (node:internal/process/task_queues:103:5)[39m
|
|
320
329
|
|
|
321
|
-
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/clearPersistedSessionState.browser.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m
|
|
322
|
-
[32m✓[39m [30m[46m browser [49m[39m test/utils/isLocalHost.browser.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m
|
|
323
|
-
[32m✓[39m [30m[46m browser [49m[39m test/
|
|
324
|
-
[32m✓[39m [30m[
|
|
325
|
-
[32m✓[39m [30m[46m browser [49m[39m test/components/skeletons/ProductGridSkeleton.browser.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[32m 40[2mms[22m[39m
|
|
326
|
-
[32m✓[39m [30m[43m node [49m[39m test/server/password-protection-service.test.ts [2m([22m[2m22 tests[22m[2m)[22m[32m 43[2mms[22m[39m
|
|
330
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/clearPersistedSessionState.browser.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 13[2mms[22m[39m
|
|
331
|
+
[32m✓[39m [30m[46m browser [49m[39m test/utils/isLocalHost.browser.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
332
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/account/OrganizationDrawerFooter.browser.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[33m 322[2mms[22m[39m
|
|
333
|
+
[32m✓[39m [30m[46m browser [49m[39m test/sdk/session/reconcileSessionLocale.disabled.browser.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
327
334
|
[90mstderr[2m | test/sdk/account/refreshToken.browser.test.ts
|
|
328
335
|
[22m[39mError in optimistic validation: TypeError: Cannot read properties of undefined (reading 'read')
|
|
329
336
|
at waitForSessionValidated [90m(/home/runner/work/faststore/faststore/packages/core/[39msrc/sdk/cart/waitForSessionValidated.ts:16:32[90m)[39m
|
|
@@ -332,11 +339,14 @@ This ensures that you're testing the behavior the user would see in the browser.
|
|
|
332
339
|
at a (/home/runner/work/faststore/faststore/packages/sdk/dist/es/index.mjs:354:23)
|
|
333
340
|
[90m at processTicksAndRejections (node:internal/process/task_queues:103:5)[39m
|
|
334
341
|
|
|
335
|
-
[32m✓[39m [30m[43m node [49m[39m test/utils/match-url.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 8[2mms[22m[39m
|
|
336
342
|
[32m✓[39m [30m[46m browser [49m[39m test/sdk/account/refreshToken.browser.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
337
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
338
|
-
[32m✓[39m [30m[
|
|
339
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
343
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/localization/bindingPaths.test.ts [2m([22m[2m71 tests[22m[2m)[22m[32m 21[2mms[22m[39m
|
|
344
|
+
[32m✓[39m [30m[46m browser [49m[39m test/components/skeletons/ProductGridSkeleton.browser.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[32m 40[2mms[22m[39m
|
|
345
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/match-url.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 12[2mms[22m[39m
|
|
346
|
+
[32m✓[39m [30m[43m node [49m[39m test/server/password-protection-service.test.ts [2m([22m[2m22 tests[22m[2m)[22m[32m 38[2mms[22m[39m
|
|
347
|
+
[32m✓[39m [30m[43m node [49m[39m test/pages/api/unlock.test.ts [2m([22m[2m15 tests[22m[2m)[22m[32m 260[2mms[22m[39m
|
|
348
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/localization/useBindingSelector.test.tsx [2m([22m[2m22 tests[22m[2m)[22m[32m 21[2mms[22m[39m
|
|
349
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/localization/bindingSelector.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 10[2mms[22m[39m
|
|
340
350
|
[90mstderr[2m | test/components/search/SearchInputComponent.test.tsx
|
|
341
351
|
[22m[39mWarning: forwardRef render functions accept exactly two parameters: props and ref. Did you forget to use the ref parameter?
|
|
342
352
|
|
|
@@ -401,18 +411,18 @@ Warning: React does not recognize the `providerProps` prop on a DOM element. If
|
|
|
401
411
|
at Wrapper (/home/runner/work/faststore/faststore/packages/core/test/components/search/SearchInputComponent.test.tsx:106:20)
|
|
402
412
|
|
|
403
413
|
[32m✓[39m [30m[43m node [49m[39m test/components/search/SearchInputComponent.test.tsx [2m([22m[2m6 tests[22m[2m)[22m[32m 73[2mms[22m[39m
|
|
404
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/search/useSearchHistory.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m
|
|
405
|
-
[32m✓[39m [30m[43m node [49m[39m test/utils/cookieCacheBusting.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m
|
|
414
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/search/useSearchHistory.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 53[2mms[22m[39m
|
|
415
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/cookieCacheBusting.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 17[2mms[22m[39m
|
|
406
416
|
[90mstderr[2m | test/pages/pvt/account/cards/index.test.ts[2m > [22m[2mCards page getServerSideProps[2m > [22m[2mredirects to /pvt/account/403 when the query fails with 401/403
|
|
407
417
|
[22m[39m{ extensions: { status: [33m401[39m } }
|
|
408
418
|
|
|
409
419
|
[90mstderr[2m | test/pages/pvt/account/cards/index.test.ts[2m > [22m[2mCards page getServerSideProps[2m > [22m[2mrenders the error state (no redirect) when the query fails with a non-auth status
|
|
410
420
|
[22m[39m{ extensions: { status: [33m502[39m } }
|
|
411
421
|
|
|
412
|
-
[32m✓[39m [30m[43m node [49m[39m test/pages/pvt/account/cards/index.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m
|
|
413
|
-
[32m✓[39m [30m[43m node [49m[39m test/utils/clearCookies.test.ts [2m([22m[2m20 tests[22m[2m)[22m[32m
|
|
414
|
-
[32m✓[39m [30m[43m node [49m[39m test/experimental/myAccountCmsServerSideProps.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
415
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountListQuotesTable.test.tsx [2m([22m[2m12 tests[22m[2m)[22m[33m
|
|
422
|
+
[32m✓[39m [30m[43m node [49m[39m test/pages/pvt/account/cards/index.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 14[2mms[22m[39m
|
|
423
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/clearCookies.test.ts [2m([22m[2m20 tests[22m[2m)[22m[32m 28[2mms[22m[39m
|
|
424
|
+
[32m✓[39m [30m[43m node [49m[39m test/experimental/myAccountCmsServerSideProps.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 11[2mms[22m[39m
|
|
425
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountListQuotesTable.test.tsx [2m([22m[2m12 tests[22m[2m)[22m[33m 441[2mms[22m[39m
|
|
416
426
|
[90mstderr[2m | test/pages/api/graphql.test.ts[2m > [22m[2m/api/graphql error status propagation[2m > [22m[2mpropagates the upstream 400 from a wrapped BadRequestError instead of 500
|
|
417
427
|
[22m[39mGraphql execution returned with error: [
|
|
418
428
|
{
|
|
@@ -505,65 +515,64 @@ Warning: React does not recognize the `providerProps` prop on a DOM element. If
|
|
|
505
515
|
at file:///home/runner/work/faststore/faststore/node_modules/[4m.pnpm[24m/@vitest+runner@4.0.18/node_modules/[4m@vitest/runner[24m/dist/index.js:1653:37
|
|
506
516
|
at Traces.$ (file:///home/runner/work/faststore/faststore/node_modules/[4m.pnpm[24m/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/[4mvitest[24m/dist/chunks/traces.CCmnQaNT.js:142:27)
|
|
507
517
|
|
|
508
|
-
[32m✓[39m [30m[43m node [49m[39m test/pages/api/graphql.test.ts [2m([22m[2m17 tests[22m[2m)[22m[32m
|
|
509
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountListQuotes.test.tsx [2m([22m[2m9 tests[22m[2m)[22m[33m
|
|
510
|
-
[33m[2m✓[22m[39m navigates with the search term on blur [33m
|
|
518
|
+
[32m✓[39m [30m[43m node [49m[39m test/pages/api/graphql.test.ts [2m([22m[2m17 tests[22m[2m)[22m[32m 24[2mms[22m[39m
|
|
519
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountListQuotes.test.tsx [2m([22m[2m9 tests[22m[2m)[22m[33m 851[2mms[22m[39m
|
|
520
|
+
[33m[2m✓[22m[39m navigates with the search term on blur [33m 362[2mms[22m[39m
|
|
511
521
|
[33m[2m✓[22m[39m navigates without a label param when the search is cleared [33m 361[2mms[22m[39m
|
|
512
522
|
[90mstderr[2m | test/sdk/account/useSetPassword.test.ts[2m > [22m[2museSetPassword[2m > [22m[2mmaps wrongcredentials error responses to the existing message
|
|
513
523
|
[22m[39mSet password request failed: Bad Request
|
|
514
524
|
|
|
515
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/useSetPassword.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m
|
|
516
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
517
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/orderEntry/useOrderEntryOperation.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m
|
|
518
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
525
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/useSetPassword.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 46[2mms[22m[39m
|
|
526
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/multipleTemplates.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 8[2mms[22m[39m
|
|
527
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/orderEntry/useOrderEntryOperation.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 37[2mms[22m[39m
|
|
528
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/quoteFilters.test.ts [2m([22m[2m23 tests[22m[2m)[22m[32m 39[2mms[22m[39m
|
|
519
529
|
[32m✓[39m [30m[43m node [49m[39m test/utils/localization/localizeRedirectDestination.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
520
530
|
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/getMyAccountRoutes.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 9[2mms[22m[39m
|
|
521
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/orderEntry/useOrderEntryUpload.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m
|
|
522
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuotesFilterSlider.test.tsx [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
523
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
524
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
525
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
531
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/orderEntry/useOrderEntryUpload.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 65[2mms[22m[39m
|
|
532
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuotesFilterSlider.test.tsx [2m([22m[2m5 tests[22m[2m)[22m[32m 169[2mms[22m[39m
|
|
533
|
+
[32m✓[39m [30m[43m node [49m[39m test/proxy.localization.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 53[2mms[22m[39m
|
|
534
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/orderEntry/useOrderEntry.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 44[2mms[22m[39m
|
|
535
|
+
[32m✓[39m [30m[43m node [49m[39m test/server/index.test.ts [2m([22m[2m7 tests[22m[2m)[22m[33m 945[2mms[22m[39m
|
|
536
|
+
[33m[2m✓[22m[39m should handle options and execute [33m 383[2mms[22m[39m
|
|
537
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/session/syncSalesChannelFromOrderForm.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
538
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuotesSelectedTags.test.tsx [2m([22m[2m8 tests[22m[2m)[22m[32m 113[2mms[22m[39m
|
|
539
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/analytics/useStartRecommendationSession.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 48[2mms[22m[39m
|
|
529
540
|
[32m✓[39m [30m[43m node [49m[39m test/proxy.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 18[2mms[22m[39m
|
|
530
|
-
[32m✓[39m [30m[43m node [49m[39m test/server/webops-api.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m
|
|
531
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
532
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/cart/waitForSessionValidated.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
533
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
534
|
-
[32m✓[39m [30m[43m node [49m[39m test/server/content/service.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
535
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/refreshToken.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
541
|
+
[32m✓[39m [30m[43m node [49m[39m test/server/webops-api.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 24[2mms[22m[39m
|
|
542
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/orderEntry/useOrderFormItems.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 39[2mms[22m[39m
|
|
543
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/cart/waitForSessionValidated.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 15[2mms[22m[39m
|
|
544
|
+
[32m✓[39m [30m[43m node [49m[39m test/server/cms/myAccountDefaultSections.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
545
|
+
[32m✓[39m [30m[43m node [49m[39m test/server/content/service.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
546
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/refreshToken.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 9[2mms[22m[39m
|
|
536
547
|
[32m✓[39m [30m[43m node [49m[39m test/server/cms/global.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
537
548
|
[32m✓[39m [30m[43m node [49m[39m test/sdk/localization/store-url.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
538
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/auth/useAuth.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
539
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuotesStatusSelector.test.tsx [2m([22m[2m6 tests[22m[2m)[22m[32m
|
|
540
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
541
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
542
|
-
[32m✓[39m [30m[43m node [49m[39m test/server/rootSpan.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m
|
|
543
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/account/Layout.test.tsx [2m([22m[2m6 tests[22m[2m)[22m[32m 70[2mms[22m[39m
|
|
544
|
-
[32m✓[39m [30m[43m node [49m[39m test/pages/api/preview.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 9[2mms[22m[39m
|
|
549
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/auth/useAuth.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 34[2mms[22m[39m
|
|
550
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuotesStatusSelector.test.tsx [2m([22m[2m6 tests[22m[2m)[22m[32m 147[2mms[22m[39m
|
|
551
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/getRequestHostname.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
552
|
+
[32m✓[39m [30m[43m node [49m[39m test/pages/api/preview.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
553
|
+
[32m✓[39m [30m[43m node [49m[39m test/server/rootSpan.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 44[2mms[22m[39m
|
|
545
554
|
[32m✓[39m [30m[43m node [49m[39m test/utils/validateSessionRefreshToken.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
555
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/account/Layout.test.tsx [2m([22m[2m6 tests[22m[2m)[22m[32m 69[2mms[22m[39m
|
|
546
556
|
[32m✓[39m [30m[43m node [49m[39m test/components/search/SearchInput.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
547
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/recommendations/vrn.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
548
|
-
[32m✓[39m [30m[43m node [49m[39m test/utils/retry.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
549
|
-
[32m✓[39m [30m[43m node [49m[39m test/server/cms/index.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m
|
|
550
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/getB2BSessionClaims.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m
|
|
551
|
-
[32m✓[39m [30m[43m node [49m[39m test/utils/unlockResponse.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m
|
|
552
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
553
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/recommendations/useRecommendationUserId.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m
|
|
554
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
555
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/account/OrganizationDrawerBody.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m
|
|
556
|
-
[32m✓[39m [30m[43m node [49m[39m test/utils/isLocalHost.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
557
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/recommendations/vrn.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
558
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/retry.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 14[2mms[22m[39m
|
|
559
|
+
[32m✓[39m [30m[43m node [49m[39m test/server/cms/index.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
560
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/getB2BSessionClaims.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
561
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/unlockResponse.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
562
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/recommendations/useRecommendations.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
563
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/recommendations/useRecommendationUserId.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 184[2mms[22m[39m
|
|
564
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/isLocalHost.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
565
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/account/OrganizationDrawerBody.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 57[2mms[22m[39m
|
|
557
566
|
[32m✓[39m [30m[43m node [49m[39m test/utils/userOrderStatus.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
558
|
-
[32m✓[39m [30m[43m node [49m[39m test/utils/getCookie.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m
|
|
559
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/analytics/utils.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m
|
|
560
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
561
|
-
[32m✓[39m [30m[43m node [49m[39m test/
|
|
562
|
-
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/clearPersistedSessionState.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m
|
|
563
|
-
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuoteStatusBadge.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[32m
|
|
564
|
-
|
|
565
|
-
[2m Test Files [22m [1m[
|
|
566
|
-
[2m Tests [22m [1m[
|
|
567
|
-
[2m Start at [22m
|
|
568
|
-
[2m Duration [22m
|
|
567
|
+
[32m✓[39m [30m[43m node [49m[39m test/utils/getCookie.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
568
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/analytics/utils.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
569
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/auth/ProfileChallenge.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 30[2mms[22m[39m
|
|
570
|
+
[32m✓[39m [30m[43m node [49m[39m test/instrumentation.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
571
|
+
[32m✓[39m [30m[43m node [49m[39m test/sdk/account/clearPersistedSessionState.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 8[2mms[22m[39m
|
|
572
|
+
[32m✓[39m [30m[43m node [49m[39m test/components/quotes/MyAccountQuoteStatusBadge.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[32m 25[2mms[22m[39m
|
|
573
|
+
|
|
574
|
+
[2m Test Files [22m [1m[32m88 passed[39m[22m[90m (88)[39m
|
|
575
|
+
[2m Tests [22m [1m[32m702 passed[39m[22m[90m (702)[39m
|
|
576
|
+
[2m Start at [22m 21:33:38
|
|
577
|
+
[2m Duration [22m 45.95s[2m (transform 12.76s, setup 0ms, import 41.15s, tests 16.16s, environment 54.47s)[22m
|
|
569
578
|
|
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,24 @@
|
|
|
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.7.0-dev.5](https://github.com/vtex/faststore/compare/v4.7.0-dev.4...v4.7.0-dev.5) (2026-08-25)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **core:** restore Order Details layout and first-paint rendering in My Account ([#3464](https://github.com/vtex/faststore/issues/3464)) ([3464523](https://github.com/vtex/faststore/commit/346452304b265d439184bca3f56c2ae8a9341cce)), closes [#3354](https://github.com/vtex/faststore/issues/3354) [#3354](https://github.com/vtex/faststore/issues/3354) [#3417](https://github.com/vtex/faststore/issues/3417) [/github.com/vtex/faststore/pull/3464#discussion_r3848325785](https://github.com//github.com/vtex/faststore/pull/3464/issues/discussion_r3848325785) [#3411](https://github.com/vtex/faststore/issues/3411) [#3354](https://github.com/vtex/faststore/issues/3354)
|
|
11
|
+
|
|
12
|
+
# [4.7.0-dev.4](https://github.com/vtex/faststore/compare/v4.7.0-dev.3...v4.7.0-dev.4) (2026-08-25)
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
- **core:** address Sonar and session fallback timing ([c0ad09f](https://github.com/vtex/faststore/commit/c0ad09f4903627ce39b233013af40ab2505b5871))
|
|
17
|
+
- **core:** make session enable flag assignment Sonar-clear ([2fdfe96](https://github.com/vtex/faststore/commit/2fdfe96d6dccb22c33fb9f7f250f5531ef6f6f47))
|
|
18
|
+
- **core:** start shelf session fallback in parallel with userId lookup ([6f5afa5](https://github.com/vtex/faststore/commit/6f5afa587a554ab9a4289c01aa6c6eb57e027680))
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
- **core:** gate recommendation session by feature flag with shelf fallback ([901b345](https://github.com/vtex/faststore/commit/901b3456943de25f028d6443f5f62b9de1db6ad3))
|
|
23
|
+
|
|
6
24
|
# [4.7.0-dev.3](https://github.com/vtex/faststore/compare/v4.7.0-dev.2...v4.7.0-dev.3) (2026-08-25)
|
|
7
25
|
|
|
8
26
|
**Note:** Version bump only for package @faststore/core
|
|
@@ -3,16 +3,10 @@
|
|
|
3
3
|
"$componentKey": "RecommendationShelf",
|
|
4
4
|
"$componentTitle": "Recommendation Shelf",
|
|
5
5
|
"title": "Recommendation Shelf",
|
|
6
|
-
"description": "Display a carousel of personalized product recommendations from a VTEX Recommendations campaign.
|
|
6
|
+
"description": "Display a carousel of personalized product recommendations from a VTEX Recommendations campaign.",
|
|
7
7
|
"type": "object",
|
|
8
8
|
"required": ["campaignVrn"],
|
|
9
9
|
"properties": {
|
|
10
|
-
"enableRecommendations": {
|
|
11
|
-
"title": "Enable recommendations?",
|
|
12
|
-
"description": "When enabled, starts the VTEX Recommendations personalization session (once per browser session) and fetches personalized products for this shelf. Off by default so stores that do not use Recommendations never hit the Recommendations API.",
|
|
13
|
-
"type": "boolean",
|
|
14
|
-
"default": false
|
|
15
|
-
},
|
|
16
10
|
"title": {
|
|
17
11
|
"title": "Title",
|
|
18
12
|
"description": "Override the shelf title. If not set, the campaign title will be used.",
|
|
@@ -32,5 +32,5 @@ breaking change to the rendered storefront.
|
|
|
32
32
|
|
|
33
33
|
## Contents
|
|
34
34
|
|
|
35
|
-
- `components/` —
|
|
36
|
-
- `pages/` —
|
|
35
|
+
- `components/` — 15 `cms_component__account*.jsonc` section schemas.
|
|
36
|
+
- `pages/` — 7 `cms_content_type__myaccount*.jsonc` content-types.
|
|
@@ -3872,16 +3872,10 @@
|
|
|
3872
3872
|
"$componentKey": "RecommendationShelf",
|
|
3873
3873
|
"$componentTitle": "Recommendation Shelf",
|
|
3874
3874
|
"title": "Recommendation Shelf",
|
|
3875
|
-
"description": "Display a carousel of personalized product recommendations from a VTEX Recommendations campaign.
|
|
3875
|
+
"description": "Display a carousel of personalized product recommendations from a VTEX Recommendations campaign.",
|
|
3876
3876
|
"type": "object",
|
|
3877
3877
|
"required": ["campaignVrn"],
|
|
3878
3878
|
"properties": {
|
|
3879
|
-
"enableRecommendations": {
|
|
3880
|
-
"title": "Enable recommendations?",
|
|
3881
|
-
"description": "When enabled, starts the VTEX Recommendations personalization session (once per browser session) and fetches personalized products for this shelf. Off by default so stores that do not use Recommendations never hit the Recommendations API.",
|
|
3882
|
-
"type": "boolean",
|
|
3883
|
-
"default": false
|
|
3884
|
-
},
|
|
3885
3879
|
"title": {
|
|
3886
3880
|
"title": "Title",
|
|
3887
3881
|
"description": "Override the shelf title. If not set, the campaign title will be used.",
|
|
@@ -202,6 +202,11 @@ module.exports = {
|
|
|
202
202
|
},
|
|
203
203
|
refreshToken: false,
|
|
204
204
|
scrollRestoration: false,
|
|
205
|
+
// Opt-in flag for VTEX Recommendations. When enabled, Layout starts the
|
|
206
|
+
// personalization session on every page. When disabled (default), the
|
|
207
|
+
// session starts only as a RecommendationShelf fallback when userId is
|
|
208
|
+
// missing.
|
|
209
|
+
enableRecommendations: false,
|
|
205
210
|
/** Package names to transpile (e.g. ['@vtex/components']). Use a non-empty list to enable Next.js transpilation. */
|
|
206
211
|
transpilePackages: [],
|
|
207
212
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/core",
|
|
3
|
-
"version": "4.7.0-dev.
|
|
3
|
+
"version": "4.7.0-dev.5",
|
|
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.7.0-dev.
|
|
75
|
-
"@faststore/
|
|
76
|
-
"@faststore/
|
|
77
|
-
"@faststore/
|
|
78
|
-
"@faststore/ui": "4.7.0-dev.
|
|
74
|
+
"@faststore/api": "4.7.0-dev.5",
|
|
75
|
+
"@faststore/diagnostics": "4.7.0-dev.5",
|
|
76
|
+
"@faststore/lighthouse": "4.7.0-dev.5",
|
|
77
|
+
"@faststore/sdk": "4.7.0-dev.5",
|
|
78
|
+
"@faststore/ui": "4.7.0-dev.5"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
81
|
"@cypress/code-coverage": "^3.12.1",
|
package/src/Layout.tsx
CHANGED
|
@@ -7,9 +7,9 @@ function Layout({ children }: PropsWithChildren) {
|
|
|
7
7
|
const props = isValidElement(children) ? children.props : undefined
|
|
8
8
|
usePageViewEvent(props)
|
|
9
9
|
|
|
10
|
-
// Starts the personalization session once per browser session
|
|
11
|
-
//
|
|
12
|
-
useStartRecommendationSession(
|
|
10
|
+
// Starts the personalization session once per browser session on every page
|
|
11
|
+
// when `experimental.enableRecommendations` is true.
|
|
12
|
+
useStartRecommendationSession()
|
|
13
13
|
|
|
14
14
|
return <>{children}</>
|
|
15
15
|
}
|
|
@@ -118,6 +118,19 @@
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
+
// Grid placement targets the CMS *section wrapper*, not the card.
|
|
122
|
+
// The CMS render wraps every section in `<section class="section section-account-order-*">`,
|
|
123
|
+
// which is the real grid item; `grid-column` on a card nested inside it is inert.
|
|
124
|
+
// Attribute selectors are required here because this is a CSS module: a plain
|
|
125
|
+
// class selector would be hashed and never match the global class emitted by
|
|
126
|
+
// `Section.tsx` (and stylelint does not support `:global()`).
|
|
127
|
+
// The rules below have three different fates — do not treat them as one group:
|
|
128
|
+
// 1. `[class~="section-account-order-*"]` — the live contract for the CMS render.
|
|
129
|
+
// 2. `[data-fs-delivery-option-accordion]` — ALSO live: the delivery wrapper is
|
|
130
|
+
// `display: contents`, so the accordion is a direct grid item again.
|
|
131
|
+
// 3. `[data-fs-order-status-card]`, `[data-fs-order-budgets-card]` — dead for the
|
|
132
|
+
// CMS render; they only serve `@deprecated OrderDetails.tsx`, so they can go
|
|
133
|
+
// when that component does.
|
|
121
134
|
[data-fs-order-details-content] {
|
|
122
135
|
display: flex;
|
|
123
136
|
flex-direction: column;
|
|
@@ -128,22 +141,50 @@
|
|
|
128
141
|
grid-template-columns: repeat(2, 1fr);
|
|
129
142
|
}
|
|
130
143
|
|
|
131
|
-
|
|
144
|
+
// Cards must fill their section wrapper. The wrapper is the grid item and
|
|
145
|
+
// stretches to the row height, but a block child keeps its natural height,
|
|
146
|
+
// so a short card next to a tall one stopped short and left a gap below it.
|
|
147
|
+
// Before the CMS render the card itself was the grid item and stretched, so
|
|
148
|
+
// cards sharing a row matched heights — this restores that.
|
|
149
|
+
[class~="section-account-order-ordered-by"],
|
|
150
|
+
[class~="section-account-order-payment"],
|
|
151
|
+
[class~="section-account-order-summary"],
|
|
152
|
+
[class~="section-account-order-more-info"],
|
|
153
|
+
[class~="section-account-order-status"],
|
|
154
|
+
[class~="section-account-order-budgets"] {
|
|
155
|
+
display: grid;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// (1) Live — full-width section wrappers.
|
|
159
|
+
[class~="section-account-order-details"] {
|
|
132
160
|
grid-column: span 2;
|
|
133
161
|
}
|
|
134
162
|
|
|
135
|
-
[
|
|
163
|
+
[class~="section-account-order-status"] {
|
|
136
164
|
grid-column: span 2;
|
|
137
165
|
}
|
|
138
166
|
|
|
139
|
-
[
|
|
167
|
+
[class~="section-account-order-budgets"] {
|
|
140
168
|
grid-column: span 2;
|
|
141
169
|
}
|
|
142
170
|
|
|
171
|
+
// (1) Live — the delivery section holds two blocks the design treats as
|
|
172
|
+
// independent (compact recipient card, full-width option list). Dropping the
|
|
173
|
+
// wrapper box makes both direct grid items, so the rules below still apply.
|
|
174
|
+
[class~="section-account-order-delivery"] {
|
|
175
|
+
display: contents;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// (2) Live — direct grid item via the `display: contents` above.
|
|
143
179
|
[data-fs-delivery-option-accordion] {
|
|
144
180
|
grid-column: span 2;
|
|
145
181
|
}
|
|
146
182
|
|
|
183
|
+
// (3) Dead for the CMS render — kept for `@deprecated OrderDetails.tsx` only.
|
|
184
|
+
[data-fs-order-status-card] {
|
|
185
|
+
grid-column: span 2;
|
|
186
|
+
}
|
|
187
|
+
|
|
147
188
|
[data-fs-order-budgets-card] {
|
|
148
189
|
grid-column: span 2;
|
|
149
190
|
}
|
|
@@ -23,6 +23,23 @@ interface Props {
|
|
|
23
23
|
isInteractive?: boolean
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
type RenderSectionsBaseProps = Props & {
|
|
27
|
+
/**
|
|
28
|
+
* Opts the whole render pass out of viewport lazy loading, so every section
|
|
29
|
+
* renders on first paint (SSR HTML included) instead of behind a placeholder.
|
|
30
|
+
*
|
|
31
|
+
* Meant for authenticated, above-the-fold pages such as My Account, where
|
|
32
|
+
* lazy loading only delays content. The public storefront must not set it.
|
|
33
|
+
*
|
|
34
|
+
* Wider counterpart of the per-section `data.skipLazyLoadingSection` flag.
|
|
35
|
+
*
|
|
36
|
+
* Only `RenderSectionsBase` honours it: the default `RenderSections` export
|
|
37
|
+
* also renders global sections (CartSidebar, RegionModal, RegionSlider),
|
|
38
|
+
* whose lazy loading is load-bearing, so it must not be opted out wholesale.
|
|
39
|
+
*/
|
|
40
|
+
skipLazyLoading?: boolean
|
|
41
|
+
}
|
|
42
|
+
|
|
26
43
|
const REGION_SLIDER_SECTION_NAME = 'RegionSlider'
|
|
27
44
|
|
|
28
45
|
const SECTIONS_OUT_OF_VIEWPORT = [
|
|
@@ -139,7 +156,8 @@ export const RenderSectionsBase = ({
|
|
|
139
156
|
sections = [],
|
|
140
157
|
components,
|
|
141
158
|
isInteractive,
|
|
142
|
-
|
|
159
|
+
skipLazyLoading,
|
|
160
|
+
}: RenderSectionsBaseProps) => {
|
|
143
161
|
return (
|
|
144
162
|
<>
|
|
145
163
|
{sections.map(({ name, data = {}, $componentKey }, index) => {
|
|
@@ -159,7 +177,7 @@ export const RenderSectionsBase = ({
|
|
|
159
177
|
|
|
160
178
|
return (
|
|
161
179
|
<SectionBoundary key={`cms-section-${name}-${index}`} name={name}>
|
|
162
|
-
{data.skipLazyLoadingSection ? (
|
|
180
|
+
{skipLazyLoading || data.skipLazyLoadingSection ? (
|
|
163
181
|
<Component {...sectionProps} />
|
|
164
182
|
) : (
|
|
165
183
|
<LazyLoadingSection
|