A simple CLI to run Node.js and report code coverage.

node, v8, check, report, code, coverage, esm, mjs, featured, npm
npm install coverage-node@1.1.0



npm version CI status

A simple CLI to run Node.js and report code coverage.


To install from npm run:

npm install coverage-node --save-dev

In a package.json script, replace the node command with coverage-node:

   "scripts": {
-    "test": "node test.js"
+    "test": "coverage-node test.js"


Ignored files

Code coverage analysis ignores:

  • node_modules directory files, e.g. node_modules/foo/index.js.
  • test directory files, e.g. test/index.js.
  • Files with .test prefixed before the extension, e.g. foo.test.js.
  • Files named test (regardless of extension), e.g. test.js.

Ignored lines

In source code, a comment (case insensitive) can be used to ignore code coverage ranges that start on the the next line:

// coverage ignore next line
if (false) console.log('Never runs.')


The coverage-node command substitutes the normal node command; any node CLI options can be used to run a test script.

If the script doesn’t error a code coverage analysis is reported to the console, and if coverage is incomplete the exit code is 1.

npx can be used to quickly check code coverage for a script:

npx coverage-node test.js


Table of contents

function analyseCoverage

Analyzes Node.js generated V8 JavaScript code coverage data in a directory; useful for reporting.

Parameter Type Description
coverageDirPath string Code coverage data directory path.

Returns: Promise<CoverageAnalysis> — Resolves the coverage analysis.


How to import.

const { analyseCoverage } = require('coverage-node')

function reportCoverage

Reports a code coverage analysis to the console.

Parameter Type Description
coverageAnalysis CoverageAnalysis Coverage analysis from analyseCoverage.


How to import.

const { reportCoverage } = require('coverage-node')

constant coverageSupported

Is the process Node.js version greater at least the minimum required to support code coverage.

Type: boolean


How to import.

const { coverageSupported } = require('coverage-node')

constant coverageSupportedMinNodeVersion

Minimum Node.js version supported for code coverage. Although Node.js v10+ supports coverage, only v13.3+ produces coverage data reliable enough to use.

Type: SemanticVersion


How to import.

const { coverageSupportedMinNodeVersion } = require('coverage-node')

type CoverageAnalysis

Node.js generated V8 JavaScript code coverage data analysis; useful for reporting.

Type: object

Property Type Description
filesCount number Number of files analyzed.
covered Array<string> Covered file absolute paths.
ignored Array<SourceCodeRanges> Ignored source code ranges.
uncovered Array<SourceCodeRanges> Uncovered source code ranges.

type SemanticVersion

A semantic version.

Type: object

Property Type Description
major number Major version.
minor number Minor version.
patch number Patch version.
prerelease string? Prerelease version.
build string? Build metadata.

type SourceCodeLocation

Source code location.

Type: object

Property Type Description
offset number Character offset.
line number Line number.
column column Column number.

type SourceCodeRange

Source code range details.

Type: object

Property Type Description
ignore boolean? Should it be ignored.
start SourceCodeLocation Start location.
end SourceCodeLocation End location.

type SourceCodeRanges

A source code file with ranges of interest.

Type: object

Property Type Description
path string File absolute path.
ranges Array<SourceCodeRange> Ranges of interest.