From eddd0f334039f3a30268264e835f04b5e60cff43 Mon Sep 17 00:00:00 2001 From: "Irina V. Kuzmina" Date: Thu, 24 Apr 2025 12:30:16 +0300 Subject: [PATCH 01/10] chore: add e2e test --- .github/workflows/pr-visual-tests.yml | 42 + .gitignore | 2 + package-lock.json | 993 +++++++++++++++++- package.json | 11 +- playwright/playwright.config.ts | 76 ++ playwright/playwright/index.html | 12 + playwright/playwright/index.tsx | 16 + scripts/playwright-docker.sh | 43 + ...arithmic-Y-axis-Basic-1-chromium-linux.png | Bin 0 -> 15812 bytes src/__stories__/ChartStory.tsx | 1 - src/__stories__/Line/LineLogAxis.stories.tsx | 4 +- src/__tests__/line-series.visual.test.tsx | 43 + tsconfig.json | 7 +- 13 files changed, 1230 insertions(+), 20 deletions(-) create mode 100644 .github/workflows/pr-visual-tests.yml create mode 100644 playwright/playwright.config.ts create mode 100644 playwright/playwright/index.html create mode 100644 playwright/playwright/index.tsx create mode 100755 scripts/playwright-docker.sh create mode 100644 src/__snapshots__/line-series.visual.test.tsx-snapshots/Line-series-with-logarithmic-Y-axis-Basic-1-chromium-linux.png create mode 100644 src/__tests__/line-series.visual.test.tsx diff --git a/.github/workflows/pr-visual-tests.yml b/.github/workflows/pr-visual-tests.yml new file mode 100644 index 000000000..8db421aac --- /dev/null +++ b/.github/workflows/pr-visual-tests.yml @@ -0,0 +1,42 @@ +name: PR Visual Tests + +on: + pull_request: + +jobs: + visual_tests: + name: Visual Tests + runs-on: ubuntu-latest + container: + image: mcr.microsoft.com/playwright:v1.49.0-jammy + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + - name: Install Packages + run: npm ci + - name: Run Visual Tests + run: npm run playwright + env: + CI: 'true' + - name: Upload Playwright Report + if: always() + uses: actions/upload-artifact@v4 + with: + name: playwright-report + path: ./playwright-report + retention-days: 1 + - name: Save PR ID + if: always() + run: | + pr="${{ github.event.pull_request.number }}" + echo $pr > ./pr-id.txt + shell: bash + - name: Create PR Artifact + if: always() + uses: actions/upload-artifact@v4 + with: + name: pr + path: ./pr-id.txt diff --git a/.gitignore b/.gitignore index 3a755e130..c236eea89 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,5 @@ docs/diplodoc/pages/api storybook-static .cache .tmp +playwright-report +test-results diff --git a/package-lock.json b/package-lock.json index 98c172650..6c0b787ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,6 +28,8 @@ "@gravity-ui/stylelint-config": "^4.0.1", "@gravity-ui/tsconfig": "^1.0.0", "@gravity-ui/uikit": "^7.4.0", + "@playwright/experimental-ct-react": "^1.49.0", + "@playwright/test": "^1.49.0", "@storybook/addon-a11y": "^8.2.9", "@storybook/addon-actions": "^8.2.9", "@storybook/addon-essentials": "^8.2.9", @@ -1492,6 +1494,36 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-react-pure-annotations": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", @@ -2684,6 +2716,22 @@ "node": ">=18" } }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/netbsd-x64": { "version": "0.23.1", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", @@ -4276,6 +4324,311 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/@playwright/experimental-ct-core": { + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-core/-/experimental-ct-core-1.51.1.tgz", + "integrity": "sha512-kpRZWBT3SMukL1fx8BwEj385Pkgtp86bBKzmrmJU30lWlQiIDFNaIHosgxQC68c8y2mg3Una/lBSHNc2Fotgkw==", + "dev": true, + "dependencies": { + "playwright": "1.51.1", + "playwright-core": "1.51.1", + "vite": "^5.4.14 || ^6.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@playwright/experimental-ct-react": { + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-react/-/experimental-ct-react-1.51.1.tgz", + "integrity": "sha512-Lu14QiemO2TWfiL6TQPWBH2n+4IvPYH/W6cfblzYpLu/TZdJ7e608l3GwqAGRN5FJym3YOonC7x1Q5EAwcBarg==", + "dev": true, + "dependencies": { + "@playwright/experimental-ct-core": "1.51.1", + "@vitejs/plugin-react": "^4.2.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@playwright/test": { + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.51.1.tgz", + "integrity": "sha512-nM+kEaTSAoVlXmMPH10017vn3FSiFqr/bh4fKg9vmAdMfd9SDqRZNvPSiAHADc/itWak+qPvMPZQOPwCBW7k7Q==", + "dev": true, + "dependencies": { + "playwright": "1.51.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz", + "integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz", + "integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz", + "integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz", + "integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz", + "integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz", + "integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz", + "integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz", + "integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz", + "integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz", + "integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz", + "integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz", + "integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz", + "integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz", + "integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz", + "integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz", + "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz", + "integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz", + "integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz", + "integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz", + "integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -6332,6 +6685,25 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", + "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", + "dev": true, + "dependencies": { + "@babel/core": "^7.26.0", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", @@ -16003,9 +16375,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -16924,14 +17296,58 @@ "node": ">=8" } }, - "node_modules/plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "node_modules/playwright": { + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.51.1.tgz", + "integrity": "sha512-kkx+MB2KQRkyxjYPc3a0wLZZoDczmppyGJIvQ43l+aZihkaVvmu/21kiyaHeHjiFxjxNNFnUncKmcGIyOojsaw==", "dev": true, "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", + "playwright-core": "1.51.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.51.1.tgz", + "integrity": "sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", "arr-union": "^3.1.0", "extend-shallow": "^3.0.2" }, @@ -16973,9 +17389,9 @@ } }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -16992,8 +17408,8 @@ } ], "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -17650,6 +18066,15 @@ } } }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-select": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.2.tgz", @@ -18414,6 +18839,51 @@ "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" }, + "node_modules/rollup": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz", + "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.40.0", + "@rollup/rollup-android-arm64": "4.40.0", + "@rollup/rollup-darwin-arm64": "4.40.0", + "@rollup/rollup-darwin-x64": "4.40.0", + "@rollup/rollup-freebsd-arm64": "4.40.0", + "@rollup/rollup-freebsd-x64": "4.40.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.0", + "@rollup/rollup-linux-arm-musleabihf": "4.40.0", + "@rollup/rollup-linux-arm64-gnu": "4.40.0", + "@rollup/rollup-linux-arm64-musl": "4.40.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-musl": "4.40.0", + "@rollup/rollup-linux-s390x-gnu": "4.40.0", + "@rollup/rollup-linux-x64-gnu": "4.40.0", + "@rollup/rollup-linux-x64-musl": "4.40.0", + "@rollup/rollup-win32-arm64-msvc": "4.40.0", + "@rollup/rollup-win32-ia32-msvc": "4.40.0", + "@rollup/rollup-win32-x64-msvc": "4.40.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -21129,6 +21599,501 @@ "node": ">=0.10.0" } }, + "node_modules/vite": { + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.6.tgz", + "integrity": "sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==", + "dev": true, + "dependencies": { + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" + } + }, "node_modules/w3c-xmlserializer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", diff --git a/package.json b/package.json index 3d3dc0b28..472cdaa3e 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,14 @@ "prepublishOnly": "npm run build", "docs:deps": "cd ./docs && npm ci", "docs:dev": "cd ./docs && npm run docs:dev", - "docs:build": "cd ./docs && npm run docs:build" + "docs:build": "cd ./docs && npm run docs:build", + "playwright:install": "playwright install chromium webkit --with-deps", + "playwright": "playwright test --config=playwright/playwright.config.ts", + "playwright:update": "npm run playwright -- -u", + "playwright:clear-cache": "rm -rf ./playwright/.cache", + "playwright:docker": "./scripts/playwright-docker.sh 'npm run playwright'", + "playwright:docker:update": "./scripts/playwright-docker.sh 'npm run playwright:update'", + "playwright:docker:clear-cache": "./scripts/playwright-docker.sh clear-cache" }, "dependencies": { "@bem-react/classname": "^1.6.0", @@ -75,6 +82,8 @@ "@gravity-ui/stylelint-config": "^4.0.1", "@gravity-ui/tsconfig": "^1.0.0", "@gravity-ui/uikit": "^7.4.0", + "@playwright/experimental-ct-react": "^1.49.0", + "@playwright/test": "^1.49.0", "@storybook/addon-a11y": "^8.2.9", "@storybook/addon-actions": "^8.2.9", "@storybook/addon-essentials": "^8.2.9", diff --git a/playwright/playwright.config.ts b/playwright/playwright.config.ts new file mode 100644 index 000000000..1db4236fe --- /dev/null +++ b/playwright/playwright.config.ts @@ -0,0 +1,76 @@ +import {resolve} from 'path'; + +import type {PlaywrightTestConfig} from '@playwright/experimental-ct-react'; +import {defineConfig, devices} from '@playwright/experimental-ct-react'; + +function pathFromRoot(p: string) { + return resolve(__dirname, '../', p); +} + +const reporter: PlaywrightTestConfig['reporter'] = []; + +reporter.push( + ['list'], + [ + 'html', + { + open: process.env.CI ? 'never' : 'on-failure', + outputFolder: resolve( + process.cwd(), + process.env.IS_DOCKER ? 'playwright-report-docker' : 'playwright-report', + ), + }, + ], +); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +const config: PlaywrightTestConfig = { + testDir: pathFromRoot('src'), + testMatch: '**/__tests__/*.visual.test.tsx', + updateSnapshots: process.env.UPDATE_REQUEST ? 'all' : 'missing', + snapshotPathTemplate: + '{testDir}/{testFileDir}/../__snapshots__/{testFileName}-snapshots/{arg}{-projectName}-linux{ext}', + /* Maximum time one test can run for. */ + timeout: 10 * 1000, + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: Boolean(process.env.CI), + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 8 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter, + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + testIdAttribute: 'data-qa', + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on', + headless: true, + screenshot: 'only-on-failure', + timezoneId: 'UTC', + ctCacheDir: process.env.IS_DOCKER ? '.cache-docker' : '.cache', + }, + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { + ...devices['Desktop Chrome'], + deviceScaleFactor: 2, + }, + }, + // { + // name: 'webkit', + // use: { + // ...devices['Desktop Safari'], + // deviceScaleFactor: 2, + // }, + // }, + ], +}; + +export default defineConfig(config); diff --git a/playwright/playwright/index.html b/playwright/playwright/index.html new file mode 100644 index 000000000..54d93ace9 --- /dev/null +++ b/playwright/playwright/index.html @@ -0,0 +1,12 @@ + + + + + + Test component page + + +
+ + + \ No newline at end of file diff --git a/playwright/playwright/index.tsx b/playwright/playwright/index.tsx new file mode 100644 index 000000000..10dc11d86 --- /dev/null +++ b/playwright/playwright/index.tsx @@ -0,0 +1,16 @@ +import React from 'react'; + +import {MobileProvider, ThemeProvider} from '@gravity-ui/uikit'; +import {beforeMount} from '@playwright/experimental-ct-react/hooks'; + +import '@gravity-ui/uikit/styles/styles.scss'; + +beforeMount(async ({App}) => { + return ( + + + + + + ); +}); diff --git a/scripts/playwright-docker.sh b/scripts/playwright-docker.sh new file mode 100755 index 000000000..58879a3fa --- /dev/null +++ b/scripts/playwright-docker.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +set -euo pipefail + +IMAGE_NAME="mcr.microsoft.com/playwright" +IMAGE_TAG="v1.49.0-jammy" # This version have to be synchronized with playwright version from package.json + +NODE_MODULES_CACHE_DIR="$HOME/.cache/uikit-playwright-docker-node-modules" + +command_exists() { + command -v "$1" >/dev/null 2>&1 +} + +run_command() { + $CONTAINER_TOOL run --rm --network host -it -w /work \ + -v $(pwd):/work \ + -v "$NODE_MODULES_CACHE_DIR:/work/node_modules" \ + -e IS_DOCKER=1 \ + "$IMAGE_NAME:$IMAGE_TAG" \ + /bin/bash -c "$1" +} + +if command_exists docker; then + CONTAINER_TOOL="docker" +elif command_exists podman; then + CONTAINER_TOOL="podman" +else + echo "Neither Docker nor Podman is installed on the system." + exit 1 +fi + +if [[ "$1" = "clear-cache" ]]; then + rm -rf "$NODE_MODULES_CACHE_DIR" + rm -rf "./playwright/.cache-docker" + exit 0 +fi + +if [[ ! -d "$NODE_MODULES_CACHE_DIR" ]]; then + mkdir -p "$NODE_MODULES_CACHE_DIR" + run_command 'npm ci' +fi + +run_command "$1" diff --git a/src/__snapshots__/line-series.visual.test.tsx-snapshots/Line-series-with-logarithmic-Y-axis-Basic-1-chromium-linux.png b/src/__snapshots__/line-series.visual.test.tsx-snapshots/Line-series-with-logarithmic-Y-axis-Basic-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..83e69c22966839e900a7e15badd00eea2a5797de GIT binary patch literal 15812 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 { +export const LineWithLogarithmicAxis = () => { const randomY = randomNormal(0, 100); const widgetData: ChartData = { series: { @@ -48,7 +48,7 @@ const LineWithLogarithmicAxis = () => { ); }; -export const PerformanceIssueScatter: StoryObj = { +export const LineWithLogarithmicAxisStoty: StoryObj = { name: 'Linear & Logarithmic Y axis', }; diff --git a/src/__tests__/line-series.visual.test.tsx b/src/__tests__/line-series.visual.test.tsx new file mode 100644 index 000000000..b6e8b5370 --- /dev/null +++ b/src/__tests__/line-series.visual.test.tsx @@ -0,0 +1,43 @@ +import React from 'react'; + +import {expect, test} from '@playwright/experimental-ct-react'; + +import {Chart} from 'src/components'; +import type {ChartData} from 'src/types'; + +test.describe('Line series with logarithmic Y axis', () => { + test('Basic', async ({page, mount}) => { + page.on('pageerror', (exception) => { + throw exception; + }); + + const data = { + yAxis: [ + { + type: 'logarithmic', + }, + ], + series: { + data: [ + { + type: 'line', + name: 'Line series', + data: [ + {x: 10, y: 10}, + {x: 20, y: 50}, + {x: 30, y: 90}, + ], + }, + ], + }, + } as ChartData; + + const component = await mount( +
+ +
, + ); + + await expect(await component.locator('svg').screenshot()).toMatchSnapshot(); + }); +}); diff --git a/tsconfig.json b/tsconfig.json index 07133d614..55d7695cf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,7 +8,10 @@ "baseUrl": ".", "importHelpers": true, "moduleResolution": "node", - "resolveJsonModule": true + "resolveJsonModule": true, + "paths": { + "~playwright/*": ["playwright/*"] + } }, - "include": ["src/**/*.ts", "src/**/*.tsx", "tests/*"] + "include": ["src/**/*.ts", "src/**/*.tsx", "playwright/*"] } From 13cb2f0b6277adcb6deb98e0c44ca9601cfad1a5 Mon Sep 17 00:00:00 2001 From: "Irina V. Kuzmina" Date: Thu, 24 Apr 2025 12:36:43 +0300 Subject: [PATCH 02/10] fix: unit tests --- jest.config.js | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/jest.config.js b/jest.config.js index 1776712c0..042580077 100644 --- a/jest.config.js +++ b/jest.config.js @@ -9,23 +9,11 @@ const esModules = [ ].join('|'); module.exports = { - // verbose: true, - // preset: 'ts-jest', - // testEnvironment: 'jsdom', - // transform: { - // '^.+\\.(js|ts)?$': 'ts-jest', - // }, - // modulePathIgnorePatterns: ['/build/'], - // transformIgnorePatterns: [`/node_modules/(?!${esModules})`], - // moduleNameMapper: { - // '^.+\\.(css|scss)$': '/test-utils/style.mock.ts', - // }, - // setupFiles: ['/test-utils/globals.mock.ts'], - // testPathIgnorePatterns: ['.visual.'], ...createJsWithTsPreset(), transform: { '^.+\\.(js|ts)?$': ['ts-jest', {useESM: true}], }, transformIgnorePatterns: [`/node_modules/(?!${esModules})`], testMatch: ['**/*.test.[jt]s?(x)'], + testPathIgnorePatterns: ['.visual.'], }; From a191dde60651fa6a68073f1cda0965c52addc160 Mon Sep 17 00:00:00 2001 From: "Irina V. Kuzmina" Date: Thu, 24 Apr 2025 12:42:18 +0300 Subject: [PATCH 03/10] chore: up playwright --- .github/workflows/pr-visual-tests.yml | 2 +- package-lock.json | 4 ++-- package.json | 4 ++-- playwright/playwright.config.ts | 7 ------- scripts/playwright-docker.sh | 2 +- 5 files changed, 6 insertions(+), 13 deletions(-) diff --git a/.github/workflows/pr-visual-tests.yml b/.github/workflows/pr-visual-tests.yml index 8db421aac..d82085517 100644 --- a/.github/workflows/pr-visual-tests.yml +++ b/.github/workflows/pr-visual-tests.yml @@ -8,7 +8,7 @@ jobs: name: Visual Tests runs-on: ubuntu-latest container: - image: mcr.microsoft.com/playwright:v1.49.0-jammy + image: mcr.microsoft.com/playwright:v1.51.1-jammy steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 diff --git a/package-lock.json b/package-lock.json index 6c0b787ac..0d672da00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,8 +28,8 @@ "@gravity-ui/stylelint-config": "^4.0.1", "@gravity-ui/tsconfig": "^1.0.0", "@gravity-ui/uikit": "^7.4.0", - "@playwright/experimental-ct-react": "^1.49.0", - "@playwright/test": "^1.49.0", + "@playwright/experimental-ct-react": "^1.51.1", + "@playwright/test": "^1.51.1", "@storybook/addon-a11y": "^8.2.9", "@storybook/addon-actions": "^8.2.9", "@storybook/addon-essentials": "^8.2.9", diff --git a/package.json b/package.json index 472cdaa3e..e01f2ce12 100644 --- a/package.json +++ b/package.json @@ -82,8 +82,8 @@ "@gravity-ui/stylelint-config": "^4.0.1", "@gravity-ui/tsconfig": "^1.0.0", "@gravity-ui/uikit": "^7.4.0", - "@playwright/experimental-ct-react": "^1.49.0", - "@playwright/test": "^1.49.0", + "@playwright/experimental-ct-react": "^1.51.1", + "@playwright/test": "^1.51.1", "@storybook/addon-a11y": "^8.2.9", "@storybook/addon-actions": "^8.2.9", "@storybook/addon-essentials": "^8.2.9", diff --git a/playwright/playwright.config.ts b/playwright/playwright.config.ts index 1db4236fe..759c6b148 100644 --- a/playwright/playwright.config.ts +++ b/playwright/playwright.config.ts @@ -63,13 +63,6 @@ const config: PlaywrightTestConfig = { deviceScaleFactor: 2, }, }, - // { - // name: 'webkit', - // use: { - // ...devices['Desktop Safari'], - // deviceScaleFactor: 2, - // }, - // }, ], }; diff --git a/scripts/playwright-docker.sh b/scripts/playwright-docker.sh index 58879a3fa..b78093b95 100755 --- a/scripts/playwright-docker.sh +++ b/scripts/playwright-docker.sh @@ -3,7 +3,7 @@ set -euo pipefail IMAGE_NAME="mcr.microsoft.com/playwright" -IMAGE_TAG="v1.49.0-jammy" # This version have to be synchronized with playwright version from package.json +IMAGE_TAG="v1.51.1-jammy" # This version have to be synchronized with playwright version from package.json NODE_MODULES_CACHE_DIR="$HOME/.cache/uikit-playwright-docker-node-modules" From ef633e424f8545cf513e3d31ea4e7cd3e40c94a6 Mon Sep 17 00:00:00 2001 From: "Irina V. Kuzmina" Date: Thu, 24 Apr 2025 12:49:30 +0300 Subject: [PATCH 04/10] fix: update screenshot --- playwright/playwright.config.ts | 2 +- ...arithmic-Y-axis-Basic-1-chromium-linux.png | Bin 15812 -> 5821 bytes src/__tests__/line-series.visual.test.tsx | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/playwright/playwright.config.ts b/playwright/playwright.config.ts index 759c6b148..c8fee3f7d 100644 --- a/playwright/playwright.config.ts +++ b/playwright/playwright.config.ts @@ -39,7 +39,7 @@ const config: PlaywrightTestConfig = { /* Fail the build on CI if you accidentally left test.only in the source code. */ forbidOnly: Boolean(process.env.CI), /* Retry on CI only */ - retries: process.env.CI ? 2 : 0, + retries: process.env.CI ? 1 : 0, /* Opt out of parallel tests on CI. */ workers: process.env.CI ? 8 : undefined, /* Reporter to use. See https://playwright.dev/docs/test-reporters */ diff --git a/src/__snapshots__/line-series.visual.test.tsx-snapshots/Line-series-with-logarithmic-Y-axis-Basic-1-chromium-linux.png b/src/__snapshots__/line-series.visual.test.tsx-snapshots/Line-series-with-logarithmic-Y-axis-Basic-1-chromium-linux.png index 83e69c22966839e900a7e15badd00eea2a5797de..364a0b14b098e5868f382bf8e502501de06d9c19 100644 GIT binary patch literal 5821 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 literal 15812 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 { , ); - await expect(await component.locator('svg').screenshot()).toMatchSnapshot(); + await expect(component.locator('svg')).toHaveScreenshot(); }); }); From e7b7387859069ffcb6501a69771ea373be25e0fd Mon Sep 17 00:00:00 2001 From: "Irina V. Kuzmina" Date: Thu, 24 Apr 2025 12:58:46 +0300 Subject: [PATCH 05/10] chore: add Inter font --- playwright/playwright/index.html | 1 + ...arithmic-Y-axis-Basic-1-chromium-linux.png | Bin 5821 -> 6038 bytes 2 files changed, 1 insertion(+) diff --git a/playwright/playwright/index.html b/playwright/playwright/index.html index 54d93ace9..c8cbecb7b 100644 --- a/playwright/playwright/index.html +++ b/playwright/playwright/index.html @@ -3,6 +3,7 @@ + Test component page diff --git a/src/__snapshots__/line-series.visual.test.tsx-snapshots/Line-series-with-logarithmic-Y-axis-Basic-1-chromium-linux.png b/src/__snapshots__/line-series.visual.test.tsx-snapshots/Line-series-with-logarithmic-Y-axis-Basic-1-chromium-linux.png index 364a0b14b098e5868f382bf8e502501de06d9c19..d3f4cb385583a4f88cd9252742eaec22155117bb 100644 GIT binary patch literal 6038 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 H73zNgrUIrY literal 5821 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 From d513127910c61fabd3018f8720da4ac725991649 Mon Sep 17 00:00:00 2001 From: "Irina V. Kuzmina" Date: Thu, 24 Apr 2025 13:03:10 +0300 Subject: [PATCH 06/10] fix: screenshot --- playwright/playwright/index.html | 5 +++++ ...arithmic-Y-axis-Basic-1-chromium-linux.png | Bin 6038 -> 5963 bytes 2 files changed, 5 insertions(+) diff --git a/playwright/playwright/index.html b/playwright/playwright/index.html index c8cbecb7b..ba3016101 100644 --- a/playwright/playwright/index.html +++ b/playwright/playwright/index.html @@ -5,6 +5,11 @@ Test component page +
diff --git a/src/__snapshots__/line-series.visual.test.tsx-snapshots/Line-series-with-logarithmic-Y-axis-Basic-1-chromium-linux.png b/src/__snapshots__/line-series.visual.test.tsx-snapshots/Line-series-with-logarithmic-Y-axis-Basic-1-chromium-linux.png index d3f4cb385583a4f88cd9252742eaec22155117bb..fc889f9f64029a6aa638a3f3a8cde8fb41251f23 100644 GIT binary patch literal 5963 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 H73zNgrUIrY From a5358d92a66fade65d1f765b16c3fd4b7f9cab0e Mon Sep 17 00:00:00 2001 From: Irina Kuzmina Date: Thu, 24 Apr 2025 13:17:57 +0300 Subject: [PATCH 07/10] fix: up screenshot --- ...arithmic-Y-axis-Basic-1-chromium-linux.png | Bin 5963 -> 5632 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/__snapshots__/line-series.visual.test.tsx-snapshots/Line-series-with-logarithmic-Y-axis-Basic-1-chromium-linux.png b/src/__snapshots__/line-series.visual.test.tsx-snapshots/Line-series-with-logarithmic-Y-axis-Basic-1-chromium-linux.png index fc889f9f64029a6aa638a3f3a8cde8fb41251f23..4686201db57099e69a4cc1d6d8441d7d1d4f60c0 100644 GIT binary patch literal 5632 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 literal 5963 zcmZX2c|26#|3BW6-B_Zs%wT9NNyxq%+aQg^kc=jg24$DEY#~bs*`sXDkg=vh#U#5h zGG**bWC_X6_xL;>zrTLx@wjvE+{Zbu<=oeKy`Ilk+?C759IR(q>FDS6>Ge?(Bl>0$BCyE6o z%}*-ZEdHTi9?!W@;~?Be{bJ=%$r;8-R|=ZaLo(L;?3)=tgm@F`0`Fw z-SBWFf#Q}{gmGk`NAp}2gFl7vrtURE<P8B`2YFs(XERclXDVv9YnwpY;!`hkpJ9I+-J?>??w|R><=1%RlNG zJZZ0AzmCV((32uf;i)k(F)1l2m6dW~X|0oA`}*dw1j^lgQ-S*YRL``)vI}$P4PY!CzpxPx%KNS2tHQB zr|leuhK69fV9ce1R2uCD2J_bG6GQ2sTMd;t;%(T$t^t=8{Lb`4IPB{w{N(3ovkY0a zz&|iO2!5C-B`0UZd`VeZL^}i{mpMN>TXEyPvWUeAo;WGe`o_k1*q+B>owYQr(WkV1 zIt5ky==wVNdbUK&V>HlRDfjp+1|UCp|pbzv|>`RNdFBWIOdH`UM|X?1}EL z4p9CJB)2IY!OCK0L>+0L& z+%8XZh-=x!WXJ~H;?X7Y&DN)VJJa#I)pyWpKi$s`Q~S7)k((2|mpj6Zg&jJ?B5 z{6mp84YB)n6pUW}UHz|T{hE2Qr{A6-FD@=xm0NS^?8{>Xg>58i^$VHzn{@k?daB*o zi|z}Z^983MDi-JGxEI+RxNPh{$!Z<}DMIi?-kMZR z(#e>>B_<`Q=Uq-TYHi`L)+bm?mqqa_4zt*NHw#lkUIHuZ6$S^Rn&SHO?~}S+eB9jJ zoLqR=TVL?l&xFjo_!+IQLnyU;Is>U$+&aa95l^mNKOVtH{6Nn6R!<=3aJ-_NU_F{X z#WLNYVXglpaWdFFCuM*9y7h+DzKK~0k3h7Q=FPTHGr88;rNglFIA-J%0*_}dNm4&phrN<8t3|Cn#ISsfeeCgDLT7pYjg=jB z$|n9~8_%VejyA6Fz5~9uI|KZ{|A7@fFQ=wa6 zVxxdk8!yBRsVYfT7JpEZ?Cuy3b?fM~Fh4$5=!w5(y|sHkgGwu{UL%iH#4Ao~uUM=2 zm2lmwL>k*y51nCo157-nlB<2$6%GRX)|r1@J!~{3~loK z?EKTJp(ubz3u#`Qz=iHEl%}Pn?f*^`RGFKd)w?m7>&2VfYqFToHh6n`vZVV&mTBej zsW=_8v-|r^z{+Sx%QXbw66JVI9LY&3lOc!Gp4mM`q1G6=yB2(ZEdL7_dvLO~3dHmI>-ACBZB0_0 zCoW4vlq~i_w7HGe2FrTd@`atC7cvfwn`E&aVlxGyC;1G?6Br!-ZSUiu5Q|Ywy7!~j ztu=;2BzgYVx0fJiPY$25;xkNrC4askqQor~ehVTodTYlZ`BnR)!%Z(aASX(Hr!<7Q zFgY5#r{sc;h)pjjz+SoX@aA(=u{{Y#o|tg5u&}`RMWc!p+*oZ|N%w`0VS$!NGExjJ zoxX2WCX<`TOJi&;q+PorqH=;*b@qh%>Og7mSFDHam-nJ#Vzc>gkirp@+m+W)T1O$U zKX%AY(WdZg-1Tmx3B>_8KgnE@?`9#08foG6`xvK_=&6x;2-D0 z!3E9Nh-+**g{}+?xSo`w=DEJUXPy_hnwt@HxSnW&3o88aSPPS9gdzhjx@QC){B>d+ zOMrCnxlS>*u?kjnRk2ATY_k7kHHB@K_P zWjZped-{%rWjjINkg#=40GE@YyC@0QB|cTv(Y1&9@p8h3BhPp%*f$+Xn9!pBi`{gp z4LZ^Wk1Vm9beEr3odBz$5WI5pyH*EidJ|)xz~_@~*(oH`6_w=~A2TTvS~ooeZ&VvJ zK6uuh8lpS~V4*H?B6msh4*$Wdci`Pi#=1n9FRl1`FfhvyxG${jR|BQ;Nw15J@I z@9P=2@p$|jhsFUa^-OXJ>sRRcAzS{lD9e{75Ym$W9+3OJ;(CMkZ0FL_(&Xf1N(wiD zVvogQ?d>})Jq5uE@-{rcWOcm7Nc8o!3En(d!{;AA?4zD`I4`cOWOO)_$>hk$$eR|P zW`jz4kchf7C+1*@sAt%4LyC^0G+Pcd7=#8eP?}r~3?s z+x++MHDz)Acz8!$2?*E{l5Ds}pnR?kVa+a);4zItzcc#f(-6{f*ZQ?<;8&4!1XolM zBFj8O2yK$uCU0J0b8<&ln6tguER#9n1)|flK|ny@-0Vy}UnB@|*4`E9e_%IlDjjxc z0pr4&fe=w^8=HFHg@ISOqc-?I6;VTpPK?|#8X5qX(j4Ciw6E3HmiK9ONH%Ec=w|0F zg?mQY8ARj0^aeXM&(N7FHdau{A_IFzp)wc=Soug(|6*u3Te;vPQ#BI!a)MT7#5b}- zP*Fc#UMmx#7qpbJhm9DrFgFn;ffyTB2svf`oS)aqkT~oa;oPq%lQwDVq5qTz=a(#h z?w#p#ig*UR1;h6Q%r(RFov`Z&ubL9w(ZN@Y*Qtf1G zp3J&(BnB8*r8x7O5w;F267>~9bb7(u$m&5f9UX&r|ABvEYUJHcee9)HdzCdf3)y>D zwc=Alc%m4umCBkp3wdBM)Dr*atO>0x-IY>?b*hW@ zdsCW!^~u6TBPGTHzL^oyE$Q^v)z$0WS&9b-2Vw;tU#4(e3!(jWJg4+3G5k+%Q>$-p zZf-IcY6Pr2H!pdxF=tmX444b<^p`&6tJkibN*-o1CTwY8Um_xh5}z|Wvh)N`uLbVz z?fw4!JMXe9rlu#bY3$oK^rs&Q+jgfMGaWAbpwGyT9%Dt+O0R#Zt| zZFLv1(^VQB^tIQLRqQVbgmMmG0kX#hfh^xmt#S2G{t1xZ_KpsK?5)`zM$+l)nJRi~ z3T`cK=dgB}`Dvm~vRUSme?i`Ud=tZ7)HZ>^WRP9dpXcX`)KEX%8`oxUy_1~*;62sF zS~@+@C1(dJKK$YnUL;~D@ifcW1E`>2@O)mtb_3uh<8}DV5tke_ni+Qjqm@dLL@Xxp ze`8QN{%(C%KKGn6*TI~<^cV-d3p`;j*2E>J(C*cxZAVOAJ*-t=wVqBfHBd^pVyrnaiTn@4R*6F=t#W~ zm3c_EDtl+j&SOA)v)Yf%mU_z~31NX{bhW!}HXqbo@k=v-Kg8Hau1aw=1WxbjV)Ckh*q{ z9ddpuTn<#@YEVH;m8WEfqjQFOE;5N!pM$Rb&yY*H6bo-2%j08>wFMPGEiMNG^@XT` z>5fz48Hb#q3(6DK-Toz*PR|*oIP05~QosmZtk% zIz2WTW8V~RSyv>+Wu+n&1pr#VUiVd#Y#wFGLvS>|SKeUr`VLBI$Ky3)0sTeEQ!H{euCDXtS4+($d5`=# zWr+F8sg68WD&=Mnl4?>7)jcaK>(O~}ad8_$9RMn|wa>6O{r=@8RjakPM6(Q9Wy7|l z;*bOV{qhP50~8AR9t%GDT805O$SgVxza%?Yr3fIXnC4vzziCm zN)5{T7O$W|iql6wYo9&?g>seuhlC)1$q?tdyTWc3H_1mPSzV13PwN=ETlYeAo9q(p zn5slXq{x1dN$c?T@ribPC(v32s#4OlK99`kDH|1A9ic=c1{QOZWI+ZQA`hcz{wW*! zi@XD;*jnXD6;-UULZ-h|ZbZP4)t{wdVV@yvbowWmd>D?&^Z$3jUSQy+tPLBdr?>WA z9y-LpO*3wndcc{*n9zv$-Hk+1eKcRIe7MN%9~r+AK8rI?rCDn4{QG&YAoQPIqLD$W zGagUqaPI8sp}q6N+u7M!7bPSo7pQuDcByGP-2Kf;9(pcBpzQt}KlI=Gx16lKd&j!S zT!a5{tJhRp94P9I4$S}(%ywlOOSCNvmhSED&Uo*XSmX@9!6rkzRfV8o+l4ewTj_K_ z%K*>R2TdYW>EPzyzpy9(oR!^2AiJEQ+E~Dvuvn=6orB#?KR-X7IOh@{;XIk)jAosNf4(=5@cMPo?}~=A zf`UM-c#AGmqW8}F?f4?c;N?02Y{(jDxq!GTT| zt*7^CWCSxK>a0Ko?yRmxs0t+!Y~M8RuXllsO$a%nU(w-@>IW)))$^$CB4^J6T5=U& zrWsL`nc0p2D3Kz`kD)QOcPY|g)1aWkym0ew2_ z{)Dcv@yT!vwkHV*38SN2$hCSduKLc8yat#<+ zp?0;r%b8uL(%EKy{Q{)WI43(Bg+iT3 zNq6w?pFe+=e>Sw9t$8rlowYIFr^r6Nu|u?x33tt1a4_~6=?-3PYIv~W0**a|5v!Gv zlk*d#!{t&3ID~QS33h+#u$_asu)e;&sHo_UmgfYEP!~Y(+PlBRK~Bu<`u+yn;x+w+ zDkH8xxxF_1Xh1!x|Ei_d=E$w&rh|V!w~l(6L-)jl$_14=+uD#It&nkm23l&aApsrz zr2*oq)Uu!+Bg Date: Thu, 24 Apr 2025 13:39:42 +0300 Subject: [PATCH 08/10] chore: add ChartTestStory --- playwright/components/ChartTestStory.tsx | 24 +++++++++++++++++++++++ scripts/playwright-docker.sh | 8 ++++---- src/__tests__/line-series.visual.test.tsx | 9 +++------ 3 files changed, 31 insertions(+), 10 deletions(-) create mode 100644 playwright/components/ChartTestStory.tsx diff --git a/playwright/components/ChartTestStory.tsx b/playwright/components/ChartTestStory.tsx new file mode 100644 index 000000000..55e19dd07 --- /dev/null +++ b/playwright/components/ChartTestStory.tsx @@ -0,0 +1,24 @@ +import React from 'react'; + +import {ChartStory} from '../../src/__stories__/ChartStory'; +import type {ChartData} from '../../src/types'; + +type Props = { + data: ChartData; + styles?: React.CSSProperties; +}; + +export const ChartTestStory = ({data, styles}: Props) => { + const storyStyles: React.CSSProperties = { + height: 280, + width: 400, + display: 'inline-block', + ...styles, + }; + + return ( +
+ +
+ ); +}; diff --git a/scripts/playwright-docker.sh b/scripts/playwright-docker.sh index b78093b95..06763d548 100755 --- a/scripts/playwright-docker.sh +++ b/scripts/playwright-docker.sh @@ -8,7 +8,7 @@ IMAGE_TAG="v1.51.1-jammy" # This version have to be synchronized with playwright NODE_MODULES_CACHE_DIR="$HOME/.cache/uikit-playwright-docker-node-modules" command_exists() { - command -v "$1" >/dev/null 2>&1 + command -v "$*" >/dev/null 2>&1 } run_command() { @@ -17,7 +17,7 @@ run_command() { -v "$NODE_MODULES_CACHE_DIR:/work/node_modules" \ -e IS_DOCKER=1 \ "$IMAGE_NAME:$IMAGE_TAG" \ - /bin/bash -c "$1" + /bin/bash -c "$*" } if command_exists docker; then @@ -29,7 +29,7 @@ else exit 1 fi -if [[ "$1" = "clear-cache" ]]; then +if [[ "$*" = "clear-cache" ]]; then rm -rf "$NODE_MODULES_CACHE_DIR" rm -rf "./playwright/.cache-docker" exit 0 @@ -40,4 +40,4 @@ if [[ ! -d "$NODE_MODULES_CACHE_DIR" ]]; then run_command 'npm ci' fi -run_command "$1" +run_command "$*" \ No newline at end of file diff --git a/src/__tests__/line-series.visual.test.tsx b/src/__tests__/line-series.visual.test.tsx index 5a89f91cf..d83747f53 100644 --- a/src/__tests__/line-series.visual.test.tsx +++ b/src/__tests__/line-series.visual.test.tsx @@ -2,9 +2,10 @@ import React from 'react'; import {expect, test} from '@playwright/experimental-ct-react'; -import {Chart} from 'src/components'; import type {ChartData} from 'src/types'; +import {ChartTestStory} from '../../playwright/components/ChartTestStory'; + test.describe('Line series with logarithmic Y axis', () => { test('Basic', async ({page, mount}) => { page.on('pageerror', (exception) => { @@ -32,11 +33,7 @@ test.describe('Line series with logarithmic Y axis', () => { }, } as ChartData; - const component = await mount( -
- -
, - ); + const component = await mount(); await expect(component.locator('svg')).toHaveScreenshot(); }); From 1bd46c17e78c4fadc117c21636bc87ea2a3f1538 Mon Sep 17 00:00:00 2001 From: "Irina V. Kuzmina" Date: Thu, 24 Apr 2025 13:40:34 +0300 Subject: [PATCH 09/10] fix: .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index c236eea89..589f207ee 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,6 @@ storybook-static .cache .tmp playwright-report +playwright-report-docker +playwright/.cache-docker test-results From 3ba1e7f55acb12ade93f09bd7e761b5ddd3f9b3d Mon Sep 17 00:00:00 2001 From: Irina Kuzmina Date: Thu, 24 Apr 2025 13:42:09 +0300 Subject: [PATCH 10/10] fix: up screenshot --- ...arithmic-Y-axis-Basic-1-chromium-linux.png | Bin 5632 -> 9039 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/__snapshots__/line-series.visual.test.tsx-snapshots/Line-series-with-logarithmic-Y-axis-Basic-1-chromium-linux.png b/src/__snapshots__/line-series.visual.test.tsx-snapshots/Line-series-with-logarithmic-Y-axis-Basic-1-chromium-linux.png index 4686201db57099e69a4cc1d6d8441d7d1d4f60c0..649f9864bca5a0da9cde1bf8ca97dfb48441667a 100644 GIT binary patch literal 9039 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 AEC2ui literal 5632 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