diff --git a/.github/workflows/test-unit-reusable.yml b/.github/workflows/test-unit-reusable.yml index ed740bd28a5..d34e817b183 100644 --- a/.github/workflows/test-unit-reusable.yml +++ b/.github/workflows/test-unit-reusable.yml @@ -62,6 +62,7 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} flags: backend-unit name: backend-unit + files: ./packages/**/coverage/cobertura-coverage.xml,./coverage/cobertura-coverage.xml integration-test-backend: name: Backend Integration Tests @@ -103,6 +104,7 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} flags: backend-integration name: backend-integration + files: ./packages/**/coverage/cobertura-coverage.xml,./coverage/cobertura-coverage.xml unit-test-nodes: name: Nodes Unit Tests @@ -144,6 +146,7 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} flags: nodes-unit name: nodes-unit + files: ./packages/**/coverage/cobertura-coverage.xml,./coverage/cobertura-coverage.xml unit-test-frontend: name: Frontend (${{ matrix.shard }}/2) @@ -191,6 +194,7 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} flags: frontend name: frontend-shard-${{ matrix.shard }} + files: ./packages/**/coverage/cobertura-coverage.xml,./coverage/cobertura-coverage.xml unit-test: name: Unit tests diff --git a/codecov.yml b/codecov.yml index e05e7176116..59e1c116fbe 100644 --- a/codecov.yml +++ b/codecov.yml @@ -53,7 +53,9 @@ component_management: - packages/@n8n/backend-common/** - packages/@n8n/backend-test-utils/** - packages/@n8n/errors/** + - packages/@n8n/expression-runtime/** - packages/@n8n/db/** + - packages/@n8n/cli/** - packages/@n8n/di/** - packages/@n8n/imap/** - packages/@n8n/permissions/** @@ -78,6 +80,13 @@ component_management: - type: project target: auto threshold: 0% # Enforce: Coverage must not decrease + - component_id: utils_packages + name: Utils + paths: + - packages/@n8n/eslint-config/** + - packages/@n8n/eslint-plugin-community-nodes/** + - packages/@n8n/node-cli/** + - packages/@n8n/utils/** ignore: - (?s:.*/[^\/]*\.spec\.ts.*)\Z @@ -85,3 +94,4 @@ ignore: - (?s:.*/[^\/]*e2e[^\/]*\.ts.*)\Z - (?s:.*/test_[^\/]*\.py.*)\Z - (?s:.*/scripts/.*)\Z + - (?s:.*/__tests__/.*)\Z diff --git a/packages/@n8n/cli/package.json b/packages/@n8n/cli/package.json index 7ea06755d46..82897b2a884 100644 --- a/packages/@n8n/cli/package.json +++ b/packages/@n8n/cli/package.json @@ -23,7 +23,8 @@ "lint": "eslint src --quiet", "lint:fix": "eslint src --fix", "watch": "tsc -p tsconfig.build.json --watch", - "test": "vitest run" + "test": "vitest run", + "test:unit": "vitest run" }, "oclif": { "bin": "n8n-cli", @@ -39,6 +40,7 @@ }, "devDependencies": { "@n8n/typescript-config": "workspace:*", + "@n8n/vitest-config": "workspace:*", "@types/node": "24.10.1", "vitest": "catalog:" } diff --git a/packages/@n8n/cli/vitest.config.ts b/packages/@n8n/cli/vitest.config.ts new file mode 100644 index 00000000000..f8e3113a59e --- /dev/null +++ b/packages/@n8n/cli/vitest.config.ts @@ -0,0 +1,3 @@ +import { createVitestConfig } from '@n8n/vitest-config/node'; + +export default createVitestConfig(); diff --git a/packages/@n8n/constants/package.json b/packages/@n8n/constants/package.json index ba6b6c66696..feae707df59 100644 --- a/packages/@n8n/constants/package.json +++ b/packages/@n8n/constants/package.json @@ -10,7 +10,8 @@ "format:check": "biome ci .", "lint": "eslint . --quiet", "lint:fix": "eslint . --fix", - "watch": "tsc -p tsconfig.build.json --watch" + "watch": "tsc -p tsconfig.build.json --watch", + "test": "jest" }, "main": "dist/index.js", "module": "src/index.ts", diff --git a/packages/@n8n/expression-runtime/package.json b/packages/@n8n/expression-runtime/package.json index 795c5292e0c..4c602261044 100644 --- a/packages/@n8n/expression-runtime/package.json +++ b/packages/@n8n/expression-runtime/package.json @@ -17,6 +17,7 @@ "build": "tsc --build tsconfig.build.esm.json tsconfig.build.cjs.json && pnpm build:runtime", "build:runtime": "node esbuild.config.js", "test": "vitest run", + "test:unit": "vitest run", "test:dev": "vitest --watch --silent false", "typecheck": "tsc --noEmit" }, @@ -42,6 +43,7 @@ }, "devDependencies": { "@n8n/typescript-config": "workspace:*", + "@n8n/vitest-config": "workspace:*", "@types/lodash": "catalog:", "@types/luxon": "3.2.0", "@types/md5": "^2.3.5", diff --git a/packages/@n8n/expression-runtime/vitest.config.ts b/packages/@n8n/expression-runtime/vitest.config.ts index cecc0f442d4..f184e953d1a 100644 --- a/packages/@n8n/expression-runtime/vitest.config.ts +++ b/packages/@n8n/expression-runtime/vitest.config.ts @@ -1,13 +1,7 @@ -import { defineConfig } from 'vitest/config'; +import { createVitestConfig } from '@n8n/vitest-config/node'; -export default defineConfig({ - test: { - globals: true, - environment: 'node', - coverage: { - provider: 'v8', - reporter: ['text', 'json', 'html'], - exclude: ['dist/**', 'bundle/**', '**/*.test.ts', '**/*.config.ts'], - }, +export default createVitestConfig({ + coverage: { + exclude: ['dist/**', 'bundle/**', '**/*.test.ts', '**/*.config.ts'], }, }); diff --git a/packages/@n8n/extension-sdk/package.json b/packages/@n8n/extension-sdk/package.json index ab3db8d7fcb..b0185d8fa48 100644 --- a/packages/@n8n/extension-sdk/package.json +++ b/packages/@n8n/extension-sdk/package.json @@ -37,7 +37,8 @@ "typecheck:backend": "tsc --noEmit --project tsconfig.backend.json", "build": "pnpm \"/^typecheck:.+/\" && pnpm clean && tsdown && pnpm create-json-schema", "create-json-schema": "tsx scripts/create-json-schema.ts", - "preview": "vite preview" + "preview": "vite preview", + "test": "jest" }, "peerDependencies": { "vue": "catalog:frontend", diff --git a/packages/@n8n/node-cli/vite.config.ts b/packages/@n8n/node-cli/vite.config.ts index fe333e599cb..a99f7251d2f 100644 --- a/packages/@n8n/node-cli/vite.config.ts +++ b/packages/@n8n/node-cli/vite.config.ts @@ -5,5 +5,17 @@ export default defineConfig({ globals: true, disableConsoleIntercept: true, setupFiles: ['src/test-utils/setup.ts'], + reporters: process.env.CI === 'true' ? ['default', 'junit'] : ['default'], + outputFile: { junit: './junit.xml' }, + ...(process.env.COVERAGE_ENABLED === 'true' + ? { + coverage: { + enabled: true, + provider: 'v8', + reporter: process.env.CI === 'true' ? ['cobertura'] : ['text-summary'], + all: true, + }, + } + : {}), }, }); diff --git a/packages/node-dev/package.json b/packages/node-dev/package.json index 96f69b121b3..9ccff99881f 100644 --- a/packages/node-dev/package.json +++ b/packages/node-dev/package.json @@ -19,7 +19,8 @@ "lint": "eslint src --quiet", "lint:fix": "eslint src --fix", "prepack": "echo \"Building project...\" && rm -rf dist && tsc -b", - "watch": "tsc --watch" + "watch": "tsc --watch", + "test": "jest" }, "bin": { "n8n-node-dev": "./bin/n8n-node-dev" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c4de769b1b2..d4a7675f515 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -903,6 +903,9 @@ importers: '@n8n/typescript-config': specifier: workspace:* version: link:../typescript-config + '@n8n/vitest-config': + specifier: workspace:* + version: link:../vitest-config '@types/node': specifier: ^20.17.50 version: 20.19.21 @@ -1349,6 +1352,9 @@ importers: '@n8n/typescript-config': specifier: workspace:* version: link:../typescript-config + '@n8n/vitest-config': + specifier: workspace:* + version: link:../vitest-config '@types/lodash': specifier: 'catalog:' version: 4.17.17