A CLI tool to compare code coverage between two lcov.info reports and generate readable diffs across:
- Statements
- Branches
- Functions
- Lines
Supports multiple output formats and thresholds, ideal for CI and review workflows.
npx lcov-comparer <coverage-old.info> <coverage-new.info> [options]| Flag | Description | Default |
|---|---|---|
--formats |
Comma-separated list of formats: html, json, csv, md, console |
html |
--out-dir |
Directory to output report files | Current directory |
--threshold <n> |
Only include files where any metric delta ≥ n% |
null (disabled) |
--max-coverage-drop <n> |
Exit with code 1 if any average delta is below -n% | null (disabled) |
--summary |
Print total coverage delta summary to stdout | false |
Works with lcov.info files produced by:
vitest --coveragejest --coveragenyc
Output is saved into the specified --out-dir (or current folder by default), one file per format.
For example:
npx lcov-comparer a.info b.info --formats html,json,md --out-dir ./coverage-diffWill generate:
./coverage-diff/
├── coverage-diff.html
├── coverage-diff.json
└── coverage-diff.md
Files are sorted by the most significant delta across all metrics.
| File | Statements | Δ | Branches | Δ | Functions | Δ | Lines | Δ |
|---|---|---|---|---|---|---|---|---|
| src/app.ts | 70.0% → 90.0% | +20.0% | 40.0% → 80.0% | +40.0% | 50.0% → 100.0% | +50.0% | 70.0% → 90.0% | +20.0% |
| helpers.ts | 90.0% → 70.0% | −20.0% | 100.0% → 50.0% | −50.0% | 100.0% → 100.0% | +0.0% | 95.0% → 70.0% | −25.0% |
Use --summary for console output, and --max-coverage-drop to break pipeline if coverage drops too much.
npx lcov-comparer old.info new.info --summary --max-coverage-drop 5