Coverage in library `unit-test` includes dependent library files and does not reduce runtime when using coverage.include

Open
#33,484 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
angular, typescript

Research direction

Start by reproducing the issue with ng test lib-a --coverage using two dependent Angular workspace libraries and the @angular/build:unit-test builder. Compare coverage output and execution time with and without coverage.include; done means dependent library files are excluded and restricting coverage also reduces runtime.

Written by the indexing model from the issue text.

Description

angular/build:unit-test area: @angular/build
Command

test

Is this a regression?
  • Yes, this behavior used to work in the previous version
The previous version in which this bug was not present was

No response

Description

When running unit tests for a library with @angular/build:unit-test, the coverage report includes files from other workspace libraries that the tested library depends on, which is unexpected.

Although this can be restricted with coverage.include, coverage execution time remains unchanged.

Minimal Reproduction
  1. Create two Angular libraries in the workspace (e.g. lib-a and lib-b)
  2. Make lib-a depend on lib-b
  3. Add a unit test in lib-a
  4. Run tests with coverage enabled:
ng test lib-a --coverage
Observed behavior
  • The coverage report contains files from lib-b, even though only lib-a is being tested.
  • Restricting coverage.include changes the generated report but does not noticeably reduce execution time.
Performance

Times below are for a single library test run inside a larger Angular monorepo where the tested library depends on ~7 other libraries from the same workspace.
Execution times vary depending on configuration (development vs production) used to build each of the libraries.

Without coverage:

Duration 24.94s
(transform 62.28s, setup 6.91s, import 98.85s, tests 982ms, environment 13.89s)

With coverage (production build):

Duration 154.60s
(transform 78.24s, setup 13.24s, import 135.76s, tests 1.58s, environment 19.90s)

With coverage (development build)

Duration 201.20s
(transform 57.83s, setup 10.09s, import 99.85s, tests 1.25s, environment 15.00s)
Your Environment
_                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/
    

Angular CLI       : 22.0.4
Angular           : 22.0.4
Node.js           : 24.16.0
Package Manager   : npm 11.13.0
Operating System  : linux x64

┌───────────────────────────────────┬───────────────────┬───────────────────┐
│ Package                           │ Installed Version │ Requested Version │
├───────────────────────────────────┼───────────────────┼───────────────────┤
│ @angular/animations               │ 22.0.4            │ ^22.0.4           │
│ @angular/build                    │ 22.0.4            │ ^22.0.4           │
│ @angular/cli                      │ 22.0.4            │ ^22.0.4           │
│ @angular/common                   │ 22.0.4            │ ^22.0.4           │
│ @angular/compiler                 │ 22.0.4            │ ^22.0.4           │
│ @angular/compiler-cli             │ 22.0.4            │ ^22.0.4           │
│ @angular/core                     │ 22.0.4            │ ^22.0.4           │
│ @angular/forms                    │ 22.0.4            │ ^22.0.4           │
│ @angular/localize                 │ 22.0.4            │ ^22.0.4           │
│ @angular/platform-browser         │ 22.0.4            │ ^22.0.4           │
│ @angular/platform-browser-dynamic │ 22.0.4            │ ^22.0.4           │
│ @angular/router                   │ 22.0.4            │ ^22.0.4           │
│ @angular/service-worker           │ 22.0.4            │ ^22.0.4           │
│ ng-packagr                        │ 22.0.0            │ ^22.0.0           │
│ rxjs                              │ 7.8.2             │ ~7.8.2            │
│ typescript                        │ 6.0.3             │ ^6.0.3            │
│ vitest                            │ 4.1.9             │ ^4.1.9            │
│ zone.js                           │ 0.16.2            │ ~0.16.2           │
└───────────────────────────────────┴───────────────────┴───────────────────┘
Anything else relevant?

No response

Dominant language
TypeScript
Stars
27k
Forks
11.8k
Avg merge
16h 35m
Merged PRs (30d)
176

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from angular/angular-cli

All issues in angular/angular-cli

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.