ci: print exact uncovered locations when the coverage gate fails
The per-file 100% thresholds name only the failing file. A custom istanbul reporter now prints one clickable path:line:col record per uncovered statement, branch path, and function, right above the threshold errors, in both the CI coverage lane and local test:coverage runs (they share this config). CJS because istanbul-reports loads custom reporters with a bare require() outside the tsx/ESM pipeline.
This commit is contained in:
+10
-1
@@ -1,10 +1,17 @@
|
||||
import { spawnSync } from 'node:child_process'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
import tsconfigPaths from 'vite-tsconfig-paths'
|
||||
import { resolvePwshPath } from './packages/bash/pwsh-local/src/resolve.ts'
|
||||
import { defineConfig } from 'vitest/config'
|
||||
import { vitestExecArgv } from './vitest.shared.ts'
|
||||
import { COVERAGE_EXEMPT_ENV, coverageExemptHeavySuites } from './scripts/coverage-exempt.ts'
|
||||
|
||||
// Prints exact `path:line:col` records for every uncovered statement, branch
|
||||
// path, and function when a file misses the per-file 100% gate — the built-in
|
||||
// threshold ERRORs name only the file. Absolute path because istanbul-reports
|
||||
// require()s custom reporters (which is also why the reporter is CJS).
|
||||
const uncoveredLocationsReporter = fileURLToPath(new URL('./scripts/coverage-uncovered-locations.cjs', import.meta.url))
|
||||
|
||||
// Resolution facade shared by every plugin instance below: tsconfig.base.json
|
||||
// has no include, which vite-tsconfig-paths treats as match-all, so its paths
|
||||
// map applies to every test file. paths must win over package exports so built
|
||||
@@ -227,7 +234,9 @@ export default defineConfig({
|
||||
functions: 100,
|
||||
lines: 100,
|
||||
},
|
||||
reporter: process.env.CI ? ['text'] : ['text', 'html'],
|
||||
reporter: process.env.CI
|
||||
? ['text', uncoveredLocationsReporter]
|
||||
: ['text', 'html', uncoveredLocationsReporter],
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user