nodejs / nodejs/node

test_runner: tracking issue for code coverage stabilization

未关闭
#63,506 1 条评论 4 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

test_runner
主要语言
JavaScript
星标
122k
派生
37.4k
平均合并
4 天 3 小时
30 天内合并 PR
272

描述

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: #53924 — previous stabilization tracker
  • Fix coverage correctness for isolation=none
    • issue: #60023 — coverage with isolation=none does not work correctly
    • PR: #63079
  • Fix major sourcemap correctness bugs
    • #54753 — false missing coverage for TypeScript import type
    • #55054 — sourcemap coverage can fail for remapped files
  • Confirm CLI and run() API coverage behavior are aligned for common cases
    • related: #60023 — isolation=none / API coverage mismatch
    • related PR: #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
    • #55103 — built-in coverage is reported as significantly slower than existing tooling
  • Finalize default include/exclude behavior
    • issue: #63397 — default test exclusion does not match dotfiles
    • PR: #63401
  • Make reporter behavior consistent where coverage is involved
    • #60884 — dot reporter does not surface coverage output/failures clearly
    • #61586 — ignored lines and lcov branch data are inconsistent
    • PR: #63443
Likely follow-up work unless parity is required first
  • Decide whether statement coverage is required before stabilization
    • issue: #54530 — add statement coverage support
    • PR: #62340
  • Decide whether untouched files matched by include globs should report as 0%
    • #58887 — support reporting untested matched files as 0% covered
  • Decide whether excluding empty lines should be supported
    • #60996 — add an option to exclude empty lines from coverage
Open issues most directly related to test coverage
Correctness / stabilization
  • #60023 — Test runner with isolation=none does not work with coverage
  • #54753 — --experimental-test-coverage falsely reports missing coverage where TS source is import type
  • #55054 — Could not report code coverage for file in sourcemap
  • #55103 — Slow performances when running tests with --experimental-test-coverage
Reporting / exclusion / polish
  • #61586 — node:coverage ignore comments exclude DA but leave BRDA in lcov output
  • #63397 — default --test-coverage-exclude behavior does not apply to dotfiles
  • #60884 — dot reporter should print coverage failures/output
  • #58887 — report 0% coverage for untested files matched by include globs
  • #60996 — add option to exclude empty lines from coverage report
Coverage model / parity
  • #54530 — support statement coverage
Open PRs to watch
  • #63079 — test_runner: support coverage with isolation:'none' via run() API
  • #63401 — test_runner: match dotfiles in default coverage exclude
  • #62340 — test_runner: add statement coverage support
  • #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:

  • #53652 — incorrect uncovered block around some switch / case patterns
  • #41387 — inconsistent coverage information when loaders are used
  • #46378 — NODE_V8_COVERAGE behaves inconsistently with workers
  • #35212 — coverage may not be saved on SIGINT/SIGTERM
  • #44364 — NODE_V8_COVERAGE can run OOM when many scripts are compiled
  • #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.

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

从提议的稳定化检查清单开始,并运行覆盖率命令 node --test --experimental-test-coverage。剩余核心测试工作的指定入口点是 test/parallel/test-runner-coverage.js;完成工作取决于对列出的问题进行分类处理并满足多部分退出标准,而不是进行一次孤立的更改。

由索引模型根据 Issue 内容生成。

评估

技术栈
javascript, nodejs
领域
cli, testing-qa
Issue 类型
功能
难度
5/5
预计耗时
一周以上
活跃度
冷清
描述清晰度
需要澄清
新手友好度
25/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。