GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — test_runner: tracking issue for code coverage stabilization · Issue #63506 · nodejs/node

test_runner: tracking issue for code coverage stabilization #63506

New issue
Copy link
New issue
Copy link
Open
#63507
Open
test_runner: tracking issue for code coverage stabilization#63506
#63507
Copy link
Labels
test_runnerIssues and PRs related to the test runner subsystem.Issues and PRs related to the test runner subsystem.

Description

@mcollina
mcollina
opened on May 23, 2026
Issue body actions

This issue tracks the remaining work to move node:test code coverage out of experimental.

The previous tracker, #53924 (previous stabilization tracker), was closed after narrowing the formal remaining item to replacing or aliasing --experimental-test-coverage with --test-coverage. There are still open issues and PRs that look relevant to stabilization, so it would be useful to have an umbrella issue again.

Scope

This is about test runner coverage enabled with:

node --test --experimental-test-coverage

This is not intended to track every NODE_V8_COVERAGE issue, only the ones that materially affect confidence in node:test coverage.

Proposed stabilization checklist

Likely blockers

  • Add or alias a stable --test-coverage enable flag
    • historical context: Tracking issue: stabilization of test runner code coverage #53924 — previous stabilization tracker
  • Fix coverage correctness for isolation=none
    • issue: Test runner with isolation=none does not work with coverage #60023 — coverage with isolation=none does not work correctly
    • PR: test_runner: support coverage with isolation:'none' via run() API #63079
  • Fix major sourcemap correctness bugs
    • --experimental-test-coverage falsely reports missing coverage where TS source is import type #54753 — false missing coverage for TypeScript import type
    • Could not report code coverage for file in sourcemap #55054 — sourcemap coverage can fail for remapped files
  • Confirm CLI and run() API coverage behavior are aligned for common cases
    • related: Test runner with isolation=none does not work with coverage #60023 — isolation=none / API coverage mismatch
    • related PR: test_runner: support coverage with isolation:'none' via run() API #63079
  • Re-enable the skipped isolation coverage test in core
    • test/parallel/test-runner-coverage.js

Strong candidates to resolve before stabilization

  • Review performance of built-in coverage
    • Slow performances when running tests with --experimental-test-coverage #55103 — built-in coverage is reported as significantly slower than existing tooling
  • Finalize default include/exclude behavior
    • issue: Default behavior of --test-coverage-exclude globbing does NOT apply to "dotfiles" like .mytest.cjs (common globbing oversight) #63397 — default test exclusion does not match dotfiles
    • PR: test_runner: match dotfiles in default coverage exclude #63401
  • Make reporter behavior consistent where coverage is involved
    • test_runner: print failed coverage reports with dot runner #60884 — dot reporter does not surface coverage output/failures clearly
    • test_runner: node:coverage ignore comments exclude DA but leave BRDA in lcov output #61586 — ignored lines and lcov branch data are inconsistent
    • PR: test_runner: print coverage report with dot reporter #63443

Likely follow-up work unless parity is required first

  • Decide whether statement coverage is required before stabilization
    • issue: Support statement coverage #54530 — add statement coverage support
    • PR: test_runner: add statement coverage support #62340
  • Decide whether untouched files matched by include globs should report as 0%
    • Report 0% coverage for untested files in a project (i.e., files matching some glob) #58887 — support reporting untested matched files as 0% covered
  • Decide whether excluding empty lines should be supported
    • test_runner: Add option to exclude empty lines from coverage report #60996 — add an option to exclude empty lines from coverage

Open issues most directly related to test coverage

Correctness / stabilization

  • Test runner with isolation=none does not work with coverage #60023 — Test runner with isolation=none does not work with coverage
  • --experimental-test-coverage falsely reports missing coverage where TS source is import type #54753 — --experimental-test-coverage falsely reports missing coverage where TS source is import type
  • Could not report code coverage for file in sourcemap #55054 — Could not report code coverage for file in sourcemap
  • Slow performances when running tests with --experimental-test-coverage #55103 — Slow performances when running tests with --experimental-test-coverage

Reporting / exclusion / polish

  • test_runner: node:coverage ignore comments exclude DA but leave BRDA in lcov output #61586 — node:coverage ignore comments exclude DA but leave BRDA in lcov output
  • Default behavior of --test-coverage-exclude globbing does NOT apply to "dotfiles" like .mytest.cjs (common globbing oversight) #63397 — default --test-coverage-exclude behavior does not apply to dotfiles
  • test_runner: print failed coverage reports with dot runner #60884 — dot reporter should print coverage failures/output
  • Report 0% coverage for untested files in a project (i.e., files matching some glob) #58887 — report 0% coverage for untested files matched by include globs
  • test_runner: Add option to exclude empty lines from coverage report #60996 — add option to exclude empty lines from coverage report

Coverage model / parity

  • Support statement coverage #54530 — support statement coverage

Open PRs to watch

  • test_runner: support coverage with isolation:'none' via run() API #63079 — test_runner: support coverage with isolation:'none' via run() API
  • test_runner: match dotfiles in default coverage exclude #63401 — test_runner: match dotfiles in default coverage exclude
  • test_runner: add statement coverage support #62340 — test_runner: add statement coverage support
  • test_runner: print coverage report with dot reporter #63443 — test_runner: print coverage report with dot reporter

Lower-level issues worth watching

These are broader than node:test, but may still matter if they show up in test runner coverage behavior:

  • Coverage map issued on switch statements without scoped case clauses incorrectly report an uncovered block #53652 — incorrect uncovered block around some switch / case patterns
  • Inconsistent coverage information when loaders used #41387 — inconsistent coverage information when loaders are used
  • NODE_V8_COVERAGE inconsistent when used with workers #46378 — NODE_V8_COVERAGE behaves inconsistently with workers
  • Node not saving coverage when process is terminated using SIGINT/SIGTERM #35212 — coverage may not be saved on SIGINT/SIGTERM
  • NODE_V8_COVERAGE can run OOM when compiling a lot of scripts in one process #44364 — NODE_V8_COVERAGE can run OOM when many scripts are compiled
  • V8 coverage API next steps #35783 — V8 coverage API next steps

Proposed exit criteria

Coverage can likely move out of experimental when:

  1. --test-coverage exists as the stable entry point.
  2. isolation=none coverage correctness is fixed.
  3. The major sourcemap correctness bugs are resolved.
  4. CLI and run() API behavior match for common coverage use cases.
  5. The remaining open issues are triaged into:
    • blocker for stabilization
    • follow-up semver-minor work
    • unrelated to stabilization

Note

This issue is meant to restore a single place to track stabilization work now that #53924 is closed, not to block future semver-minor improvements after stabilization.


Disclaimer: I used AI to compile this list, then edited by hand.

Reacted by Moshe Atlow, sangwook and Chemi Atlow
Reacted by Jayden Seric

Activity

  1. mcollina commented on May 23, 2026

    @mcollina
    mcollina
    on May 23, 2026
    SponsorMemberAuthor
    More actions

    cc @nodejs/test_runner

    Reacted by Pietro Marchini
  2. trivikr
    added
    test_runnerIssues and PRs related to the test runner subsystem.Issues and PRs related to the test runner subsystem.
    on Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    test_runnerIssues and PRs related to the test runner subsystem.Issues and PRs related to the test runner subsystem.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      You are visitor 01402503 — GeezerVison does not store the pages you look up.
      Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.