☔️ @pokujs/c8 is a Poku plugin for V8 code coverage using c8.
npm i -D @pokujs/c8// poku.config.js
import { coverage } from '@pokujs/c8';
import { defineConfig } from 'poku';
export default defineConfig({
plugins: [coverage()],
});That's it! Run poku and a coverage summary will be printed after your test results.
Important
This plugin relies on Node.js' built-in NODE_V8_COVERAGE environment variable to collect coverage data. Bun and Deno do not support this mechanism, so coverage data will not be collected when running tests with these runtimes.
coverage({
// Reporters
reporter: ['text', 'lcov'], // default: ['text']
// File selection
include: ['src/**'], // default: [] (all files)
exclude: ['**/*.test.ts'], // default: c8 defaults
extension: ['.ts', '.js'], // default: c8 defaults
// Thresholds
checkCoverage: true, // default: false
lines: 80, // default: 0
branches: 80, // default: 0
functions: 80, // default: 0
statements: 80, // default: 0
perFile: false, // default: false
// Include untested files
all: true, // default: false
src: ['src'], // default: [cwd]
// Experimental
experimental: ['monocart'], // default: []
// Output
reportsDirectory: './coverage', // default: './coverage'
skipFull: false, // default: false
// Advanced
watermarks: { lines: [80, 95], branches: [80, 95] }, // default: c8 defaults
excludeAfterRemap: false, // default: false
mergeAsync: false, // default: false
clean: true, // default: true
});coverage({
include: ['src/**'],
});coverage({
include: ['src/**'],
reporter: ['text', 'html', 'lcov'],
});Set a single threshold for all metrics at once by passing a number:
coverage({
include: ['src/**'],
checkCoverage: 100,
});Or use true to set individual thresholds for each metric:
coverage({
include: ['src/**'],
checkCoverage: true,
lines: 95,
branches: 90,
functions: 85,
statements: 95,
});coverage({
include: ['src/**'],
extension: ['.ts'],
all: true,
});npm i -D monocart-coverage-reportscoverage({
include: ['src/**'],
reporter: ['v8', 'console-details', 'codecov'],
experimental: ['monocart'],
});setupcreates a temp directory and setsNODE_V8_COVERAGE— every test process spawned by Poku automatically writes V8 coverage datateardownuses c8 to generate reports from the collected data, optionally checks thresholds, then cleans up- No modification to test commands or runner configuration needed
MIT © wellwelwel and contributors.