diff --git a/src/frontend/content-gen/.gitignore b/src/frontend/content-gen/.gitignore new file mode 100644 index 00000000..5b67461f --- /dev/null +++ b/src/frontend/content-gen/.gitignore @@ -0,0 +1,7 @@ +node_modules/ +test-results/ +tests/contestInfo.json +tests/screenshots/ +playwright-report/ +blob-report/ +playwright/.cache/ diff --git a/src/frontend/content-gen/package-lock.json b/src/frontend/content-gen/package-lock.json new file mode 100644 index 00000000..b8673a69 --- /dev/null +++ b/src/frontend/content-gen/package-lock.json @@ -0,0 +1,74 @@ +{ + "name": "content-gen", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "content-gen", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "@playwright/test": "^1.32.3", + "@types/node": "^22.5.4", + "fs": "0.0.1-security", + "path": "^0.12.7" + } + }, + "../node_modules/.pnpm/@playwright+test@1.45.2/node_modules/@playwright/test": { + "version": "1.45.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.45.2" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "../node_modules/.pnpm/fs@0.0.1-security/node_modules/fs": { + "version": "0.0.1-security", + "dev": true, + "license": "ISC" + }, + "../node_modules/.pnpm/path@0.12.7/node_modules/path": { + "version": "0.12.7", + "dev": true, + "license": "MIT", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/@playwright/test": { + "resolved": "../node_modules/.pnpm/@playwright+test@1.45.2/node_modules/@playwright/test", + "link": true + }, + "node_modules/@types/node": { + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", + "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "dev": true, + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/fs": { + "resolved": "../node_modules/.pnpm/fs@0.0.1-security/node_modules/fs", + "link": true + }, + "node_modules/path": { + "resolved": "../node_modules/.pnpm/path@0.12.7/node_modules/path", + "link": true + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true + } + } +} diff --git a/src/frontend/content-gen/package.json b/src/frontend/content-gen/package.json new file mode 100644 index 00000000..8c40fb24 --- /dev/null +++ b/src/frontend/content-gen/package.json @@ -0,0 +1,19 @@ +{ + "name": "content-gen", + "version": "1.0.0", + "description": "", + "main": "index.js", + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@playwright/test": "^1.32.3", + "@types/node": "^22.5.4", + "fs": "0.0.1-security", + "path": "^0.12.7" + }, + "scripts": { + "install-browsers": "playwright install --with-deps", + "teamview": "playwright test teamview.spec.ts" + } +} diff --git a/src/frontend/content-gen/playwright.config.ts b/src/frontend/content-gen/playwright.config.ts new file mode 100644 index 00000000..497d00c6 --- /dev/null +++ b/src/frontend/content-gen/playwright.config.ts @@ -0,0 +1,45 @@ +import { defineConfig, devices } from '@playwright/test'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// import dotenv from 'dotenv'; +// dotenv.config({ path: path.resolve(__dirname, '.env') }); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: './tests', + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: 0, + /* Opt out of parallel tests on CI. */ + // workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: [ ["html", { open: "never" }] ], + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + // baseURL: 'http://127.0.0.1:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: "chromium", + use: { + ...devices["Desktop Chrome"], + channel: "chrome", + viewport: { width: 1920, height: 1080 }, + } + } + ] +}); diff --git a/src/frontend/content-gen/tests/teamview.spec.ts b/src/frontend/content-gen/tests/teamview.spec.ts new file mode 100644 index 00000000..4800f149 --- /dev/null +++ b/src/frontend/content-gen/tests/teamview.spec.ts @@ -0,0 +1,61 @@ +import test, { PlaywrightTestArgs, TestInfo, expect, request } from "@playwright/test"; +import { TeamMediaType, TeamId, ExternalTeamViewSettings, Widget, ContestInfo } from "../../generated/api" +import * as fs from "node:fs"; +import * as path from "node:path"; + +const BACKEND_URL = process.env.BACKEND_URL ?? "http://localhost:8080"; + +const getTeamViewSettings = async (teamId: TeamId, media: TeamMediaType) => { + const adminApiContext = await request.newContext({ baseURL: `${BACKEND_URL}/api/admin/` }); + const adminSettings: ExternalTeamViewSettings = {"mediaTypes": [media],"teamId": teamId,"showTaskStatus": false,"showAchievement": false,"showTimeLine": false}; + const resp = await adminApiContext.post("./teamView/preview", { + data: adminSettings, + headers: { "Content-Type": "application/json" } + }); + expect.soft(resp.ok()).toBeTruthy(); + const widget = (await resp.json()) as Widget; + widget.type = Widget.Type.TeamViewWidget; + widget.location = { sizeX: 1920, sizeY: 1080, positionX: 0, positionY: 0 }; + return widget; +} + +const testTeamViewOneMedia = (teamId: TeamId, media: TeamMediaType) => + async ({ page }: PlaywrightTestArgs, testInfo: TestInfo) => { + const widgets = [await getTeamViewSettings(teamId, media)]; + await page.goto(`${BACKEND_URL}/overlay?forceWidgets=${encodeURIComponent(JSON.stringify(widgets))}`); + + while (true) { + await page.waitForTimeout(500); + const teamViewDisplay = await page.locator(".TeamViewContainer").first().evaluate((el) => { + return window.getComputedStyle(el).getPropertyValue("display"); + }); + if (teamViewDisplay !== "none") { + break; + } + } + await page.waitForTimeout(1000); + + const testName = `${teamId}_${media}`; + const screenshot = await page.screenshot({ path: `tests/screenshots/${testName}.png` }); + + await testInfo.attach("page", { + body: screenshot, + contentType: "image/png", + }); + }; + + +const contestInfo = JSON.parse(fs.readFileSync(path.join(__dirname, "contestInfo.json")).toString("utf-8")) as ContestInfo; + +test.describe("TeamViews", async () => { + // const contestInfo = (await contestInfoRequest.json()) as ContestInfo; + const medias = [TeamMediaType.camera, TeamMediaType.screen]; + for (let media of medias) { + for (let team of contestInfo.teams) { + if (team.isHidden) { + continue; + } + test(`${team.id}_${media}`, testTeamViewOneMedia(team.id, media)); + } + } +}); diff --git a/src/frontend/overlay/src/components/layouts/MainLayout.tsx b/src/frontend/overlay/src/components/layouts/MainLayout.tsx index 53412422..58cb0e47 100644 --- a/src/frontend/overlay/src/components/layouts/MainLayout.tsx +++ b/src/frontend/overlay/src/components/layouts/MainLayout.tsx @@ -101,6 +101,7 @@ const WIDGETS = { const useWidgets = () => { const queryParams = useQueryParams(); if(queryParams.has("forceWidgets")) { + console.info("forceWidgets=", queryParams.get("forceWidgets")); return JSON.parse(queryParams.get("forceWidgets")) as Record; } else { return useAppSelector(state => state.widgets.widgets); diff --git a/src/frontend/overlay/src/components/organisms/widgets/TeamView.tsx b/src/frontend/overlay/src/components/organisms/widgets/TeamView.tsx index be916ade..22c5ad17 100644 --- a/src/frontend/overlay/src/components/organisms/widgets/TeamView.tsx +++ b/src/frontend/overlay/src/components/organisms/widgets/TeamView.tsx @@ -30,7 +30,9 @@ const RoundedTeamMediaHolder = styled(TeamMediaHolder)` border-radius: ${c.GLOBAL_BORDER_RADIUS}; `; -const TeamViewContainer = styled.div<{ show: boolean; animation?: Keyframes; animationStyle: string }>` +const TeamViewContainer = styled.div.attrs({ + className: "TeamViewContainer", +})<{ show: boolean; animation?: Keyframes; animationStyle: string }>` width: 100%; height: 100%; display: ${props => props.show ? "flex" : "none"}; diff --git a/src/frontend/pnpm-lock.yaml b/src/frontend/pnpm-lock.yaml index 146b644b..1e18826e 100644 --- a/src/frontend/pnpm-lock.yaml +++ b/src/frontend/pnpm-lock.yaml @@ -63,7 +63,7 @@ importers: version: link:../common vite: specifier: ^5.3.1 - version: 5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3) + version: 5.3.4(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3) devDependencies: '@types/react': specifier: ^18.3.3 @@ -79,7 +79,7 @@ importers: version: 7.16.1(eslint@8.57.0)(typescript@5.5.3) '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3)) + version: 4.3.1(vite@5.3.4(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3)) eslint: specifier: ^8.57.0 version: 8.57.0 @@ -94,7 +94,7 @@ importers: version: 5.5.3 vite-tsconfig-paths: specifier: ^4.2.1 - version: 4.3.2(typescript@5.5.3)(vite@5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3)) + version: 4.3.2(typescript@5.5.3)(vite@5.3.4(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3)) common: {} @@ -153,7 +153,7 @@ importers: version: link:../common vite: specifier: ^5.3.1 - version: 5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3) + version: 5.3.4(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3) devDependencies: '@types/react': specifier: ^18.3.3 @@ -169,7 +169,7 @@ importers: version: 7.16.1(eslint@8.57.0)(typescript@5.5.3) '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3)) + version: 4.3.1(vite@5.3.4(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3)) eslint: specifier: ^8.57.0 version: 8.57.0 @@ -184,7 +184,7 @@ importers: version: 5.5.3 vite-tsconfig-paths: specifier: ^4.2.1 - version: 4.3.2(typescript@5.5.3)(vite@5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3)) + version: 4.3.2(typescript@5.5.3)(vite@5.3.4(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3)) overlay: dependencies: @@ -199,7 +199,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.0.3 - version: 4.3.1(vite@4.5.3(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3)) + version: 4.3.1(vite@4.5.3(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3)) hls.js: specifier: ^1.5.6 version: 1.5.13 @@ -277,10 +277,10 @@ importers: version: 2.16.0(react@18.3.1) vite: specifier: ^4.4.3 - version: 4.5.3(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3) + version: 4.5.3(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3) vite-plugin-top-level-await: specifier: ^1.3.1 - version: 1.4.1(rollup@4.18.1)(vite@4.5.3(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3)) + version: 1.4.1(rollup@4.18.1)(vite@4.5.3(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3)) web-vitals: specifier: ^1.1.2 version: 1.1.2 @@ -311,7 +311,7 @@ importers: version: 0.5.0(postcss@8.4.39) vite-tsconfig-paths: specifier: ^4.2.1 - version: 4.3.2(typescript@5.5.3)(vite@4.5.3(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3)) + version: 4.3.2(typescript@5.5.3)(vite@4.5.3(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3)) tests: dependencies: @@ -325,6 +325,9 @@ importers: '@playwright/test': specifier: ^1.32.3 version: 1.45.2 + '@types/node': + specifier: ^22.5.4 + version: 22.5.4 '@types/ws': specifier: ^8.5.5 version: 8.5.11 @@ -2258,8 +2261,8 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@20.14.11': - resolution: {integrity: sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==} + '@types/node@22.5.4': + resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -6735,8 +6738,8 @@ packages: underscore@1.12.1: resolution: {integrity: sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} @@ -8542,7 +8545,7 @@ snapshots: '@jest/console@27.5.1': dependencies: '@jest/types': 27.5.1 - '@types/node': 20.14.11 + '@types/node': 22.5.4 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 @@ -8551,7 +8554,7 @@ snapshots: '@jest/console@28.1.3': dependencies: '@jest/types': 28.1.3 - '@types/node': 20.14.11 + '@types/node': 22.5.4 chalk: 4.1.2 jest-message-util: 28.1.3 jest-util: 28.1.3 @@ -8564,7 +8567,7 @@ snapshots: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.11 + '@types/node': 22.5.4 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 @@ -8598,14 +8601,14 @@ snapshots: dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.11 + '@types/node': 22.5.4 jest-mock: 27.5.1 '@jest/fake-timers@27.5.1': dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 20.14.11 + '@types/node': 22.5.4 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -8623,7 +8626,7 @@ snapshots: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.11 + '@types/node': 22.5.4 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -8703,7 +8706,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.14.11 + '@types/node': 22.5.4 '@types/yargs': 16.0.9 chalk: 4.1.2 @@ -8712,7 +8715,7 @@ snapshots: '@jest/schemas': 28.1.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.14.11 + '@types/node': 22.5.4 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -9193,20 +9196,20 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.14.11 + '@types/node': 22.5.4 '@types/bonjour@3.5.13': dependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.5 - '@types/node': 20.14.11 + '@types/node': 22.5.4 '@types/connect@3.4.38': dependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 '@types/eslint-scope@3.7.7': dependencies: @@ -9224,7 +9227,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -9238,7 +9241,7 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 '@types/hoist-non-react-statics@3.3.5': dependencies: @@ -9251,7 +9254,7 @@ snapshots: '@types/http-proxy@1.17.14': dependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 '@types/istanbul-lib-coverage@2.0.6': {} @@ -9277,11 +9280,11 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 - '@types/node@20.14.11': + '@types/node@22.5.4': dependencies: - undici-types: 5.26.5 + undici-types: 6.19.8 '@types/parse-json@4.0.2': {} @@ -9314,7 +9317,7 @@ snapshots: '@types/resolve@1.17.1': dependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 '@types/retry@0.12.0': {} @@ -9323,7 +9326,7 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.14.11 + '@types/node': 22.5.4 '@types/serve-index@1.9.4': dependencies: @@ -9332,12 +9335,12 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.14.11 + '@types/node': 22.5.4 '@types/send': 0.17.4 '@types/sockjs@0.3.36': dependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 '@types/stack-utils@2.0.3': {} @@ -9353,7 +9356,7 @@ snapshots: '@types/ws@8.5.11': dependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 '@types/yargs-parser@21.0.3': {} @@ -9640,25 +9643,25 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react@4.3.1(vite@4.5.3(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3))': + '@vitejs/plugin-react@4.3.1(vite@4.5.3(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3))': dependencies: '@babel/core': 7.24.9 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.9) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 4.5.3(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3) + vite: 4.5.3(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.3.1(vite@5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3))': + '@vitejs/plugin-react@4.3.1(vite@5.3.4(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3))': dependencies: '@babel/core': 7.24.9 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.9) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3) + vite: 5.3.4(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3) transitivePeerDependencies: - supports-color @@ -12013,7 +12016,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.11 + '@types/node': 22.5.4 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -12109,7 +12112,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.11 + '@types/node': 22.5.4 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0 @@ -12124,7 +12127,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.11 + '@types/node': 22.5.4 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -12134,7 +12137,7 @@ snapshots: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.9 - '@types/node': 20.14.11 + '@types/node': 22.5.4 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -12153,7 +12156,7 @@ snapshots: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.11 + '@types/node': 22.5.4 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -12208,7 +12211,7 @@ snapshots: jest-mock@27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 20.14.11 + '@types/node': 22.5.4 jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): optionalDependencies: @@ -12246,7 +12249,7 @@ snapshots: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.11 + '@types/node': 22.5.4 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.11 @@ -12297,7 +12300,7 @@ snapshots: jest-serializer@27.5.1: dependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 graceful-fs: 4.2.11 jest-snapshot@27.5.1: @@ -12330,7 +12333,7 @@ snapshots: jest-util@27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 20.14.11 + '@types/node': 22.5.4 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -12339,7 +12342,7 @@ snapshots: jest-util@28.1.3: dependencies: '@jest/types': 28.1.3 - '@types/node': 20.14.11 + '@types/node': 22.5.4 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -12369,7 +12372,7 @@ snapshots: dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.14.11 + '@types/node': 22.5.4 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 @@ -12379,7 +12382,7 @@ snapshots: dependencies: '@jest/test-result': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 20.14.11 + '@types/node': 22.5.4 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.10.2 @@ -12388,19 +12391,19 @@ snapshots: jest-worker@26.6.2: dependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 merge-stream: 2.0.0 supports-color: 7.2.0 jest-worker@27.5.1: dependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@28.1.3: dependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -14711,7 +14714,7 @@ snapshots: underscore@1.12.1: {} - undici-types@5.26.5: {} + undici-types@6.19.8: {} unicode-canonical-property-names-ecmascript@2.0.0: {} @@ -14787,56 +14790,56 @@ snapshots: vary@1.1.2: {} - vite-plugin-top-level-await@1.4.1(rollup@4.18.1)(vite@4.5.3(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3)): + vite-plugin-top-level-await@1.4.1(rollup@4.18.1)(vite@4.5.3(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@4.18.1) '@swc/core': 1.6.13 uuid: 9.0.1 - vite: 4.5.3(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3) + vite: 4.5.3(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3) transitivePeerDependencies: - '@swc/helpers' - rollup - vite-tsconfig-paths@4.3.2(typescript@5.5.3)(vite@4.5.3(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3)): + vite-tsconfig-paths@4.3.2(typescript@5.5.3)(vite@4.5.3(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3)): dependencies: debug: 4.3.5(supports-color@5.5.0) globrex: 0.1.2 tsconfck: 3.1.1(typescript@5.5.3) optionalDependencies: - vite: 4.5.3(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3) + vite: 4.5.3(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3) transitivePeerDependencies: - supports-color - typescript - vite-tsconfig-paths@4.3.2(typescript@5.5.3)(vite@5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3)): + vite-tsconfig-paths@4.3.2(typescript@5.5.3)(vite@5.3.4(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3)): dependencies: debug: 4.3.5(supports-color@5.5.0) globrex: 0.1.2 tsconfck: 3.1.1(typescript@5.5.3) optionalDependencies: - vite: 5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3) + vite: 5.3.4(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3) transitivePeerDependencies: - supports-color - typescript - vite@4.5.3(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3): + vite@4.5.3(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3): dependencies: esbuild: 0.18.20 postcss: 8.4.39 rollup: 3.29.4 optionalDependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 fsevents: 2.3.3 sass: 1.77.8 terser: 5.31.3 - vite@5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.31.3): + vite@5.3.4(@types/node@22.5.4)(sass@1.77.8)(terser@5.31.3): dependencies: esbuild: 0.21.5 postcss: 8.4.39 rollup: 4.18.1 optionalDependencies: - '@types/node': 20.14.11 + '@types/node': 22.5.4 fsevents: 2.3.3 sass: 1.77.8 terser: 5.31.3 diff --git a/src/frontend/tests/package.json b/src/frontend/tests/package.json index 96a51b0f..7c895285 100644 --- a/src/frontend/tests/package.json +++ b/src/frontend/tests/package.json @@ -9,6 +9,7 @@ }, "devDependencies": { "@playwright/test": "^1.32.3", + "@types/node": "^22.5.4", "@types/ws": "^8.5.5", "@typescript-eslint/eslint-plugin": "^6.19.0", "@typescript-eslint/parser": "^6.19.0",