ci: Improve coverage reports (#27756)

This commit is contained in:
Declan Carroll 2026-03-31 06:42:44 +01:00 committed by GitHub
parent d300568ee1
commit e947000d97
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 50 additions and 14 deletions

View File

@ -62,6 +62,7 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }} token: ${{ secrets.CODECOV_TOKEN }}
flags: backend-unit flags: backend-unit
name: backend-unit name: backend-unit
files: ./packages/**/coverage/cobertura-coverage.xml,./coverage/cobertura-coverage.xml
integration-test-backend: integration-test-backend:
name: Backend Integration Tests name: Backend Integration Tests
@ -103,6 +104,7 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }} token: ${{ secrets.CODECOV_TOKEN }}
flags: backend-integration flags: backend-integration
name: backend-integration name: backend-integration
files: ./packages/**/coverage/cobertura-coverage.xml,./coverage/cobertura-coverage.xml
unit-test-nodes: unit-test-nodes:
name: Nodes Unit Tests name: Nodes Unit Tests
@ -144,6 +146,7 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }} token: ${{ secrets.CODECOV_TOKEN }}
flags: nodes-unit flags: nodes-unit
name: nodes-unit name: nodes-unit
files: ./packages/**/coverage/cobertura-coverage.xml,./coverage/cobertura-coverage.xml
unit-test-frontend: unit-test-frontend:
name: Frontend (${{ matrix.shard }}/2) name: Frontend (${{ matrix.shard }}/2)
@ -191,6 +194,7 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }} token: ${{ secrets.CODECOV_TOKEN }}
flags: frontend flags: frontend
name: frontend-shard-${{ matrix.shard }} name: frontend-shard-${{ matrix.shard }}
files: ./packages/**/coverage/cobertura-coverage.xml,./coverage/cobertura-coverage.xml
unit-test: unit-test:
name: Unit tests name: Unit tests

View File

@ -53,7 +53,9 @@ component_management:
- packages/@n8n/backend-common/** - packages/@n8n/backend-common/**
- packages/@n8n/backend-test-utils/** - packages/@n8n/backend-test-utils/**
- packages/@n8n/errors/** - packages/@n8n/errors/**
- packages/@n8n/expression-runtime/**
- packages/@n8n/db/** - packages/@n8n/db/**
- packages/@n8n/cli/**
- packages/@n8n/di/** - packages/@n8n/di/**
- packages/@n8n/imap/** - packages/@n8n/imap/**
- packages/@n8n/permissions/** - packages/@n8n/permissions/**
@ -78,6 +80,13 @@ component_management:
- type: project - type: project
target: auto target: auto
threshold: 0% # Enforce: Coverage must not decrease 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: ignore:
- (?s:.*/[^\/]*\.spec\.ts.*)\Z - (?s:.*/[^\/]*\.spec\.ts.*)\Z
@ -85,3 +94,4 @@ ignore:
- (?s:.*/[^\/]*e2e[^\/]*\.ts.*)\Z - (?s:.*/[^\/]*e2e[^\/]*\.ts.*)\Z
- (?s:.*/test_[^\/]*\.py.*)\Z - (?s:.*/test_[^\/]*\.py.*)\Z
- (?s:.*/scripts/.*)\Z - (?s:.*/scripts/.*)\Z
- (?s:.*/__tests__/.*)\Z

View File

@ -23,7 +23,8 @@
"lint": "eslint src --quiet", "lint": "eslint src --quiet",
"lint:fix": "eslint src --fix", "lint:fix": "eslint src --fix",
"watch": "tsc -p tsconfig.build.json --watch", "watch": "tsc -p tsconfig.build.json --watch",
"test": "vitest run" "test": "vitest run",
"test:unit": "vitest run"
}, },
"oclif": { "oclif": {
"bin": "n8n-cli", "bin": "n8n-cli",
@ -39,6 +40,7 @@
}, },
"devDependencies": { "devDependencies": {
"@n8n/typescript-config": "workspace:*", "@n8n/typescript-config": "workspace:*",
"@n8n/vitest-config": "workspace:*",
"@types/node": "24.10.1", "@types/node": "24.10.1",
"vitest": "catalog:" "vitest": "catalog:"
} }

View File

@ -0,0 +1,3 @@
import { createVitestConfig } from '@n8n/vitest-config/node';
export default createVitestConfig();

View File

@ -10,7 +10,8 @@
"format:check": "biome ci .", "format:check": "biome ci .",
"lint": "eslint . --quiet", "lint": "eslint . --quiet",
"lint:fix": "eslint . --fix", "lint:fix": "eslint . --fix",
"watch": "tsc -p tsconfig.build.json --watch" "watch": "tsc -p tsconfig.build.json --watch",
"test": "jest"
}, },
"main": "dist/index.js", "main": "dist/index.js",
"module": "src/index.ts", "module": "src/index.ts",

View File

@ -17,6 +17,7 @@
"build": "tsc --build tsconfig.build.esm.json tsconfig.build.cjs.json && pnpm build:runtime", "build": "tsc --build tsconfig.build.esm.json tsconfig.build.cjs.json && pnpm build:runtime",
"build:runtime": "node esbuild.config.js", "build:runtime": "node esbuild.config.js",
"test": "vitest run", "test": "vitest run",
"test:unit": "vitest run",
"test:dev": "vitest --watch --silent false", "test:dev": "vitest --watch --silent false",
"typecheck": "tsc --noEmit" "typecheck": "tsc --noEmit"
}, },
@ -42,6 +43,7 @@
}, },
"devDependencies": { "devDependencies": {
"@n8n/typescript-config": "workspace:*", "@n8n/typescript-config": "workspace:*",
"@n8n/vitest-config": "workspace:*",
"@types/lodash": "catalog:", "@types/lodash": "catalog:",
"@types/luxon": "3.2.0", "@types/luxon": "3.2.0",
"@types/md5": "^2.3.5", "@types/md5": "^2.3.5",

View File

@ -1,13 +1,7 @@
import { defineConfig } from 'vitest/config'; import { createVitestConfig } from '@n8n/vitest-config/node';
export default defineConfig({ export default createVitestConfig({
test: {
globals: true,
environment: 'node',
coverage: { coverage: {
provider: 'v8',
reporter: ['text', 'json', 'html'],
exclude: ['dist/**', 'bundle/**', '**/*.test.ts', '**/*.config.ts'], exclude: ['dist/**', 'bundle/**', '**/*.test.ts', '**/*.config.ts'],
}, },
},
}); });

View File

@ -37,7 +37,8 @@
"typecheck:backend": "tsc --noEmit --project tsconfig.backend.json", "typecheck:backend": "tsc --noEmit --project tsconfig.backend.json",
"build": "pnpm \"/^typecheck:.+/\" && pnpm clean && tsdown && pnpm create-json-schema", "build": "pnpm \"/^typecheck:.+/\" && pnpm clean && tsdown && pnpm create-json-schema",
"create-json-schema": "tsx scripts/create-json-schema.ts", "create-json-schema": "tsx scripts/create-json-schema.ts",
"preview": "vite preview" "preview": "vite preview",
"test": "jest"
}, },
"peerDependencies": { "peerDependencies": {
"vue": "catalog:frontend", "vue": "catalog:frontend",

View File

@ -5,5 +5,17 @@ export default defineConfig({
globals: true, globals: true,
disableConsoleIntercept: true, disableConsoleIntercept: true,
setupFiles: ['src/test-utils/setup.ts'], 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,
},
}
: {}),
}, },
}); });

View File

@ -19,7 +19,8 @@
"lint": "eslint src --quiet", "lint": "eslint src --quiet",
"lint:fix": "eslint src --fix", "lint:fix": "eslint src --fix",
"prepack": "echo \"Building project...\" && rm -rf dist && tsc -b", "prepack": "echo \"Building project...\" && rm -rf dist && tsc -b",
"watch": "tsc --watch" "watch": "tsc --watch",
"test": "jest"
}, },
"bin": { "bin": {
"n8n-node-dev": "./bin/n8n-node-dev" "n8n-node-dev": "./bin/n8n-node-dev"

View File

@ -903,6 +903,9 @@ importers:
'@n8n/typescript-config': '@n8n/typescript-config':
specifier: workspace:* specifier: workspace:*
version: link:../typescript-config version: link:../typescript-config
'@n8n/vitest-config':
specifier: workspace:*
version: link:../vitest-config
'@types/node': '@types/node':
specifier: ^20.17.50 specifier: ^20.17.50
version: 20.19.21 version: 20.19.21
@ -1349,6 +1352,9 @@ importers:
'@n8n/typescript-config': '@n8n/typescript-config':
specifier: workspace:* specifier: workspace:*
version: link:../typescript-config version: link:../typescript-config
'@n8n/vitest-config':
specifier: workspace:*
version: link:../vitest-config
'@types/lodash': '@types/lodash':
specifier: 'catalog:' specifier: 'catalog:'
version: 4.17.17 version: 4.17.17