Native V8 coverage

Two collectors. Two independent gates.

Node and Google Chrome execute the same shared entry, then the project-owned collectors and reporter derive transparent metrics directly from each runtime's V8 ranges. Neither result is inferred from the other.

Latest published metrics

Loading verified status… · latest successful main build · main

MetricRequiredNode percentNode coveredChrome percentChrome covered
Executable ranges (statements)configured gate
Block ranges (branches)configured gate
Function ranges (functions)configured gate
Executable lines (lines)configured gate
Raw totals are not cross-runtime equivalents.

Both collectors use the same project-owned range analyzer, but V8 may emit or collapse ranges differently along each execution path. Compare each runtime with its own threshold; these are native execution-range measurements, not parser-derived statement or branch counts.

Measured scope

The repository config includes only index.js for both collectors. The published percentage therefore means complete execution of the shipped Web-standard core—not complete execution of every Node-only coverage helper.

{
    "node": { "include": ["index.js"] },
    "chrome": { "include": ["index.js"] }
}
  • Included files that are never loaded count as zero coverage.
  • Node applies every configured threshold to each included file.
  • Chrome applies every configured threshold to both the aggregate total and each included file.
  • Unloaded files cannot satisfy a positive function or block gate because their internal V8 structure is unknown.
  • Assertion failure and coverage failure both produce exit status 1.
  • Harness or configuration failure produces exit status 2.

Node-only coverage tooling is verified separately by integration, invalid-input, timeout, leaked-handle, and path-safety tests. See the testing strategy for that boundary.

How each collector works

Node

Built-in V8 coverage

The CLI launches the test entry with Node's NODE_V8_COVERAGE output enabled, merges repeated script records, and applies per-file gates to the configured include scope.

Chrome

Precise coverage in real Chrome

A project-owned DevTools pipe launches installed Google Chrome Stable, starts precise V8 coverage, forwards console output, runs the shared harness, and captures a diagnostic screenshot.

The execution path stays uninstrumented.

No third-party coverage engine, browser automation framework, source rewrite, browser shim, bundle, or transpiler is inserted before either runtime executes the module.

Report artifacts

ArtifactUse
index.htmlStandalone project-owned native V8 report.
lcov.infoInterchange with editors and coverage consumers.
coverage-summary.jsonMachine-readable covered, total, and percentage values.
test-results.jsonNormalized, ANSI-free suite outcome for the selected runtime.
.vanilla-test-coverage.jsonOwnership marker used for safe atomic report replacement.
vanilla-test-chrome.pngSuccessful Chrome harness screenshot in the Chrome report.
data/status.jsonNormalized package, runtime, test, coverage, commit, and timestamp provenance for this documentation site.

CI retains downloadable coverage artifacts and publishes the successful main-build reports here. A failed current build is still visible through the repository's CI status; a previous Pages deployment should not be interpreted without its displayed commit.

Current test and report screenshots

These PNGs are regenerated by the same CI run that builds the native reports. Open any image to inspect it at full size.

Run the same gates locally

npm run coverage
# collectors can also run independently
npm run coverage:node
npm run coverage:chrome
Check the terminal.

The suite report and any collector errors appear there. Open the generated runtime directory for the coverage metrics and HTML report.