From 91e8bcaba9c8379d1a663bc7f0bab58cac3a18ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Berg=C3=A9?= Date: Mon, 17 Jun 2024 11:31:43 +0200 Subject: [PATCH 1/6] chore: setup Argos Visual Testing on E2E --- .github/workflows/e2e.yml | 1 + README.md | 1 + cypress.config.ts | 8 + cypress/helpers/util.ts | 2 + cypress/support/e2e.js | 1 + cypress/tsconfig.json | 2 +- package.json | 1 + pnpm-lock.yaml | 461 +++++++++++++++++++++++++++++--------- 8 files changed, 374 insertions(+), 103 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 6477c9eb5..fe0827196 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -146,6 +146,7 @@ jobs: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} VITEST_COVERAGE: true CYPRESS_COMMIT: ${{ github.sha }} + ARGOS_TOKEN: ${{ secrets.ARGOS_TOKEN }} - name: Upload Coverage to Codecov uses: codecov/codecov-action@v4 diff --git a/README.md b/README.md index d368a4349..8d5eebfeb 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ Try Live Editor previews of future releases: diff --git a/cypress.config.ts b/cypress.config.ts index 4182d92a8..6ebb75cdf 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -2,6 +2,8 @@ import { defineConfig } from 'cypress'; import { addMatchImageSnapshotPlugin } from 'cypress-image-snapshot/plugin'; import coverage from '@cypress/code-coverage/task'; import eyesPlugin from '@applitools/eyes-cypress'; +import { registerArgosTask } from '@argos-ci/cypress/task'; + export default eyesPlugin( defineConfig({ projectId: 'n2sma2', @@ -21,6 +23,12 @@ export default eyesPlugin( // copy any needed variables from process.env to config.env config.env.useAppli = process.env.USE_APPLI ? true : false; + // Argos + registerArgosTask(on, config, { + uploadToArgos: !!process.env.CI, + token: process.env.ARGOS_TOKEN, + }); + // do not forget to return the changed config object! return config; }, diff --git a/cypress/helpers/util.ts b/cypress/helpers/util.ts index aed5d7973..fafdc37ec 100644 --- a/cypress/helpers/util.ts +++ b/cypress/helpers/util.ts @@ -116,6 +116,8 @@ export const openURLAndVerifyRendering = ( cy.get('svg').should(validation); } + cy.argosScreenshot(name); + if (useAppli) { cy.log(`Check eyes ${Cypress.spec.name}`); cy.eyesCheckWindow('Click!'); diff --git a/cypress/support/e2e.js b/cypress/support/e2e.js index ef985866e..aa888465b 100644 --- a/cypress/support/e2e.js +++ b/cypress/support/e2e.js @@ -15,6 +15,7 @@ import '@cypress/code-coverage/support'; import '@applitools/eyes-cypress/commands'; +import '@argos-ci/cypress/support'; // Import commands.js using ES2015 syntax: import './commands'; diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json index baa9a7217..b01ce9bac 100644 --- a/cypress/tsconfig.json +++ b/cypress/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "target": "es2020", "lib": ["es2020", "dom"], - "types": ["cypress", "node"], + "types": ["cypress", "node", "@argos-ci/cypress/dist/support.d.ts"], "allowImportingTsExtensions": true, "noEmit": true }, diff --git a/package.json b/package.json index 55bc454f5..540aef3f0 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ }, "devDependencies": { "@applitools/eyes-cypress": "^3.42.3", + "@argos-ci/cypress": "^2.0.5", "@cspell/eslint-plugin": "^8.6.0", "@cypress/code-coverage": "^3.12.30", "@rollup/plugin-typescript": "^11.1.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3cf45df60..0a57589a6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,12 +16,15 @@ importers: '@applitools/eyes-cypress': specifier: ^3.42.3 version: 3.43.1(encoding@0.1.13)(typescript@5.4.5) + '@argos-ci/cypress': + specifier: ^2.0.5 + version: 2.0.5(cypress@13.7.3) '@cspell/eslint-plugin': specifier: ^8.6.0 version: 8.7.0(eslint@8.57.0) '@cypress/code-coverage': specifier: ^3.12.30 - version: 3.12.38(@babel/core@7.24.4)(@babel/preset-env@7.24.5(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(cypress@13.7.3)(webpack@5.91.0(esbuild@0.20.2)) + version: 3.12.38(@babel/core@7.24.4)(@babel/preset-env@7.24.7(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(cypress@13.7.3)(webpack@5.91.0(esbuild@0.20.2)) '@rollup/plugin-typescript': specifier: ^11.1.6 version: 11.1.6(rollup@4.17.2)(tslib@2.6.2)(typescript@5.4.5) @@ -382,10 +385,10 @@ importers: version: 5.0.0 vitepress: specifier: ^1.0.1 - version: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.0)(typescript@5.4.5) + version: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.7.2)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.1)(typescript@5.4.5) vitepress-plugin-search: specifier: 1.0.4-alpha.22 - version: 1.0.4-alpha.22(flexsearch@0.7.43)(vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.0)(typescript@5.4.5))(vue@3.4.26(typescript@5.4.5)) + version: 1.0.4-alpha.22(flexsearch@0.7.43)(vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.7.2)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.1)(typescript@5.4.5))(vue@3.4.26(typescript@5.4.5)) packages/mermaid-example-diagram: dependencies: @@ -500,7 +503,7 @@ importers: version: 0.19.8(vite@5.2.10(@types/node@20.12.7)(terser@5.31.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.0.0) vitepress: specifier: 1.1.4 - version: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.1)(typescript@5.4.5) + version: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.7.2)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.1)(typescript@5.4.5) workbox-window: specifier: ^7.0.0 version: 7.0.0 @@ -748,6 +751,24 @@ packages: resolution: {integrity: sha512-CvBxdfPZ3ss1hOD8Yr9y2SzVfqLKBA/0N3gfQd5qafMrBhI0wuCycQmiclpAQNEVNkbhqn8/t6dOeeYgapjyDw==} engines: {node: '>=12.13.0'} + '@argos-ci/browser@2.1.2': + resolution: {integrity: sha512-4dpz76kW0KnXCYdxtkcdiaYUM4owmKtT9zPqrd1yPo+VuSNCNULyCZJ4mdy0aXWT716JLMMmIZ3AnQSkyaqvaA==} + engines: {node: '>=18.0.0'} + + '@argos-ci/core@2.3.0': + resolution: {integrity: sha512-0mHncBeOD7GFYfGZYUEcDgLyzsvPyxK/L1MROfAurFeWcw89ODG24JEdPsECtZBSCZMmMcK8XqeJIJkZsnDGZA==} + engines: {node: '>=18.0.0'} + + '@argos-ci/cypress@2.0.5': + resolution: {integrity: sha512-pMM2+hGT8IE2XfWQpk4Mnf73K1B+97x0f1tkHrEpsopZBWmZy5nMZ0iqNLafJsRfo1LtZA8171oftPl5nEAz8g==} + engines: {node: '>=18.0.0'} + peerDependencies: + cypress: ^12.0.0 || ^13.0.0 + + '@argos-ci/util@2.0.0': + resolution: {integrity: sha512-wnsNQOjcNfxOi8cHWSv8+GhzUeIitDJgjhuSNR9zrfHB0Y3nDVI57S/mHRo+EMAaWwghfbrxW1ypRCXVseN0GA==} + engines: {node: '>=18.0.0'} + '@babel/code-frame@7.24.2': resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} @@ -1438,12 +1459,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.24.5': - resolution: {integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/preset-env@7.24.7': resolution: {integrity: sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==} engines: {node: '>=6.9.0'} @@ -1774,6 +1789,9 @@ packages: search-insights: optional: true + '@emnapi/runtime@1.2.0': + resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} + '@es-joy/jsdoccomment@0.42.0': resolution: {integrity: sha512-R1w57YlVA6+YE01wch3GPYn6bCsrOV3YW/5oGGE2tmX6JcL9Nr+b5IikrjMPF+v9CV3ay+obImEdsDhovhJrzw==} engines: {node: '>=16'} @@ -2139,6 +2157,119 @@ packages: '@iconify/utils@2.1.23': resolution: {integrity: sha512-YGNbHKM5tyDvdWZ92y2mIkrfvm5Fvhe6WJSkWu7vvOFhMtYDP0casZpoRz0XEHZCrYsR4stdGT3cZ52yp5qZdQ==} + '@img/sharp-darwin-arm64@0.33.4': + resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.4': + resolution: {integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.2': + resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} + engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.2': + resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} + engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.2': + resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.2': + resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.2': + resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.2': + resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.2': + resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.2': + resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.4': + resolution: {integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.4': + resolution: {integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.4': + resolution: {integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==} + engines: {glibc: '>=2.31', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.4': + resolution: {integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.4': + resolution: {integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.4': + resolution: {integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.4': + resolution: {integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.4': + resolution: {integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.4': + resolution: {integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [win32] + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -3519,6 +3650,9 @@ packages: axios@1.6.7: resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + axios@1.7.2: + resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} + babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3882,6 +4016,10 @@ packages: color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -3991,6 +4129,10 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + convict@6.2.4: + resolution: {integrity: sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==} + engines: {node: '>=6'} + cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} @@ -4129,6 +4271,9 @@ packages: peerDependencies: cypress: ^4.5.0 + cypress-wait-until@3.0.1: + resolution: {integrity: sha512-kpoa8yL6Bi/JNsThGBbrrm7g4SNzYyBUv9M5pF6/NTVm/ClY0HnJzeuWnHiAUZKIZ5l86Oedb12wQyjx7/CWPg==} + cypress@13.7.3: resolution: {integrity: sha512-uoecY6FTCAuIEqLUYkTrxamDBjMHTYak/1O7jtgwboHiTnS1NaMOoR08KcTrbRZFCBvYOiS4tEkQRmsV+xcrag==} engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} @@ -4452,6 +4597,10 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -5058,6 +5207,15 @@ packages: debug: optional: true + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + font-awesome@4.7.0: resolution: {integrity: sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==} engines: {node: '>=0.10.3'} @@ -6218,6 +6376,9 @@ packages: lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -7514,6 +7675,10 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} + sharp@0.33.4: + resolution: {integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==} + engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -7894,11 +8059,6 @@ packages: engines: {node: '>=10'} hasBin: true - terser@5.31.0: - resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} - engines: {node: '>=10'} - hasBin: true - terser@5.31.1: resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==} engines: {node: '>=10'} @@ -8782,6 +8942,10 @@ packages: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -9205,6 +9369,32 @@ snapshots: '@applitools/utils@1.7.0': {} + '@argos-ci/browser@2.1.2': {} + + '@argos-ci/core@2.3.0': + dependencies: + '@argos-ci/util': 2.0.0 + axios: 1.7.2(debug@4.3.5) + convict: 6.2.4 + debug: 4.3.5 + fast-glob: 3.3.2 + sharp: 0.33.4 + tmp: 0.2.3 + transitivePeerDependencies: + - supports-color + + '@argos-ci/cypress@2.0.5(cypress@13.7.3)': + dependencies: + '@argos-ci/browser': 2.1.2 + '@argos-ci/core': 2.3.0 + '@argos-ci/util': 2.0.0 + cypress: 13.7.3 + cypress-wait-until: 3.0.1 + transitivePeerDependencies: + - supports-color + + '@argos-ci/util@2.0.0': {} + '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.2 @@ -10605,7 +10795,7 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.7 - '@babel/preset-env@7.24.5(@babel/core@7.24.4)': + '@babel/preset-env@7.24.7(@babel/core@7.24.4)': dependencies: '@babel/compat-data': 7.24.7 '@babel/core': 7.24.4 @@ -11089,11 +11279,11 @@ snapshots: '@cspell/strong-weak-map@8.7.0': {} - '@cypress/code-coverage@3.12.38(@babel/core@7.24.4)(@babel/preset-env@7.24.5(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(cypress@13.7.3)(webpack@5.91.0(esbuild@0.20.2))': + '@cypress/code-coverage@3.12.38(@babel/core@7.24.4)(@babel/preset-env@7.24.7(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(cypress@13.7.3)(webpack@5.91.0(esbuild@0.20.2))': dependencies: '@babel/core': 7.24.4 - '@babel/preset-env': 7.24.5(@babel/core@7.24.4) - '@cypress/webpack-preprocessor': 6.0.1(@babel/core@7.24.4)(@babel/preset-env@7.24.5(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(webpack@5.91.0(esbuild@0.20.2)) + '@babel/preset-env': 7.24.7(@babel/core@7.24.4) + '@cypress/webpack-preprocessor': 6.0.1(@babel/core@7.24.4)(@babel/preset-env@7.24.7(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(webpack@5.91.0(esbuild@0.20.2)) babel-loader: 9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)) chalk: 4.1.2 cypress: 13.7.3 @@ -11129,10 +11319,10 @@ snapshots: tunnel-agent: 0.6.0 uuid: 8.3.2 - '@cypress/webpack-preprocessor@6.0.1(@babel/core@7.24.4)(@babel/preset-env@7.24.5(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(webpack@5.91.0(esbuild@0.20.2))': + '@cypress/webpack-preprocessor@6.0.1(@babel/core@7.24.4)(@babel/preset-env@7.24.7(@babel/core@7.24.4))(babel-loader@9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)))(webpack@5.91.0(esbuild@0.20.2))': dependencies: '@babel/core': 7.24.4 - '@babel/preset-env': 7.24.5(@babel/core@7.24.4) + '@babel/preset-env': 7.24.7(@babel/core@7.24.4) babel-loader: 9.1.3(@babel/core@7.24.4)(webpack@5.91.0(esbuild@0.20.2)) bluebird: 3.7.1 debug: 4.3.4(supports-color@8.1.1) @@ -11174,6 +11364,11 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' + '@emnapi/runtime@1.2.0': + dependencies: + tslib: 2.6.2 + optional: true + '@es-joy/jsdoccomment@0.42.0': dependencies: comment-parser: 1.4.1 @@ -11411,13 +11606,88 @@ snapshots: '@antfu/install-pkg': 0.1.1 '@antfu/utils': 0.7.7 '@iconify/types': 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 kolorist: 1.8.0 local-pkg: 0.5.0 mlly: 1.6.1 transitivePeerDependencies: - supports-color + '@img/sharp-darwin-arm64@0.33.4': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.2 + optional: true + + '@img/sharp-darwin-x64@0.33.4': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.2 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.2': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.2': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.2': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.2': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.2': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.2': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.2': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.2': + optional: true + + '@img/sharp-linux-arm64@0.33.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.2 + optional: true + + '@img/sharp-linux-arm@0.33.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.2 + optional: true + + '@img/sharp-linux-s390x@0.33.4': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.2 + optional: true + + '@img/sharp-linux-x64@0.33.4': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.2 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.2 + optional: true + + '@img/sharp-wasm32@0.33.4': + dependencies: + '@emnapi/runtime': 1.2.0 + optional: true + + '@img/sharp-win32-ia32@0.33.4': + optional: true + + '@img/sharp-win32-x64@0.33.4': + optional: true + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -12514,11 +12784,6 @@ snapshots: dependencies: vite-plugin-pwa: 0.19.8(vite@5.2.10(@types/node@20.12.7)(terser@5.31.1))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.0.0) - '@vitejs/plugin-vue@5.0.4(vite@5.2.10(@types/node@20.12.7)(terser@5.31.0))(vue@3.4.26(typescript@5.4.5))': - dependencies: - vite: 5.2.10(@types/node@20.12.7)(terser@5.31.0) - vue: 3.4.26(typescript@5.4.5) - '@vitejs/plugin-vue@5.0.4(vite@5.2.10(@types/node@20.12.7)(terser@5.31.1))(vue@3.4.26(typescript@5.4.5))': dependencies: vite: 5.2.10(@types/node@20.12.7)(terser@5.31.1) @@ -12727,13 +12992,13 @@ snapshots: - '@vue/composition-api' - vue - '@vueuse/integrations@10.9.0(axios@1.6.7)(focus-trap@7.5.4)(vue@3.4.26(typescript@5.4.5))': + '@vueuse/integrations@10.9.0(axios@1.7.2)(focus-trap@7.5.4)(vue@3.4.26(typescript@5.4.5))': dependencies: '@vueuse/core': 10.9.0(vue@3.4.26(typescript@5.4.5)) '@vueuse/shared': 10.9.0(vue@3.4.26(typescript@5.4.5)) vue-demi: 0.14.7(vue@3.4.26(typescript@5.4.5)) optionalDependencies: - axios: 1.6.7(debug@4.3.4) + axios: 1.7.2(debug@4.3.5) focus-trap: 7.5.4 transitivePeerDependencies: - '@vue/composition-api' @@ -12937,7 +13202,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -13132,7 +13397,7 @@ snapshots: avvio@7.2.5: dependencies: archy: 1.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 fastq: 1.17.1 queue-microtask: 1.2.3 transitivePeerDependencies: @@ -13150,6 +13415,14 @@ snapshots: transitivePeerDependencies: - debug + axios@1.7.2(debug@4.3.5): + dependencies: + follow-redirects: 1.15.6(debug@4.3.5) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + babel-jest@29.7.0(@babel/core@7.24.5): dependencies: '@babel/core': 7.24.5 @@ -13608,6 +13881,11 @@ snapshots: color-name: 1.1.4 simple-swizzle: 0.2.2 + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + colorette@2.0.20: {} colors@0.5.1: {} @@ -13704,6 +13982,11 @@ snapshots: convert-source-map@2.0.0: {} + convict@6.2.4: + dependencies: + lodash.clonedeep: 4.5.0 + yargs-parser: 20.2.9 + cookie-signature@1.0.6: {} cookie@0.5.0: {} @@ -13908,6 +14191,8 @@ snapshots: transitivePeerDependencies: - jest + cypress-wait-until@3.0.1: {} + cypress@13.7.3: dependencies: '@cypress/request': 3.0.1 @@ -14265,6 +14550,8 @@ snapshots: destroy@1.2.0: {} + detect-libc@2.0.3: {} + detect-newline@3.1.0: {} detect-node@2.1.0: {} @@ -15069,7 +15356,7 @@ snapshots: dependencies: chalk: 4.1.2 commander: 5.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -15119,6 +15406,10 @@ snapshots: optionalDependencies: debug: 4.3.4(supports-color@8.1.1) + follow-redirects@1.15.6(debug@4.3.5): + optionalDependencies: + debug: 4.3.5 + font-awesome@4.7.0: {} for-each@0.3.3: @@ -15492,7 +15783,7 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -15548,7 +15839,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -16507,6 +16798,8 @@ snapshots: lodash-es@4.17.21: {} + lodash.clonedeep@4.5.0: {} + lodash.debounce@4.0.8: {} lodash.flattendeep@4.4.0: {} @@ -18011,6 +18304,32 @@ snapshots: dependencies: kind-of: 6.0.3 + sharp@0.33.4: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.0 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.4 + '@img/sharp-darwin-x64': 0.33.4 + '@img/sharp-libvips-darwin-arm64': 1.0.2 + '@img/sharp-libvips-darwin-x64': 1.0.2 + '@img/sharp-libvips-linux-arm': 1.0.2 + '@img/sharp-libvips-linux-arm64': 1.0.2 + '@img/sharp-libvips-linux-s390x': 1.0.2 + '@img/sharp-libvips-linux-x64': 1.0.2 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 + '@img/sharp-libvips-linuxmusl-x64': 1.0.2 + '@img/sharp-linux-arm': 0.33.4 + '@img/sharp-linux-arm64': 0.33.4 + '@img/sharp-linux-s390x': 0.33.4 + '@img/sharp-linux-x64': 0.33.4 + '@img/sharp-linuxmusl-arm64': 0.33.4 + '@img/sharp-linuxmusl-x64': 0.33.4 + '@img/sharp-wasm32': 0.33.4 + '@img/sharp-win32-ia32': 0.33.4 + '@img/sharp-win32-x64': 0.33.4 + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -18466,14 +18785,6 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - terser@5.31.0: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 - commander: 2.20.3 - source-map-support: 0.5.21 - optional: true - terser@5.31.1: dependencies: '@jridgewell/source-map': 0.3.6 @@ -18912,16 +19223,6 @@ snapshots: transitivePeerDependencies: - supports-color - vite@5.2.10(@types/node@20.12.7)(terser@5.31.0): - dependencies: - esbuild: 0.20.2 - postcss: 8.4.38 - rollup: 4.17.2 - optionalDependencies: - '@types/node': 20.12.7 - fsevents: 2.3.3 - terser: 5.31.0 - vite@5.2.10(@types/node@20.12.7)(terser@5.31.1): dependencies: esbuild: 0.20.2 @@ -18932,63 +19233,17 @@ snapshots: fsevents: 2.3.3 terser: 5.31.1 - vitepress-plugin-search@1.0.4-alpha.22(flexsearch@0.7.43)(vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.0)(typescript@5.4.5))(vue@3.4.26(typescript@5.4.5)): + vitepress-plugin-search@1.0.4-alpha.22(flexsearch@0.7.43)(vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.7.2)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.1)(typescript@5.4.5))(vue@3.4.26(typescript@5.4.5)): dependencies: '@types/flexsearch': 0.7.3 '@types/markdown-it': 12.2.3 flexsearch: 0.7.43 glob-to-regexp: 0.4.1 markdown-it: 13.0.1 - vitepress: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.0)(typescript@5.4.5) + vitepress: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.7.2)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.1)(typescript@5.4.5) vue: 3.4.26(typescript@5.4.5) - vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.0)(typescript@5.4.5): - dependencies: - '@docsearch/css': 3.6.0 - '@docsearch/js': 3.6.0(@algolia/client-search@4.23.3)(search-insights@2.13.0) - '@shikijs/core': 1.4.0 - '@shikijs/transformers': 1.4.0 - '@types/markdown-it': 14.0.1 - '@vitejs/plugin-vue': 5.0.4(vite@5.2.10(@types/node@20.12.7)(terser@5.31.0))(vue@3.4.26(typescript@5.4.5)) - '@vue/devtools-api': 7.1.3(vue@3.4.26(typescript@5.4.5)) - '@vueuse/core': 10.9.0(vue@3.4.26(typescript@5.4.5)) - '@vueuse/integrations': 10.9.0(axios@1.6.7)(focus-trap@7.5.4)(vue@3.4.26(typescript@5.4.5)) - focus-trap: 7.5.4 - mark.js: 8.11.1 - minisearch: 6.3.0 - shiki: 1.4.0 - vite: 5.2.10(@types/node@20.12.7)(terser@5.31.0) - vue: 3.4.26(typescript@5.4.5) - optionalDependencies: - postcss: 8.4.38 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/node' - - '@types/react' - - '@vue/composition-api' - - async-validator - - axios - - change-case - - drauu - - fuse.js - - idb-keyval - - jwt-decode - - less - - lightningcss - - nprogress - - qrcode - - react - - react-dom - - sass - - search-insights - - sortablejs - - stylus - - sugarss - - terser - - typescript - - universal-cookie - - vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.6.7)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.1)(typescript@5.4.5): + vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.12.7)(axios@1.7.2)(postcss@8.4.38)(search-insights@2.13.0)(terser@5.31.1)(typescript@5.4.5): dependencies: '@docsearch/css': 3.6.0 '@docsearch/js': 3.6.0(@algolia/client-search@4.23.3)(search-insights@2.13.0) @@ -18998,7 +19253,7 @@ snapshots: '@vitejs/plugin-vue': 5.0.4(vite@5.2.10(@types/node@20.12.7)(terser@5.31.1))(vue@3.4.26(typescript@5.4.5)) '@vue/devtools-api': 7.1.3(vue@3.4.26(typescript@5.4.5)) '@vueuse/core': 10.9.0(vue@3.4.26(typescript@5.4.5)) - '@vueuse/integrations': 10.9.0(axios@1.6.7)(focus-trap@7.5.4)(vue@3.4.26(typescript@5.4.5)) + '@vueuse/integrations': 10.9.0(axios@1.7.2)(focus-trap@7.5.4)(vue@3.4.26(typescript@5.4.5)) focus-trap: 7.5.4 mark.js: 8.11.1 minisearch: 6.3.0 @@ -19587,6 +19842,8 @@ snapshots: camelcase: 5.3.1 decamelize: 1.2.0 + yargs-parser@20.2.9: {} + yargs-parser@21.1.1: {} yargs@15.4.1: From 3f1bba407e346b6d9aa7a27b06008a83475215ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Berg=C3=A9?= Date: Mon, 17 Jun 2024 12:19:07 +0200 Subject: [PATCH 2/6] chore(argos): setup parallel mode --- .github/workflows/e2e.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index fe0827196..8d4e3ae9a 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -147,6 +147,9 @@ jobs: VITEST_COVERAGE: true CYPRESS_COMMIT: ${{ github.sha }} ARGOS_TOKEN: ${{ secrets.ARGOS_TOKEN }} + ARGOS_PARALLEL: true + ARGOS_PARALLEL_TOTAL: 4 + ARGOS_PARALLEL_INDEX: ${{ matrix.containers }} - name: Upload Coverage to Codecov uses: codecov/codecov-action@v4 From 44688a20b609e90217223ef6e8c0bc3028e61030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Berg=C3=A9?= Date: Mon, 17 Jun 2024 12:24:31 +0200 Subject: [PATCH 3/6] chore(argos): put parallel mode only when necessary --- .github/workflows/e2e.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 8d4e3ae9a..8f2998ad2 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -147,7 +147,7 @@ jobs: VITEST_COVERAGE: true CYPRESS_COMMIT: ${{ github.sha }} ARGOS_TOKEN: ${{ secrets.ARGOS_TOKEN }} - ARGOS_PARALLEL: true + ARGOS_PARALLEL: ${{ env.CYPRESS_RECORD_KEY != '' }} ARGOS_PARALLEL_TOTAL: 4 ARGOS_PARALLEL_INDEX: ${{ matrix.containers }} From caa0ff340ddd1ce55b21070e8de5f3d6f3e857da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Berg=C3=A9?= Date: Mon, 17 Jun 2024 12:31:16 +0200 Subject: [PATCH 4/6] chore(argos): disable matchImageSnapshot --- cypress/helpers/util.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cypress/helpers/util.ts b/cypress/helpers/util.ts index fafdc37ec..d6ceb85f1 100644 --- a/cypress/helpers/util.ts +++ b/cypress/helpers/util.ts @@ -124,6 +124,7 @@ export const openURLAndVerifyRendering = ( cy.log(`Closing eyes ${Cypress.spec.name}`); cy.eyesClose(); } else { - cy.matchImageSnapshot(name); + // Argos will take care of this + // cy.matchImageSnapshot(name); } }; From 788e7c96ff783cf78bb0d846747ef71e91de7bec Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 19 Jun 2024 21:47:07 +0530 Subject: [PATCH 5/6] chore: Remove cytoscape patch. --- package.json | 5 ---- packages/mermaid/package.json | 4 +-- patches/cytoscape@3.28.1.patch | 20 ------------- pnpm-lock.yaml | 51 +++++++++++++--------------------- 4 files changed, 21 insertions(+), 59 deletions(-) delete mode 100644 patches/cytoscape@3.28.1.patch diff --git a/package.json b/package.json index 540aef3f0..deca7cc1b 100644 --- a/package.json +++ b/package.json @@ -127,10 +127,5 @@ }, "nyc": { "report-dir": "coverage/cypress" - }, - "pnpm": { - "patchedDependencies": { - "cytoscape@3.28.1": "patches/cytoscape@3.28.1.patch" - } } } diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index 9a91a645e..bc2d5da5f 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -70,7 +70,7 @@ "dependencies": { "@braintree/sanitize-url": "^7.0.1", "@mermaid-js/parser": "workspace:^", - "cytoscape": "^3.28.1", + "cytoscape": "^3.29.2", "cytoscape-cose-bilkent": "^4.1.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", @@ -88,7 +88,7 @@ }, "devDependencies": { "@adobe/jsonschema2md": "^8.0.0", - "@types/cytoscape": "^3.19.16", + "@types/cytoscape": "^3.21.4", "@types/d3": "^7.4.3", "@types/d3-sankey": "^0.12.4", "@types/d3-scale": "^4.0.8", diff --git a/patches/cytoscape@3.28.1.patch b/patches/cytoscape@3.28.1.patch deleted file mode 100644 index d92163a31..000000000 --- a/patches/cytoscape@3.28.1.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/package.json b/package.json -index f2f77fa79c99382b079f4051ed51eafe8d2379c8..0bfddf55394e86f3a386eb7ab681369d410bae07 100644 ---- a/package.json -+++ b/package.json -@@ -30,7 +30,15 @@ - "engines": { - "node": ">=0.10" - }, -+ "exports": { -+ ".": { -+ "import": "./dist/cytoscape.umd.js", -+ "default": "./dist/cytoscape.cjs.js" -+ }, -+ "./*": "./*" -+ }, - "main": "dist/cytoscape.cjs.js", -+ "module": "dist/cytoscape.umd.js", - "unpkg": "dist/cytoscape.min.js", - "jsdelivr": "dist/cytoscape.min.js", - "scripts": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a57589a6..baaca36c2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,11 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -patchedDependencies: - cytoscape@3.28.1: - hash: claipxynndhyqyu2csninuoh5e - path: patches/cytoscape@3.28.1.patch - importers: .: @@ -212,11 +207,11 @@ importers: specifier: workspace:^ version: link:../parser cytoscape: - specifier: ^3.28.1 - version: 3.28.1(patch_hash=claipxynndhyqyu2csninuoh5e) + specifier: ^3.29.2 + version: 3.29.2 cytoscape-cose-bilkent: specifier: ^4.1.0 - version: 4.1.0(cytoscape@3.28.1(patch_hash=claipxynndhyqyu2csninuoh5e)) + version: 4.1.0(cytoscape@3.29.2) d3: specifier: ^7.9.0 version: 7.9.0 @@ -261,8 +256,8 @@ importers: specifier: ^8.0.0 version: 8.0.2 '@types/cytoscape': - specifier: ^3.19.16 - version: 3.21.0 + specifier: ^3.21.4 + version: 3.21.4 '@types/d3': specifier: ^7.4.3 version: 7.4.3 @@ -2636,8 +2631,8 @@ packages: '@types/cors@2.8.17': resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} - '@types/cytoscape@3.21.0': - resolution: {integrity: sha512-RN5SPiyVDpUP+LoOlxxlOYAMzkE7iuv3gA1jt3Hx2qTwArpZVPPdO+SI0hUj49OAn4QABR7JK9Gi0hibzGE0Aw==} + '@types/cytoscape@3.21.4': + resolution: {integrity: sha512-g4M57Zho+AMNYuEptTWH+aZ5VpyF8VcaI2t0+1/PWRZp5XQM6hku1Vo5/Ui721i+L+WCGkI1EjGAeHcYUQ2PRg==} '@types/d3-array@3.2.1': resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} @@ -4284,8 +4279,8 @@ packages: peerDependencies: cytoscape: ^3.2.0 - cytoscape@3.28.1: - resolution: {integrity: sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==} + cytoscape@3.29.2: + resolution: {integrity: sha512-2G1ycU28Nh7OHT9rkXRLpCDP30MKH1dXJORZuBhtEhEW7pKwgPi77ImqlCWinouyE1PNepIOGZBOrE84DG7LyQ==} engines: {node: '>=0.10'} d3-array@2.12.1: @@ -5515,9 +5510,6 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - heap@0.2.7: - resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} - highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} @@ -11606,7 +11598,7 @@ snapshots: '@antfu/install-pkg': 0.1.1 '@antfu/utils': 0.7.7 '@iconify/types': 2.0.0 - debug: 4.3.5 + debug: 4.3.4(supports-color@8.1.1) kolorist: 1.8.0 local-pkg: 0.5.0 mlly: 1.6.1 @@ -12143,7 +12135,7 @@ snapshots: dependencies: '@types/node': 20.12.7 - '@types/cytoscape@3.21.0': {} + '@types/cytoscape@3.21.4': {} '@types/d3-array@3.2.1': {} @@ -13202,7 +13194,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.5 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -13397,7 +13389,7 @@ snapshots: avvio@7.2.5: dependencies: archy: 1.0.0 - debug: 4.3.5 + debug: 4.3.4(supports-color@8.1.1) fastq: 1.17.1 queue-microtask: 1.2.3 transitivePeerDependencies: @@ -14238,15 +14230,12 @@ snapshots: untildify: 4.0.0 yauzl: 2.10.0 - cytoscape-cose-bilkent@4.1.0(cytoscape@3.28.1(patch_hash=claipxynndhyqyu2csninuoh5e)): + cytoscape-cose-bilkent@4.1.0(cytoscape@3.29.2): dependencies: cose-base: 1.0.3 - cytoscape: 3.28.1(patch_hash=claipxynndhyqyu2csninuoh5e) + cytoscape: 3.29.2 - cytoscape@3.28.1(patch_hash=claipxynndhyqyu2csninuoh5e): - dependencies: - heap: 0.2.7 - lodash: 4.17.21 + cytoscape@3.29.2: {} d3-array@2.12.1: dependencies: @@ -15356,7 +15345,7 @@ snapshots: dependencies: chalk: 4.1.2 commander: 5.1.0 - debug: 4.3.5 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -15726,8 +15715,6 @@ snapshots: dependencies: function-bind: 1.1.2 - heap@0.2.7: {} - highlight.js@10.7.3: {} hookable@5.5.3: {} @@ -15783,7 +15770,7 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -15839,7 +15826,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color From 493bb8a80efaf6be0619f3d72153dca7a44b6ef5 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 19 Jun 2024 23:14:54 +0530 Subject: [PATCH 6/6] chore: Remove reference screenshot generation from E2E --- .github/workflows/e2e.yml | 68 --------------------------------------- 1 file changed, 68 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 8f2998ad2..05315cfdb 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -1,9 +1,3 @@ -# We use github cache to save snapshots between runs. -# For PRs and MergeQueues, the target commit is used, and for push events, github.event.previous is used. -# If a snapshot for a given Hash is not found, we checkout that commit, run the tests and cache the snapshots. -# These are then downloaded before running the E2E, providing the reference snapshots. -# If there are any errors, the diff image is uploaded to artifacts, and the user is notified. - name: E2E on: @@ -72,16 +66,6 @@ jobs: mkdir -p cypress/snapshots/stats/base mv stats cypress/snapshots/stats/base - - name: Cypress run - uses: cypress-io/github-action@v6 - id: cypress-snapshot-gen - if: ${{ steps.cache-snapshot.outputs.cache-hit != 'true' }} - with: - install: false - start: pnpm run dev - wait-on: 'http://localhost:9000' - browser: chrome - e2e: runs-on: ubuntu-latest container: @@ -162,55 +146,3 @@ jobs: fail_ci_if_error: false verbose: true token: 6845cc80-77ee-4e17-85a1-026cd95e0766 - - # We upload the artifacts into numbered archives to prevent overwriting - - name: Upload Artifacts - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: snapshots-${{ matrix.containers }} - retention-days: 1 - path: ./cypress/snapshots - - combineArtifacts: - needs: e2e - runs-on: ubuntu-latest - if: ${{ always() }} - steps: - # Download all snapshot artifacts and merge them into a single folder - - name: Download All Artifacts - uses: actions/download-artifact@v4 - with: - path: snapshots - pattern: snapshots-* - merge-multiple: true - - # For successful push events, we save the snapshots cache - - name: Save snapshots cache - id: cache-upload - if: ${{ github.event_name == 'push' && needs.e2e.result != 'failure' }} - uses: actions/cache/save@v4 - with: - path: ./snapshots - key: ${{ runner.os }}-snapshots-${{ github.event.after }} - - - name: Flatten images to a folder - if: ${{ needs.e2e.result == 'failure' }} - run: | - mkdir errors - cd snapshots - find . -mindepth 2 -type d -name "*__diff_output__*" -exec sh -c 'mv "$0"/*.png ../errors/' {} \; - - - name: Upload Error snapshots - if: ${{ needs.e2e.result == 'failure' }} - uses: actions/upload-artifact@v4 - id: upload-artifacts - with: - name: error-snapshots - retention-days: 10 - path: errors/ - - - name: Notify Users - if: ${{ needs.e2e.result == 'failure' }} - run: | - echo "::error title=Visual tests failed::You can view images that failed by downloading the error-snapshots artifact: ${{ steps.upload-artifacts.outputs.artifact-url }}"