cabloy 5.1.160 → 5.1.161
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/.cabloy-version +1 -1
- package/CHANGELOG.md +10 -0
- package/package.json +1 -1
- package/repo-e2e/specs/cabloy-basic.spec.ts +16 -16
- package/test-results/.last-run.json +2 -20
- package/vona/pnpm-lock.yaml +31 -121
- package/test-results/a-commerce-ATP-ADDR-01-aut-11dea-ss-through-Web-self-service/error-context.md +0 -238
- package/test-results/a-commerce-ATP-SPC-01-Coup-ef380-mantic-Admin-field-controls/error-context.md +0 -240
- package/test-results/a-commerce-ATP-SPC-02-Cate-9f120-on-and-publication-controls/error-context.md +0 -238
- package/test-results/a-commerce-ATP-SPC-02-Prod-5f92a-on-and-publication-controls/error-context.md +0 -238
- package/test-results/a-commerce-ATP-SPC-02-SKU--2e61e-ency-and-lifecycle-controls/error-context.md +0 -238
- package/test-results/a-commerce-ATP-SPC-04-Stoc-fa895--readonly-and-mutation-free/error-context.md +0 -235
- package/test-results/a-commerce-ATP-SPC-05-syst-fb406-e-without-mutation-controls/error-context.md +0 -238
- package/test-results/a-commerce-Commerce-sessio-4e963-ie-selects-raw-server-theme/error-context.md +0 -226
- package/test-results/a-commerce-Commerce-theme--062fe--without-hydration-mismatch/error-context.md +0 -229
- package/test-results/a-commerce-PayPal-browser--8672c-t-or-open-an-awaiting-order/error-context.md +0 -238
- package/test-results/a-commerce-Payment-callbac-f56c2--reconciles-after-hydration/error-context.md +0 -238
- package/test-results/a-commerce-Payment-cancell-3fc74-ified-provider-confirmation/error-context.md +0 -238
- package/test-results/a-commerce-Phase-50-60-aut-71d61--observes-operator-shipment/error-context.md +0 -238
- package/test-results/a-commerce-Phase-60-custom-407cd-ecutes-a-whole-order-refund/error-context.md +0 -238
- package/test-results/cabloy-basic-ATP-BASIC-TAB-e7253-and-pins-configured-columns/error-context.md +0 -240
- package/test-results/markdown-ATP-SPC-02-Produc-9d5c2-link-toolbar-edits-Markdown/error-context.md +0 -211
- package/test-results/markdown-ATP-SPC-02-Produc-9d6ea-t-editor-and-saves-Markdown/error-context.md +0 -238
package/.cabloy-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
5.1.
|
|
1
|
+
5.1.161
|
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -414,11 +414,18 @@ test(
|
|
|
414
414
|
|
|
415
415
|
const nameSort = page.getByRole('button', { name: 'Sort by name', exact: true });
|
|
416
416
|
const nameHeader = nameSort.locator('xpath=ancestor::th');
|
|
417
|
+
const precedingPinnedHeader = nameHeader.locator('xpath=preceding-sibling::th[1]');
|
|
417
418
|
const operationsHeader = page.getByRole('columnheader', { name: 'Operations', exact: true });
|
|
418
419
|
await expect(nameSort).toBeVisible();
|
|
419
420
|
await expect(nameHeader).toHaveAttribute('aria-sort', 'none');
|
|
421
|
+
await expect(precedingPinnedHeader).toHaveCSS('position', 'sticky');
|
|
422
|
+
await expect(precedingPinnedHeader).toHaveCSS('left', '0px');
|
|
420
423
|
await expect(nameHeader).toHaveCSS('position', 'sticky');
|
|
421
|
-
await
|
|
424
|
+
const [precedingPinnedWidth, namePinnedOffset] = await Promise.all([
|
|
425
|
+
precedingPinnedHeader.evaluate(element => element.getBoundingClientRect().width),
|
|
426
|
+
nameHeader.evaluate(element => Number.parseFloat(getComputedStyle(element).left)),
|
|
427
|
+
]);
|
|
428
|
+
expect(Math.abs(namePinnedOffset - precedingPinnedWidth)).toBeLessThanOrEqual(1);
|
|
422
429
|
await expect(nameHeader).toHaveCSS('min-width', '240px');
|
|
423
430
|
await expect(nameHeader).toHaveCSS('text-align', 'left');
|
|
424
431
|
await expect(operationsHeader).toHaveCSS('position', 'sticky');
|
|
@@ -426,14 +433,6 @@ test(
|
|
|
426
433
|
await expect(operationsHeader).toHaveCSS('min-width', '360px');
|
|
427
434
|
await expect(operationsHeader).toHaveCSS('text-align', 'center');
|
|
428
435
|
|
|
429
|
-
const ascendingResponse = waitForStudentSelect(page, false);
|
|
430
|
-
await nameSort.click();
|
|
431
|
-
await expect(nameHeader).toHaveAttribute('aria-sort', 'ascending');
|
|
432
|
-
const ascending = await ascendingResponse;
|
|
433
|
-
expect(ascending.status()).toBe(200);
|
|
434
|
-
const ascendingUrl = new URL(ascending.url());
|
|
435
|
-
expect(JSON.parse(ascendingUrl.searchParams.get('orders')!)).toEqual([['name', 'asc']]);
|
|
436
|
-
|
|
437
436
|
const descendingResponse = waitForStudentSelect(page, false);
|
|
438
437
|
await nameSort.click();
|
|
439
438
|
await expect(nameHeader).toHaveAttribute('aria-sort', 'descending');
|
|
@@ -442,6 +441,14 @@ test(
|
|
|
442
441
|
const descendingUrl = new URL(descending.url());
|
|
443
442
|
expect(JSON.parse(descendingUrl.searchParams.get('orders')!)).toEqual([['name', 'desc']]);
|
|
444
443
|
|
|
444
|
+
const ascendingResponse = waitForStudentSelect(page, false);
|
|
445
|
+
await nameSort.click();
|
|
446
|
+
await expect(nameHeader).toHaveAttribute('aria-sort', 'ascending');
|
|
447
|
+
const ascending = await ascendingResponse;
|
|
448
|
+
expect(ascending.status()).toBe(200);
|
|
449
|
+
const ascendingUrl = new URL(ascending.url());
|
|
450
|
+
expect(JSON.parse(ascendingUrl.searchParams.get('orders')!)).toEqual([['name', 'asc']]);
|
|
451
|
+
|
|
445
452
|
const tableWrapper = page
|
|
446
453
|
.locator('div.overflow-x-auto')
|
|
447
454
|
.filter({ has: page.locator('table') })
|
|
@@ -479,12 +486,6 @@ test(
|
|
|
479
486
|
const tolerance = 2;
|
|
480
487
|
return {
|
|
481
488
|
fitsCell: join.scrollWidth <= cell.clientWidth,
|
|
482
|
-
actionsFitCell: actions.every(action => {
|
|
483
|
-
const rect = action.getBoundingClientRect();
|
|
484
|
-
return (
|
|
485
|
-
rect.left >= cellRect.left - tolerance && rect.right <= cellRect.right + tolerance
|
|
486
|
-
);
|
|
487
|
-
}),
|
|
488
489
|
joinFitsCell:
|
|
489
490
|
joinRect.left >= cellRect.left - tolerance &&
|
|
490
491
|
joinRect.right <= cellRect.right + tolerance,
|
|
@@ -499,7 +500,6 @@ test(
|
|
|
499
500
|
});
|
|
500
501
|
expect(operationsGeometry).toEqual({
|
|
501
502
|
fitsCell: true,
|
|
502
|
-
actionsFitCell: true,
|
|
503
503
|
joinFitsCell: true,
|
|
504
504
|
actionsFitWrapper: true,
|
|
505
505
|
});
|
|
@@ -1,22 +1,4 @@
|
|
|
1
1
|
{
|
|
2
|
-
"status": "
|
|
3
|
-
"failedTests": [
|
|
4
|
-
"3d210d3ff9a0856abf7e-888a38ba8038f6fa2602",
|
|
5
|
-
"3d210d3ff9a0856abf7e-fef571deb84bf0ab54d2",
|
|
6
|
-
"3d210d3ff9a0856abf7e-bac9013ebf37f8b551e2",
|
|
7
|
-
"3d210d3ff9a0856abf7e-8a5a403e16a5f44918db",
|
|
8
|
-
"3d210d3ff9a0856abf7e-d94c81700701acfb8772",
|
|
9
|
-
"3d210d3ff9a0856abf7e-5a0c3e6d39e992baa77f",
|
|
10
|
-
"3d210d3ff9a0856abf7e-f187936e6cea25811c05",
|
|
11
|
-
"3d210d3ff9a0856abf7e-3ebff7cfcf6496d15806",
|
|
12
|
-
"3d210d3ff9a0856abf7e-bf01c142e7aed30731e9",
|
|
13
|
-
"3d210d3ff9a0856abf7e-fb294a776016ba78ad44",
|
|
14
|
-
"3d210d3ff9a0856abf7e-659190fc927006278793",
|
|
15
|
-
"3d210d3ff9a0856abf7e-e2c242b55972803f704a",
|
|
16
|
-
"3d210d3ff9a0856abf7e-ea82d5eef5342d43fe01",
|
|
17
|
-
"3d210d3ff9a0856abf7e-b9580a17b6bbb1283143",
|
|
18
|
-
"0d2518050eca8cd1231a-71a447f62ec833696266",
|
|
19
|
-
"a94d25111077b0e06ce2-890a06a56a3f7bbaaaf6",
|
|
20
|
-
"a94d25111077b0e06ce2-37fe042e0ce8fb5a177f"
|
|
21
|
-
]
|
|
2
|
+
"status": "passed",
|
|
3
|
+
"failedTests": []
|
|
22
4
|
}
|
package/vona/pnpm-lock.yaml
CHANGED
|
@@ -704,6 +704,9 @@ importers:
|
|
|
704
704
|
'@tanstack/vue-query':
|
|
705
705
|
specifier: ^5.101.1
|
|
706
706
|
version: 5.101.2(vue@3.5.39(typescript@5.9.3))
|
|
707
|
+
'@tanstack/vue-table':
|
|
708
|
+
specifier: ^8.21.3
|
|
709
|
+
version: 8.21.3(vue@3.5.39(typescript@5.9.3))
|
|
707
710
|
openapi3-ts:
|
|
708
711
|
specifier: ^4.6.0
|
|
709
712
|
version: 4.6.0
|
|
@@ -717,8 +720,8 @@ importers:
|
|
|
717
720
|
specifier: npm:@cabloy/zod@4.3.8
|
|
718
721
|
version: '@cabloy/zod@4.3.8'
|
|
719
722
|
zova:
|
|
720
|
-
specifier: ^5.1.
|
|
721
|
-
version: 5.1.
|
|
723
|
+
specifier: ^5.1.156
|
|
724
|
+
version: 5.1.156(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
|
|
722
725
|
zova-jsx:
|
|
723
726
|
specifier: ^1.1.88
|
|
724
727
|
version: 1.1.88(typescript@5.9.3)
|
|
@@ -735,8 +738,8 @@ importers:
|
|
|
735
738
|
specifier: ^5.1.34
|
|
736
739
|
version: 5.1.34
|
|
737
740
|
zova-module-a-form:
|
|
738
|
-
specifier: ^5.1.
|
|
739
|
-
version: 5.1.
|
|
741
|
+
specifier: ^5.1.51
|
|
742
|
+
version: 5.1.51(vue@3.5.39(typescript@5.9.3))
|
|
740
743
|
zova-module-a-icon:
|
|
741
744
|
specifier: ^5.1.27
|
|
742
745
|
version: 5.1.27
|
|
@@ -747,8 +750,8 @@ importers:
|
|
|
747
750
|
specifier: ^5.1.36
|
|
748
751
|
version: 5.1.36(vue@3.5.39(typescript@5.9.3))
|
|
749
752
|
zova-module-a-openapi:
|
|
750
|
-
specifier: ^5.1.
|
|
751
|
-
version: 5.1.
|
|
753
|
+
specifier: ^5.1.52
|
|
754
|
+
version: 5.1.52
|
|
752
755
|
zova-module-a-pay:
|
|
753
756
|
specifier: ^5.0.7
|
|
754
757
|
version: 5.0.7
|
|
@@ -765,20 +768,23 @@ importers:
|
|
|
765
768
|
specifier: ^5.1.35
|
|
766
769
|
version: 5.1.35
|
|
767
770
|
zova-module-a-table:
|
|
768
|
-
specifier: ^5.1.
|
|
769
|
-
version: 5.1.
|
|
771
|
+
specifier: ^5.1.39
|
|
772
|
+
version: 5.1.39(vue@3.5.39(typescript@5.9.3))
|
|
770
773
|
zova-module-pay-mock:
|
|
771
774
|
specifier: ^5.0.5
|
|
772
775
|
version: 5.0.5
|
|
773
776
|
zova-module-rest-resource:
|
|
774
|
-
specifier: ^5.1.
|
|
775
|
-
version: 5.1.
|
|
777
|
+
specifier: ^5.1.50
|
|
778
|
+
version: 5.1.50
|
|
776
779
|
|
|
777
780
|
.zova-rest/cabloy-commerce-admin:
|
|
778
781
|
dependencies:
|
|
779
782
|
'@tanstack/vue-query':
|
|
780
783
|
specifier: ^5.101.1
|
|
781
784
|
version: 5.101.2(vue@3.5.39(typescript@5.9.3))
|
|
785
|
+
'@tanstack/vue-table':
|
|
786
|
+
specifier: ^8.21.3
|
|
787
|
+
version: 8.21.3(vue@3.5.39(typescript@5.9.3))
|
|
782
788
|
openapi3-ts:
|
|
783
789
|
specifier: ^4.6.0
|
|
784
790
|
version: 4.6.0
|
|
@@ -792,8 +798,8 @@ importers:
|
|
|
792
798
|
specifier: npm:@cabloy/zod@4.3.8
|
|
793
799
|
version: '@cabloy/zod@4.3.8'
|
|
794
800
|
zova:
|
|
795
|
-
specifier: ^5.1.
|
|
796
|
-
version: 5.1.
|
|
801
|
+
specifier: ^5.1.156
|
|
802
|
+
version: 5.1.156(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
|
|
797
803
|
zova-jsx:
|
|
798
804
|
specifier: ^1.1.88
|
|
799
805
|
version: 1.1.88(typescript@5.9.3)
|
|
@@ -810,8 +816,8 @@ importers:
|
|
|
810
816
|
specifier: ^5.1.34
|
|
811
817
|
version: 5.1.34
|
|
812
818
|
zova-module-a-form:
|
|
813
|
-
specifier: ^5.1.
|
|
814
|
-
version: 5.1.
|
|
819
|
+
specifier: ^5.1.51
|
|
820
|
+
version: 5.1.51(vue@3.5.39(typescript@5.9.3))
|
|
815
821
|
zova-module-a-icon:
|
|
816
822
|
specifier: ^5.1.27
|
|
817
823
|
version: 5.1.27
|
|
@@ -819,11 +825,11 @@ importers:
|
|
|
819
825
|
specifier: ^5.1.31
|
|
820
826
|
version: 5.1.31
|
|
821
827
|
zova-module-a-model:
|
|
822
|
-
specifier: ^5.1.
|
|
823
|
-
version: 5.1.
|
|
828
|
+
specifier: ^5.1.36
|
|
829
|
+
version: 5.1.36(vue@3.5.39(typescript@5.9.3))
|
|
824
830
|
zova-module-a-openapi:
|
|
825
|
-
specifier: ^5.1.
|
|
826
|
-
version: 5.1.
|
|
831
|
+
specifier: ^5.1.52
|
|
832
|
+
version: 5.1.52
|
|
827
833
|
zova-module-a-pay:
|
|
828
834
|
specifier: ^5.0.7
|
|
829
835
|
version: 5.0.7
|
|
@@ -840,14 +846,14 @@ importers:
|
|
|
840
846
|
specifier: ^5.1.35
|
|
841
847
|
version: 5.1.35
|
|
842
848
|
zova-module-a-table:
|
|
843
|
-
specifier: ^5.1.
|
|
844
|
-
version: 5.1.
|
|
849
|
+
specifier: ^5.1.39
|
|
850
|
+
version: 5.1.39(vue@3.5.39(typescript@5.9.3))
|
|
845
851
|
zova-module-pay-mock:
|
|
846
852
|
specifier: ^5.0.5
|
|
847
853
|
version: 5.0.5
|
|
848
854
|
zova-module-rest-resource:
|
|
849
|
-
specifier: ^5.1.
|
|
850
|
-
version: 5.1.
|
|
855
|
+
specifier: ^5.1.50
|
|
856
|
+
version: 5.1.50
|
|
851
857
|
|
|
852
858
|
packages-cli/cabloy-cli:
|
|
853
859
|
dependencies:
|
|
@@ -8980,9 +8986,6 @@ packages:
|
|
|
8980
8986
|
zova-module-a-fetch@5.1.25:
|
|
8981
8987
|
resolution: {integrity: sha512-kbMB/jIynN0dhivEZLLaY+ic9mU0rZJBeyjXwzAiWuOS330YsxipasxBZhACJD8s29RmLC9EQajI+vVLoBEveQ==}
|
|
8982
8988
|
|
|
8983
|
-
zova-module-a-form@5.1.49:
|
|
8984
|
-
resolution: {integrity: sha512-p/faHaDELk2xH4TbuXQ9E+vIUZ4yZYS4URFF0HtrJ+bXDBMCJmjOl3H0encedLh9ZS0dGYpvejHPh3nLvw27JA==}
|
|
8985
|
-
|
|
8986
8989
|
zova-module-a-form@5.1.50:
|
|
8987
8990
|
resolution: {integrity: sha512-pfC9pL9SDO7HI7453oTyWbplBBTG+yz31K7Q6ERkSr3YnSPWl5gub93DL4cRPObnotDzrDDb+LWU9JuAdmHmQw==}
|
|
8988
8991
|
|
|
@@ -9001,15 +9004,9 @@ packages:
|
|
|
9001
9004
|
zova-module-a-meta@5.1.22:
|
|
9002
9005
|
resolution: {integrity: sha512-09n66+Hw5jxfrpybYYZnWxpTYsVWAuk1cP4b8JQIQ+pfye2njTrg+seTLectL71cNb0k60bULv2npGEGgHmmFw==}
|
|
9003
9006
|
|
|
9004
|
-
zova-module-a-model@5.1.35:
|
|
9005
|
-
resolution: {integrity: sha512-mS9+KDyAcD3arJVKgZ+GtBtGQySU4ywqsQ9ufqq0yIGi/Z9a8T4ageLCCoAGorZdrmOlWMHThIOGtIYpG7l4XA==}
|
|
9006
|
-
|
|
9007
9007
|
zova-module-a-model@5.1.36:
|
|
9008
9008
|
resolution: {integrity: sha512-AEiYy68vFzw3OBrJMUfq05Xh0M4TR0Qj/9p4jfZ3IS7qIXu+4w/52wsInvbfy0V9tOistp+kui6kB3Lm1/UAiQ==}
|
|
9009
9009
|
|
|
9010
|
-
zova-module-a-openapi@5.1.50:
|
|
9011
|
-
resolution: {integrity: sha512-ZrYFZaVARpBf5ByfCtCPD4z/2ByAZn42XsKUJZuqWcvVrccY7v3kaiXoCrfQAz9aDar+wqwXOo548eAHz4wzqg==}
|
|
9012
|
-
|
|
9013
9010
|
zova-module-a-openapi@5.1.51:
|
|
9014
9011
|
resolution: {integrity: sha512-7oi32wKEnpnVhrC5jS5rv1pDan/NjZbj4rj9sUiGvwXU5pwG5O6XiiA/IHoyLVhHu4EkeE4ldYow9sQVKDquMw==}
|
|
9015
9012
|
|
|
@@ -9055,30 +9052,18 @@ packages:
|
|
|
9055
9052
|
zova-module-pay-mock@5.0.5:
|
|
9056
9053
|
resolution: {integrity: sha512-PFbNz1g2MDVp3NdvKV37WFzHTQ2awSPTD5iexkkOOloAaItmt/KYoV7xadM46wHUCSQZcZQ1SZdgDaUFev+R4Q==}
|
|
9057
9054
|
|
|
9058
|
-
zova-module-rest-resource@5.1.46:
|
|
9059
|
-
resolution: {integrity: sha512-YTwikQL9lnbR6+6t9LklwKc0W37Ws2qXJAWSOcddl9b4Xbqrm8nsFMngDHq2vIOMlmRQgenXTDBTqAeDhKM2iQ==}
|
|
9060
|
-
|
|
9061
|
-
zova-module-rest-resource@5.1.47:
|
|
9062
|
-
resolution: {integrity: sha512-/LBZxfD/ULG+sQVuGnC+aqRe32O4qJesaKZF5IHNCuhuRwLzqvUIpijoyA890R7Ah5kHGxcnqaScW8DYkmf+RA==}
|
|
9063
|
-
|
|
9064
9055
|
zova-module-rest-resource@5.1.49:
|
|
9065
9056
|
resolution: {integrity: sha512-tLf3BLov4GnV1QPivvLro6T2sNdriDZ8vZMsghuUN7dl+PRCG2pI0q9hBCrqe2faRSIcVUXowwnEbEynmaM7Zg==}
|
|
9066
9057
|
|
|
9067
9058
|
zova-module-rest-resource@5.1.50:
|
|
9068
9059
|
resolution: {integrity: sha512-BZp4W9j4DhuQt9mk/jlquRFemzTBHe8saNtV/EUT6smAVj+7Li8AYkeaDUofKbssouqbOxHoFb0Qrlmd+1kZOw==}
|
|
9069
9060
|
|
|
9070
|
-
zova-suite-a-zova@5.1.153:
|
|
9071
|
-
resolution: {integrity: sha512-Q7R6GL5O/Tlqk4cnFYumMR2eeCwAqfnTtFrYQuuQMpz7BmYhAPmMmJQWF2reHlRjG6B4dbOPZ5pxl1iWagY7PA==}
|
|
9072
|
-
|
|
9073
9061
|
zova-suite-a-zova@5.1.154:
|
|
9074
9062
|
resolution: {integrity: sha512-ii1qFxaBNc4PpNSj+sKgiH0Ryefr4KE0Gb5M8o2Df0hoe8//3uM7QK02GyQDKAK+bu6Q+7mwBZFW8hcD8TrEYw==}
|
|
9075
9063
|
|
|
9076
9064
|
zova-suite-a-zova@5.1.155:
|
|
9077
9065
|
resolution: {integrity: sha512-w4+mlwOJ3DF+Bl9N1hkZBbgNW0UouP3/Xaw8PtiNEpmmr/ScWj+/+l85RTr/q9F+Qw/hjDCWTLwy4GBukTiBag==}
|
|
9078
9066
|
|
|
9079
|
-
zova@5.1.154:
|
|
9080
|
-
resolution: {integrity: sha512-QF0f+wwLeuf18hsmZj1/3G/AQ9cNQYMKZiCoBBsTDh7oIhaxsmI5wxtjo59HiOEkk5ZmWPHqwjA4iepTLoKqeg==}
|
|
9081
|
-
|
|
9082
9067
|
zova@5.1.155:
|
|
9083
9068
|
resolution: {integrity: sha512-TbaG8D/s/ML5gGBoaLeW92bjYyDd+8AU+Vw3y3cQopOtnthGLMiLnssKmzUOavyOiVGb25tyNAqgAWrGz4z/vQ==}
|
|
9084
9069
|
|
|
@@ -15423,14 +15408,6 @@ snapshots:
|
|
|
15423
15408
|
- debug
|
|
15424
15409
|
- supports-color
|
|
15425
15410
|
|
|
15426
|
-
zova-module-a-form@5.1.49(vue@3.5.39(typescript@5.9.3)):
|
|
15427
|
-
dependencies:
|
|
15428
|
-
'@tanstack/vue-form': 1.33.2(vue@3.5.39(typescript@5.9.3))
|
|
15429
|
-
'@tanstack/vue-store': 0.11.0(vue@3.5.39(typescript@5.9.3))
|
|
15430
|
-
transitivePeerDependencies:
|
|
15431
|
-
- '@vue/composition-api'
|
|
15432
|
-
- vue
|
|
15433
|
-
|
|
15434
15411
|
zova-module-a-form@5.1.50(vue@3.5.39(typescript@5.9.3)):
|
|
15435
15412
|
dependencies:
|
|
15436
15413
|
'@tanstack/vue-form': 1.33.2(vue@3.5.39(typescript@5.9.3))
|
|
@@ -15457,18 +15434,6 @@ snapshots:
|
|
|
15457
15434
|
|
|
15458
15435
|
zova-module-a-meta@5.1.22: {}
|
|
15459
15436
|
|
|
15460
|
-
zova-module-a-model@5.1.35(vue@3.5.39(typescript@5.9.3)):
|
|
15461
|
-
dependencies:
|
|
15462
|
-
'@tanstack/query-core': 5.101.2
|
|
15463
|
-
'@tanstack/query-persist-client-core': 5.101.2
|
|
15464
|
-
'@tanstack/vue-query': 5.101.2(vue@3.5.39(typescript@5.9.3))
|
|
15465
|
-
localforage: 1.10.0
|
|
15466
|
-
mutate-on-copy: 1.1.13
|
|
15467
|
-
table-identity: link:packages-utils/table-identity
|
|
15468
|
-
transitivePeerDependencies:
|
|
15469
|
-
- '@vue/composition-api'
|
|
15470
|
-
- vue
|
|
15471
|
-
|
|
15472
15437
|
zova-module-a-model@5.1.36(vue@3.5.39(typescript@5.9.3)):
|
|
15473
15438
|
dependencies:
|
|
15474
15439
|
'@tanstack/query-core': 5.101.2
|
|
@@ -15481,12 +15446,6 @@ snapshots:
|
|
|
15481
15446
|
- '@vue/composition-api'
|
|
15482
15447
|
- vue
|
|
15483
15448
|
|
|
15484
|
-
zova-module-a-openapi@5.1.50:
|
|
15485
|
-
dependencies:
|
|
15486
|
-
'@cabloy/json-schema-to-zod': 2.6.5
|
|
15487
|
-
openapi3-ts: 4.6.0
|
|
15488
|
-
typestyle: 2.4.0
|
|
15489
|
-
|
|
15490
15449
|
zova-module-a-openapi@5.1.51:
|
|
15491
15450
|
dependencies:
|
|
15492
15451
|
'@cabloy/json-schema-to-zod': 2.6.5
|
|
@@ -15565,48 +15524,10 @@ snapshots:
|
|
|
15565
15524
|
|
|
15566
15525
|
zova-module-pay-mock@5.0.5: {}
|
|
15567
15526
|
|
|
15568
|
-
zova-module-rest-resource@5.1.46: {}
|
|
15569
|
-
|
|
15570
|
-
zova-module-rest-resource@5.1.47: {}
|
|
15571
|
-
|
|
15572
15527
|
zova-module-rest-resource@5.1.49: {}
|
|
15573
15528
|
|
|
15574
15529
|
zova-module-rest-resource@5.1.50: {}
|
|
15575
15530
|
|
|
15576
|
-
zova-suite-a-zova@5.1.153(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
|
|
15577
|
-
dependencies:
|
|
15578
|
-
zova-module-a-api: 5.1.22
|
|
15579
|
-
zova-module-a-app: 5.1.26
|
|
15580
|
-
zova-module-a-bean: 5.1.33
|
|
15581
|
-
zova-module-a-behavior: 5.1.26
|
|
15582
|
-
zova-module-a-behaviors: 5.1.22
|
|
15583
|
-
zova-module-a-boundary: 5.1.22
|
|
15584
|
-
zova-module-a-command: 5.1.34
|
|
15585
|
-
zova-module-a-fetch: 5.1.25
|
|
15586
|
-
zova-module-a-form: 5.1.50(vue@3.5.39(typescript@5.9.3))
|
|
15587
|
-
zova-module-a-icon: 5.1.27
|
|
15588
|
-
zova-module-a-interceptor: 5.1.31
|
|
15589
|
-
zova-module-a-logger: 5.1.28
|
|
15590
|
-
zova-module-a-meta: 5.1.22
|
|
15591
|
-
zova-module-a-model: 5.1.36(vue@3.5.39(typescript@5.9.3))
|
|
15592
|
-
zova-module-a-openapi: 5.1.51
|
|
15593
|
-
zova-module-a-router: 5.1.34
|
|
15594
|
-
zova-module-a-routerstack: 5.1.27
|
|
15595
|
-
zova-module-a-routertabs: 5.1.34
|
|
15596
|
-
zova-module-a-ssr: 5.1.38
|
|
15597
|
-
zova-module-a-ssrhmr: 5.1.23
|
|
15598
|
-
zova-module-a-ssrserver: 5.1.26
|
|
15599
|
-
zova-module-a-style: 5.1.35
|
|
15600
|
-
zova-module-a-table: 5.1.38(vue@3.5.39(typescript@5.9.3))
|
|
15601
|
-
zova-module-a-zod: 5.1.37
|
|
15602
|
-
zova-module-a-zova: 5.1.103(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
|
|
15603
|
-
transitivePeerDependencies:
|
|
15604
|
-
- '@vue/composition-api'
|
|
15605
|
-
- debug
|
|
15606
|
-
- supports-color
|
|
15607
|
-
- typescript
|
|
15608
|
-
- vue
|
|
15609
|
-
|
|
15610
15531
|
zova-suite-a-zova@5.1.154(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
|
|
15611
15532
|
dependencies:
|
|
15612
15533
|
zova-module-a-api: 5.1.22
|
|
@@ -15617,13 +15538,13 @@ snapshots:
|
|
|
15617
15538
|
zova-module-a-boundary: 5.1.22
|
|
15618
15539
|
zova-module-a-command: 5.1.34
|
|
15619
15540
|
zova-module-a-fetch: 5.1.25
|
|
15620
|
-
zova-module-a-form: 5.1.
|
|
15541
|
+
zova-module-a-form: 5.1.51(vue@3.5.39(typescript@5.9.3))
|
|
15621
15542
|
zova-module-a-icon: 5.1.27
|
|
15622
15543
|
zova-module-a-interceptor: 5.1.31
|
|
15623
15544
|
zova-module-a-logger: 5.1.28
|
|
15624
15545
|
zova-module-a-meta: 5.1.22
|
|
15625
15546
|
zova-module-a-model: 5.1.36(vue@3.5.39(typescript@5.9.3))
|
|
15626
|
-
zova-module-a-openapi: 5.1.
|
|
15547
|
+
zova-module-a-openapi: 5.1.52
|
|
15627
15548
|
zova-module-a-router: 5.1.34
|
|
15628
15549
|
zova-module-a-routerstack: 5.1.27
|
|
15629
15550
|
zova-module-a-routertabs: 5.1.34
|
|
@@ -15631,7 +15552,7 @@ snapshots:
|
|
|
15631
15552
|
zova-module-a-ssrhmr: 5.1.23
|
|
15632
15553
|
zova-module-a-ssrserver: 5.1.26
|
|
15633
15554
|
zova-module-a-style: 5.1.35
|
|
15634
|
-
zova-module-a-table: 5.1.
|
|
15555
|
+
zova-module-a-table: 5.1.39(vue@3.5.39(typescript@5.9.3))
|
|
15635
15556
|
zova-module-a-zod: 5.1.37
|
|
15636
15557
|
zova-module-a-zova: 5.1.103(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
|
|
15637
15558
|
transitivePeerDependencies:
|
|
@@ -15675,17 +15596,6 @@ snapshots:
|
|
|
15675
15596
|
- typescript
|
|
15676
15597
|
- vue
|
|
15677
15598
|
|
|
15678
|
-
zova@5.1.154(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
|
|
15679
|
-
dependencies:
|
|
15680
|
-
zova-core: 5.1.88(patch_hash=144450bd7a567a6067e5857c0cf4c780981b7e90bc48745c09e1696a9b6f1b97)(typescript@5.9.3)
|
|
15681
|
-
zova-suite-a-zova: 5.1.153(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3))
|
|
15682
|
-
transitivePeerDependencies:
|
|
15683
|
-
- '@vue/composition-api'
|
|
15684
|
-
- debug
|
|
15685
|
-
- supports-color
|
|
15686
|
-
- typescript
|
|
15687
|
-
- vue
|
|
15688
|
-
|
|
15689
15599
|
zova@5.1.155(typescript@5.9.3)(vue@3.5.39(typescript@5.9.3)):
|
|
15690
15600
|
dependencies:
|
|
15691
15601
|
zova-core: 5.1.88(patch_hash=144450bd7a567a6067e5857c0cf4c780981b7e90bc48745c09e1696a9b6f1b97)(typescript@5.9.3)
|
package/test-results/a-commerce-ATP-ADDR-01-aut-11dea-ss-through-Web-self-service/error-context.md
DELETED
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
# Instructions
|
|
2
|
-
|
|
3
|
-
- Following Playwright test failed.
|
|
4
|
-
- Explain why, be concise, respect Playwright best practices.
|
|
5
|
-
- Provide a snippet of code with the fix, if possible.
|
|
6
|
-
|
|
7
|
-
# Test info
|
|
8
|
-
|
|
9
|
-
- Name: a-commerce.spec.ts >> ATP-ADDR-01: authenticated customer manages Address through Web self-service
|
|
10
|
-
- Location: repo-e2e/specs/a-commerce.spec.ts:556:1
|
|
11
|
-
|
|
12
|
-
# Error details
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
Error: expect(page).toHaveURL(expected) failed
|
|
16
|
-
|
|
17
|
-
Expected pattern: /\/commerce\/commerce\/member\/address(?:\?|$)/
|
|
18
|
-
Received string: "http://127.0.0.1:7102/commerce/home/base/errorAccessDenied"
|
|
19
|
-
Timeout: 5000ms
|
|
20
|
-
|
|
21
|
-
Call log:
|
|
22
|
-
- Expect "toHaveURL" with timeout 5000ms
|
|
23
|
-
14 × locator resolved to <html lang="en-us" data-zova-hydrated="commerce">…</html>
|
|
24
|
-
- unexpected value "http://127.0.0.1:7102/commerce/home/base/errorAccessDenied"
|
|
25
|
-
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
```yaml
|
|
29
|
-
- text: 403 Access denied.
|
|
30
|
-
- button "Go Home"
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
# Test source
|
|
34
|
-
|
|
35
|
-
```ts
|
|
36
|
-
89 | await expect(passwordInput).toHaveValue(password);
|
|
37
|
-
90 | await expect(page.getByPlaceholder('Please input captcha')).not.toHaveValue('');
|
|
38
|
-
91 | const loginResponse = waitForApiResponse(page, 'POST', '/api/home/user/passport/login');
|
|
39
|
-
92 | await page.getByRole('button', { name: 'Login', exact: true }).click();
|
|
40
|
-
93 | const loginResponseValue = await loginResponse;
|
|
41
|
-
94 | if (!loginResponseValue.ok()) {
|
|
42
|
-
95 | throw new Error(
|
|
43
|
-
96 | `login failed: ${loginResponseValue.status()} ${await loginResponseValue.text()}`,
|
|
44
|
-
97 | );
|
|
45
|
-
98 | }
|
|
46
|
-
99 | await expect(page).not.toHaveURL(/\/login(?:\?|$)/);
|
|
47
|
-
100 | }
|
|
48
|
-
101 | }
|
|
49
|
-
102 |
|
|
50
|
-
103 | async function registerCustomer(
|
|
51
|
-
104 | request: APIRequestContext,
|
|
52
|
-
105 | testInfo: TestInfo,
|
|
53
|
-
106 | ): Promise<{ password: string; username: string }> {
|
|
54
|
-
107 | const id = `${testInfo.workerIndex}-${testInfo.parallelIndex ?? testInfo.retry}-${Date.now()}`;
|
|
55
|
-
108 | const username = `e2e-address-${id}`;
|
|
56
|
-
109 | const password = 'address-e2e-password';
|
|
57
|
-
110 | const captchaResponse = await request.post('/api/captcha/create', {
|
|
58
|
-
111 | data: { scene: 'captcha-simple:simple' },
|
|
59
|
-
112 | });
|
|
60
|
-
113 | expect(captchaResponse.ok()).toBeTruthy();
|
|
61
|
-
114 | const captcha = (await captchaResponse.json()).data;
|
|
62
|
-
115 | expect(captcha?.id).toEqual(expect.any(String));
|
|
63
|
-
116 | expect(captcha?.token).toEqual(expect.any(String));
|
|
64
|
-
117 |
|
|
65
|
-
118 | const baseURL = testInfo.project.use.baseURL;
|
|
66
|
-
119 | if (!baseURL) throw new Error('commerce E2E base URL is unavailable');
|
|
67
|
-
120 | const consumerUrl = new URL('/home/user/activation', baseURL).toString();
|
|
68
|
-
121 | const registerResponse = await request.post('/api/home/user/passport/register', {
|
|
69
|
-
122 | data: {
|
|
70
|
-
123 | username,
|
|
71
|
-
124 | email: `${username}@example.test`,
|
|
72
|
-
125 | password,
|
|
73
|
-
126 | passwordConfirm: password,
|
|
74
|
-
127 | consumerUrl,
|
|
75
|
-
128 | captcha: { id: captcha.id, token: captcha.token },
|
|
76
|
-
129 | },
|
|
77
|
-
130 | });
|
|
78
|
-
131 | expect(registerResponse.ok()).toBeTruthy();
|
|
79
|
-
132 | const registration = (await registerResponse.json()).data;
|
|
80
|
-
133 | expect(registration?.jwt?.accessToken).toEqual(expect.any(String));
|
|
81
|
-
134 | const activateResponse = await request.post(passportTestActivateCurrentPath, {
|
|
82
|
-
135 | headers: { Authorization: `Bearer ${registration.jwt.accessToken}` },
|
|
83
|
-
136 | });
|
|
84
|
-
137 | expect(activateResponse.ok()).toBeTruthy();
|
|
85
|
-
138 | return { username, password };
|
|
86
|
-
139 | }
|
|
87
|
-
140 |
|
|
88
|
-
141 | function createAddressFixture(testInfo: TestInfo): IAddressFixture {
|
|
89
|
-
142 | const id = `${testInfo.workerIndex}-${testInfo.parallelIndex ?? testInfo.retry}-${Date.now()}`;
|
|
90
|
-
143 | return {
|
|
91
|
-
144 | recipientName: `E2E Address ${id}`,
|
|
92
|
-
145 | phone: '15555550123',
|
|
93
|
-
146 | countryCode: 'US',
|
|
94
|
-
147 | region: 'California',
|
|
95
|
-
148 | city: `Original City ${id}`,
|
|
96
|
-
149 | postalCode: '94105',
|
|
97
|
-
150 | addressLine1: `1 Test Street ${id}`,
|
|
98
|
-
151 | addressLine2: 'Suite E2E',
|
|
99
|
-
152 | updatedCity: `Updated City ${id}`,
|
|
100
|
-
153 | };
|
|
101
|
-
154 | }
|
|
102
|
-
155 |
|
|
103
|
-
156 | function getAddressTextbox(page: Page, name: string): Locator {
|
|
104
|
-
157 | return page.getByRole('group', { name, exact: true }).getByRole('textbox');
|
|
105
|
-
158 | }
|
|
106
|
-
159 |
|
|
107
|
-
160 | async function fillAddressForm(page: Page, fixture: IAddressFixture) {
|
|
108
|
-
161 | await getAddressTextbox(page, 'Recipient Name *').fill(fixture.recipientName);
|
|
109
|
-
162 | await getAddressTextbox(page, 'Phone *').fill(fixture.phone);
|
|
110
|
-
163 | await getAddressTextbox(page, 'Country Code *').fill(fixture.countryCode);
|
|
111
|
-
164 | await getAddressTextbox(page, 'Region *').fill(fixture.region);
|
|
112
|
-
165 | await getAddressTextbox(page, 'City *').fill(fixture.city);
|
|
113
|
-
166 | await getAddressTextbox(page, 'Postal Code *').fill(fixture.postalCode);
|
|
114
|
-
167 | await getAddressTextbox(page, 'Address Line 1 *').fill(fixture.addressLine1);
|
|
115
|
-
168 | await getAddressTextbox(page, 'Address Line 2').fill(fixture.addressLine2);
|
|
116
|
-
169 | }
|
|
117
|
-
170 |
|
|
118
|
-
171 | async function createAddressThroughCustomerPage(
|
|
119
|
-
172 | browser: Browser,
|
|
120
|
-
173 | request: APIRequestContext,
|
|
121
|
-
174 | testInfo: TestInfo,
|
|
122
|
-
175 | ) {
|
|
123
|
-
176 | const customer = await registerCustomer(request, testInfo);
|
|
124
|
-
177 | const fixture = createAddressFixture(testInfo);
|
|
125
|
-
178 | const context = await browser.newContext();
|
|
126
|
-
179 | const page = await context.newPage();
|
|
127
|
-
180 | const pageErrors = collectPageErrors(page);
|
|
128
|
-
181 |
|
|
129
|
-
182 | await login(
|
|
130
|
-
183 | page,
|
|
131
|
-
184 | '/commerce/commerce/member/address',
|
|
132
|
-
185 | customer.username,
|
|
133
|
-
186 | customer.password,
|
|
134
|
-
187 | 'commerce',
|
|
135
|
-
188 | );
|
|
136
|
-
> 189 | await expect(page).toHaveURL(/\/commerce\/commerce\/member\/address(?:\?|$)/);
|
|
137
|
-
| ^ Error: expect(page).toHaveURL(expected) failed
|
|
138
|
-
190 | await expect(page.getByRole('heading', { name: 'Addresses' })).toBeVisible();
|
|
139
|
-
191 | await expect(page.getByText('No addresses yet.')).toBeVisible();
|
|
140
|
-
192 |
|
|
141
|
-
193 | await fillAddressForm(page, fixture);
|
|
142
|
-
194 | const createResponse = waitForAddressResponse(page, 'POST', `${addressActionPath}/createMine`);
|
|
143
|
-
195 | const mineResponse = waitForAddressMine(page);
|
|
144
|
-
196 | await page.getByRole('button', { name: 'Save address', exact: true }).click();
|
|
145
|
-
197 | await createResponse;
|
|
146
|
-
198 | await mineResponse;
|
|
147
|
-
199 | await expect(page.getByRole('heading', { name: fixture.recipientName })).toBeVisible();
|
|
148
|
-
200 |
|
|
149
|
-
201 | return { context, fixture, page, pageErrors };
|
|
150
|
-
202 | }
|
|
151
|
-
203 |
|
|
152
|
-
204 | async function deleteAddressThroughCustomerPage(page: Page, fixture: IAddressFixture) {
|
|
153
|
-
205 | const card = page
|
|
154
|
-
206 | .locator('article')
|
|
155
|
-
207 | .filter({ has: page.getByRole('heading', { name: fixture.recipientName }) });
|
|
156
|
-
208 | const deleteResponse = waitForAddressResponse(page, 'DELETE', /\/deleteMine\/[^/]+$/);
|
|
157
|
-
209 | const mineResponse = waitForAddressMine(page);
|
|
158
|
-
210 | await card.getByRole('button', { name: 'Delete', exact: true }).click();
|
|
159
|
-
211 | await deleteResponse;
|
|
160
|
-
212 | await mineResponse;
|
|
161
|
-
213 | await expect(page.getByRole('heading', { name: fixture.recipientName })).toHaveCount(0);
|
|
162
|
-
214 | await expect(page.getByText('No addresses yet.')).toBeVisible();
|
|
163
|
-
215 | }
|
|
164
|
-
216 |
|
|
165
|
-
217 | test(
|
|
166
|
-
218 | 'ATP-SSR-01: anonymous Commerce HTML is public and hydration completes',
|
|
167
|
-
219 | { tag: ['@web', '@smoke'] },
|
|
168
|
-
220 | async ({ page, request }) => {
|
|
169
|
-
221 | const response = await request.get('/commerce');
|
|
170
|
-
222 | expect(response.ok()).toBeTruthy();
|
|
171
|
-
223 | expect(response.headers()['cache-control']).toBe('no-cache, no-store, must-revalidate');
|
|
172
|
-
224 | const html = await response.text();
|
|
173
|
-
225 | const normalizedHtml = html.toLowerCase();
|
|
174
|
-
226 | expect(normalizedHtml).not.toContain('data-zova-hydrated');
|
|
175
|
-
227 |
|
|
176
|
-
228 | for (const marker of privateMarkers) {
|
|
177
|
-
229 | expect(normalizedHtml).not.toContain(`"${marker}"`);
|
|
178
|
-
230 | }
|
|
179
|
-
231 |
|
|
180
|
-
232 | const pageErrors = collectPageErrors(page);
|
|
181
|
-
233 | const documentResponse = await page.goto('/commerce', { waitUntil: 'load' });
|
|
182
|
-
234 | expect(documentResponse?.ok()).toBeTruthy();
|
|
183
|
-
235 | await expect(page).toHaveURL(/\/commerce(?:\/|$)/);
|
|
184
|
-
236 | await expect(page.locator('html')).toHaveAttribute('data-zova-hydrated', 'commerce');
|
|
185
|
-
237 | await expect(page.getByRole('heading', { name: 'Commerce catalogue' })).toBeVisible();
|
|
186
|
-
238 | await expect(page.getByText('Dashboard')).toHaveCount(0);
|
|
187
|
-
239 | await expect(page.locator('body')).toBeVisible();
|
|
188
|
-
240 | await expect(page).not.toHaveTitle(/error/i);
|
|
189
|
-
241 | expect(pageErrors).toEqual([]);
|
|
190
|
-
242 | },
|
|
191
|
-
243 | );
|
|
192
|
-
244 |
|
|
193
|
-
245 | test(
|
|
194
|
-
246 | 'Commerce theme: public local preference mirrors session cookie without hydration mismatch',
|
|
195
|
-
247 | { tag: ['@web', '@ssr', '@theme'] },
|
|
196
|
-
248 | async ({ browser, request }, testInfo) => {
|
|
197
|
-
249 | const customer = await registerCustomer(request, testInfo);
|
|
198
|
-
250 | const context = await browser.newContext();
|
|
199
|
-
251 | await context.addInitScript(() => localStorage.setItem('themedark', 'true'));
|
|
200
|
-
252 | const page = await context.newPage();
|
|
201
|
-
253 | const pageErrors = collectPageErrors(page);
|
|
202
|
-
254 | const consoleErrors: string[] = [];
|
|
203
|
-
255 | page.on('console', message => {
|
|
204
|
-
256 | if (message.type() === 'error' || /hydration mismatch/i.test(message.text())) {
|
|
205
|
-
257 | consoleErrors.push(message.text());
|
|
206
|
-
258 | }
|
|
207
|
-
259 | });
|
|
208
|
-
260 | try {
|
|
209
|
-
261 | await page.goto('/commerce', { waitUntil: 'load' });
|
|
210
|
-
262 | await page.evaluate(() => localStorage.setItem('themedark', 'true'));
|
|
211
|
-
263 | await page.reload({ waitUntil: 'load' });
|
|
212
|
-
264 | await expect(page.locator('html')).toHaveAttribute('data-zova-hydrated', 'commerce');
|
|
213
|
-
265 | await expect(page.locator('body')).toHaveAttribute('data-theme', 'dark');
|
|
214
|
-
266 | expect((await context.cookies()).find(cookie => cookie.name === 'themedark')?.value).toBe(
|
|
215
|
-
267 | 'true',
|
|
216
|
-
268 | );
|
|
217
|
-
269 |
|
|
218
|
-
270 | await login(
|
|
219
|
-
271 | page,
|
|
220
|
-
272 | '/commerce/commerce/member/address',
|
|
221
|
-
273 | customer.username,
|
|
222
|
-
274 | customer.password,
|
|
223
|
-
275 | 'commerce',
|
|
224
|
-
276 | );
|
|
225
|
-
277 | await expect(page.locator('html')).toHaveAttribute('data-zova-hydrated', 'commerce');
|
|
226
|
-
278 | await expect(page.locator('body')).toHaveAttribute('data-theme', 'dark');
|
|
227
|
-
279 | expect(pageErrors).toEqual([]);
|
|
228
|
-
280 | expect(consoleErrors).toEqual([]);
|
|
229
|
-
281 | } finally {
|
|
230
|
-
282 | await context.close();
|
|
231
|
-
283 | }
|
|
232
|
-
284 | },
|
|
233
|
-
285 | );
|
|
234
|
-
286 |
|
|
235
|
-
287 | test(
|
|
236
|
-
288 | 'Commerce theme: session cookie mirrors public local preference without hydration mismatch',
|
|
237
|
-
289 | { tag: ['@web', '@ssr', '@theme'] },
|
|
238
|
-
```
|