From f4376934d7490dd4daf47c39d8041cb3d812be58 Mon Sep 17 00:00:00 2001 From: Carlos Santos <4a.santos@gmail.com> Date: Mon, 27 Oct 2025 13:56:41 +0100 Subject: [PATCH] tests: reorganize Jest configuration and VSCode settings for improved testing setup --- meet-ce/{backend => }/.vscode/extensions.json | 0 meet-ce/.vscode/settings.json | 8 + meet-ce/backend/.vscode/launch.json | 62 -------- meet-ce/backend/.vscode/settings.json | 5 - meet-ce/backend/jest.config.mjs | 2 +- meet-ce/frontend/.vscode/settings.json | 8 - .../webcomponent/.vscode/settings.json | 9 +- meet-ce/frontend/webcomponent/jest.config.mjs | 5 + .../webcomponent/tests/__mocks__/styleMock.js | 1 + .../tests/unit/attributes.test.ts | 2 +- .../webcomponent/tests/unit/commands.test.ts | 2 +- .../webcomponent/tests/unit/events.test.ts | 2 +- openvidu-meet.code-workspace | 146 ++++++++++++++++-- package.json | 1 + pnpm-lock.yaml | 3 + 15 files changed, 164 insertions(+), 92 deletions(-) rename meet-ce/{backend => }/.vscode/extensions.json (100%) create mode 100644 meet-ce/.vscode/settings.json delete mode 100644 meet-ce/backend/.vscode/launch.json delete mode 100644 meet-ce/backend/.vscode/settings.json delete mode 100644 meet-ce/frontend/.vscode/settings.json diff --git a/meet-ce/backend/.vscode/extensions.json b/meet-ce/.vscode/extensions.json similarity index 100% rename from meet-ce/backend/.vscode/extensions.json rename to meet-ce/.vscode/extensions.json diff --git a/meet-ce/.vscode/settings.json b/meet-ce/.vscode/settings.json new file mode 100644 index 0000000..b8feeee --- /dev/null +++ b/meet-ce/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "jest.jestCommandLine": "node --experimental-vm-modules ../../node_modules/.bin/jest", + "jest.rootPath": "backend", + "jest.nodeEnv": { + "NODE_OPTIONS": "--experimental-vm-modules" + }, + "jest.runMode": "on-demand" +} diff --git a/meet-ce/backend/.vscode/launch.json b/meet-ce/backend/.vscode/launch.json deleted file mode 100644 index b63ca51..0000000 --- a/meet-ce/backend/.vscode/launch.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "name": "Debug Jest Test", - "type": "node", - "request": "launch", - "program": "${workspaceFolder}/node_modules/.bin/jest", - "args": [ - "--config", - "jest.config.mjs", - "--runInBand", - "--no-cache", - "${file}" - ], - "console": "integratedTerminal", - "internalConsoleOptions": "neverOpen", - "disableOptimisticBPs": true, - "windows": { - "program": "${workspaceFolder}/node_modules/.bin/jest.cmd" - }, - "runtimeArgs": [ - "--experimental-vm-modules" - ], - "env": { - "NODE_ENV": "test" - }, - "cwd": "${workspaceFolder}" - }, - { - "name": "Debug Current Jest Test", - "type": "node", - "request": "launch", - "program": "${workspaceFolder}/node_modules/.bin/jest", - "args": [ - "--config", - "jest.config.mjs", - "--runInBand", - "--testNamePattern", - "${input:testName}", - "${relativeFile}" - ], - "console": "integratedTerminal", - "internalConsoleOptions": "neverOpen", - "runtimeArgs": [ - "--experimental-vm-modules" - ], - "env": { - "NODE_ENV": "test" - }, - "cwd": "${workspaceFolder}" - } - ], - "inputs": [ - { - "id": "testName", - "description": "Test name pattern (optional)", - "default": "", - "type": "promptString" - } - ] -} \ No newline at end of file diff --git a/meet-ce/backend/.vscode/settings.json b/meet-ce/backend/.vscode/settings.json deleted file mode 100644 index 213c947..0000000 --- a/meet-ce/backend/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "jest.jestCommandLine": "node --experimental-vm-modules ./node_modules/.bin/jest --config jest.config.mjs", - "jest.rootPath": "./", - "jest.runMode": "on-demand" -} diff --git a/meet-ce/backend/jest.config.mjs b/meet-ce/backend/jest.config.mjs index 44f9d66..d53be9f 100644 --- a/meet-ce/backend/jest.config.mjs +++ b/meet-ce/backend/jest.config.mjs @@ -12,7 +12,7 @@ const jestConfig = { extensionsToTreatAsEsm: ['.ts'], moduleNameMapper: { '^@openvidu-meet/typings$': '/../typings/src/index.ts', - '^(\\.{1,2}/.*)\\.js$': '$1' // Permite importar .js que resuelven a .ts + '^(\\.{1,2}/.*)\\.js$': '$1' // Allow importing js files and resolving to ts files }, transform: { '^.+\\.tsx?$': ['ts-jest', { diff --git a/meet-ce/frontend/.vscode/settings.json b/meet-ce/frontend/.vscode/settings.json deleted file mode 100644 index ca84752..0000000 --- a/meet-ce/frontend/.vscode/settings.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "prettier.jsxSingleQuote": true, - "prettier.singleQuote": true, - "javascript.preferences.quoteStyle": "single", - "typescript.preferences.quoteStyle": "single", - "editor.insertSpaces": false, - "prettier.useTabs": true -} diff --git a/meet-ce/frontend/webcomponent/.vscode/settings.json b/meet-ce/frontend/webcomponent/.vscode/settings.json index 2a02cdc..2c2f71e 100644 --- a/meet-ce/frontend/webcomponent/.vscode/settings.json +++ b/meet-ce/frontend/webcomponent/.vscode/settings.json @@ -1,5 +1,8 @@ { - "jest.jestCommandLine": "node --experimental-vm-modules ./node_modules/.bin/jest --config jest.config.mjs", - "jest.rootPath": "./", + "jest.jestCommandLine": "node --experimental-vm-modules ../../../node_modules/.bin/jest --config jest.config.mjs", + "jest.rootPath": ".", + "jest.nodeEnv": { + "NODE_OPTIONS": "--experimental-vm-modules" + }, "jest.runMode": "on-demand" - } +} diff --git a/meet-ce/frontend/webcomponent/jest.config.mjs b/meet-ce/frontend/webcomponent/jest.config.mjs index 20e16b0..378901d 100644 --- a/meet-ce/frontend/webcomponent/jest.config.mjs +++ b/meet-ce/frontend/webcomponent/jest.config.mjs @@ -6,11 +6,16 @@ const jestConfig = { ...createDefaultEsmPreset({ tsconfig: 'tsconfig.json' }), + // Set the root directory to the webcomponent folder + rootDir: './', resolver: 'ts-jest-resolver', testEnvironment: 'jsdom', testMatch: ['**/?(*.)+(spec|test).[tj]s?(x)'], moduleFileExtensions: ['js', 'ts', 'json', 'node'], testPathIgnorePatterns: ['/node_modules/', '/dist/', '/tests/e2e/'], + transform: { + '^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.json' }] + }, globals: { 'ts-jest': { tsconfig: 'tsconfig.json' diff --git a/meet-ce/frontend/webcomponent/tests/__mocks__/styleMock.js b/meet-ce/frontend/webcomponent/tests/__mocks__/styleMock.js index b0c5090..f062ed8 100644 --- a/meet-ce/frontend/webcomponent/tests/__mocks__/styleMock.js +++ b/meet-ce/frontend/webcomponent/tests/__mocks__/styleMock.js @@ -1 +1,2 @@ +// Mock para imports de CSS en tests de Jest module.exports = '' diff --git a/meet-ce/frontend/webcomponent/tests/unit/attributes.test.ts b/meet-ce/frontend/webcomponent/tests/unit/attributes.test.ts index dc39970..48799d6 100644 --- a/meet-ce/frontend/webcomponent/tests/unit/attributes.test.ts +++ b/meet-ce/frontend/webcomponent/tests/unit/attributes.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it, jest } from '@jest/globals'; +import { afterEach, beforeEach, describe, expect, it, jest } from '@jest/globals'; import { OpenViduMeet } from '../../src/components/OpenViduMeet'; import '../../src/index'; diff --git a/meet-ce/frontend/webcomponent/tests/unit/commands.test.ts b/meet-ce/frontend/webcomponent/tests/unit/commands.test.ts index 4ebdda8..e00607f 100644 --- a/meet-ce/frontend/webcomponent/tests/unit/commands.test.ts +++ b/meet-ce/frontend/webcomponent/tests/unit/commands.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it, jest } from '@jest/globals'; +import { afterEach, beforeEach, describe, expect, it, jest } from '@jest/globals'; import { CommandsManager } from '../../src/components/CommandsManager'; import { OpenViduMeet } from '../../src/components/OpenViduMeet'; import '../../src/index'; diff --git a/meet-ce/frontend/webcomponent/tests/unit/events.test.ts b/meet-ce/frontend/webcomponent/tests/unit/events.test.ts index e26c42b..b018e65 100644 --- a/meet-ce/frontend/webcomponent/tests/unit/events.test.ts +++ b/meet-ce/frontend/webcomponent/tests/unit/events.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it, jest } from '@jest/globals'; +import { afterEach, beforeEach, describe, expect, it, jest } from '@jest/globals'; import { EventsManager } from '../../src/components/EventsManager'; import { OpenViduMeet } from '../../src/components/OpenViduMeet'; import '../../src/index'; diff --git a/openvidu-meet.code-workspace b/openvidu-meet.code-workspace index b7be1e4..ef85e14 100644 --- a/openvidu-meet.code-workspace +++ b/openvidu-meet.code-workspace @@ -42,20 +42,146 @@ "**/node_modules": true, "**/test-results": true, }, - "jest.disabledWorkspaceFolders": ["openvidu-meet", "typings", "frontend"], + "jest.disabledWorkspaceFolders": ["openvidu-meet (root)", "openvidu-components-angular", "shared-meet-components", "meet-testapp"], "mochaExplorer.files": "tests/e2e/**/*.test.ts", "mochaExplorer.require": ".mocharc.js", "files.watcherExclude": { "**/node_modules/**": true, "**/dist/**": true, }, - // "mochaExplorer.files": "./frontend/tests/e2e/**/*.test.ts", - // "mochaExplorer.mochaPath": "./frontend/node_modules/mocha", - // "mochaExplorer.require": "ts-node/register", - // "mochaExplorer.configFile": "./frontend/.mocharc.js", - // "mochaExplorer.timeout": 30000, - // "mochaExplorer.env": { - // "NODE_ENV": "test" - // } }, -} + "launch": { + "version": "0.2.0", + "configurations": [ + { + "name": "Debug Jest Test (CE Backend)", + "type": "node", + "request": "launch", + "program": "${workspaceFolder:openvidu-meet (root)}/node_modules/.bin/jest", + "args": [ + "--config", + "${workspaceFolder:openvidu-meet (CE)}/backend/jest.config.mjs", + "--runInBand", + "--no-cache", + "${file}" + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "windows": { + "program": "${workspaceFolder:openvidu-meet (root)}/node_modules/.bin/jest.cmd" + }, + "runtimeArgs": [ + "--experimental-vm-modules" + ], + "env": { + "NODE_ENV": "test" + }, + "cwd": "${workspaceFolder:openvidu-meet (CE)}/backend" + }, + { + "name": "Debug Jest Test (PRO Backend)", + "type": "node", + "request": "launch", + "program": "${workspaceFolder:openvidu-meet (root)}/node_modules/.bin/jest", + "args": [ + "--config", + "${workspaceFolder:openvidu-meet (PRO)}/backend/jest.config.mjs", + "--runInBand", + "--no-cache", + "${file}" + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "windows": { + "program": "${workspaceFolder:openvidu-meet (root)}/node_modules/.bin/jest.cmd" + }, + "runtimeArgs": [ + "--experimental-vm-modules" + ], + "env": { + "NODE_ENV": "test" + }, + "cwd": "${workspaceFolder:openvidu-meet (PRO)}/backend" + }, + { + "name": "Debug Jest Test (Webcomponent)", + "type": "node", + "request": "launch", + "program": "${workspaceFolder:openvidu-meet (root)}/node_modules/.bin/jest", + "args": [ + "--config", + "${workspaceFolder:meet-webcomponent}/jest.config.mjs", + "--runInBand", + "--no-cache", + "${file}" + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "windows": { + "program": "${workspaceFolder:openvidu-meet (root)}/node_modules/.bin/jest.cmd" + }, + "runtimeArgs": [ + "--experimental-vm-modules" + ], + "env": { + "NODE_ENV": "test" + }, + "cwd": "${workspaceFolder:meet-webcomponent}" + }, + { + "name": "Debug Current Jest Test (CE Backend)", + "type": "node", + "request": "launch", + "program": "${workspaceFolder:openvidu-meet (root)}/node_modules/.bin/jest", + "args": [ + "--config", + "${workspaceFolder:openvidu-meet (CE)}/backend/jest.config.mjs", + "--runInBand", + "--testNamePattern", + "${input:testName}", + "${file}" + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "runtimeArgs": [ + "--experimental-vm-modules" + ], + "env": { + "NODE_ENV": "test" + }, + "cwd": "${workspaceFolder:openvidu-meet (CE)}/backend" + }, + { + "name": "Debug Current Jest Test (PRO Backend)", + "type": "node", + "request": "launch", + "program": "${workspaceFolder:openvidu-meet (root)}/node_modules/.bin/jest", + "args": [ + "--config", + "${workspaceFolder:openvidu-meet (PRO)}/backend/jest.config.mjs", + "--runInBand", + "--testNamePattern", + "${input:testName}", + "${file}" + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "runtimeArgs": [ + "--experimental-vm-modules" + ], + "env": { + "NODE_ENV": "test" + }, + "cwd": "${workspaceFolder:openvidu-meet (PRO)}/backend" + } + ], + "inputs": [ + { + "id": "testName", + "description": "Test name pattern (optional, leave empty to run all tests in file)", + "default": "", + "type": "promptString" + } + ] + }, +} \ No newline at end of file diff --git a/package.json b/package.json index ea2cf0d..2fd7766 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "devDependencies": { "browser-sync": "3.0.4", "concurrently": "9.2.1", + "identity-obj-proxy": "3.0.0", "tree-kill": "1.2.2", "wait-on": "9.0.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a4975b..7031824 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: concurrently: specifier: 9.2.1 version: 9.2.1 + identity-obj-proxy: + specifier: 3.0.0 + version: 3.0.0 tree-kill: specifier: 1.2.2 version: 1.2.2