From 511160911415b7c8eaddfdb3972ad879a57a9f3b Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Wed, 22 Jul 2026 11:48:56 -0400 Subject: [PATCH] fix(@angular/build): favor istanbul coverage provider when browser testing is enabled When browser testing is enabled (`browsers` option configured), using V8 coverage in Chromium requires fetching and remapping source maps over CDP/HTTP for every script loaded in the browser window, causing multi-minute delays during report generation on large projects. This change updates `determineCoverageProvider` to favor `@vitest/coverage-istanbul` when browser mode is active and `@vitest/coverage-istanbul` is installed in `node_modules`. Istanbul instruments code at build time, allowing instant coverage extraction from `window.__coverage__` without CDP sourcemap resolution overhead. Explicit `coverage.provider` settings in user configuration remain fully respected. Relates to #31724 --- .../build/src/builders/unit-test/runners/vitest/plugins.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts index a63e95b1d8b3..29455b50cc7c 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/plugins.ts @@ -102,7 +102,9 @@ function determineCoverageProvider( const hasIstanbul = checkInstalled('@vitest/coverage-istanbul'); const hasV8 = checkInstalled('@vitest/coverage-v8'); - if (hasIstanbul && !hasV8) { + // Favor istanbul when browser testing is enabled (to avoid slow CDP V8 HTTP sourcemap remapping) + // or when only istanbul is installed. + if (hasIstanbul && (browsersToCheck.length > 0 || !hasV8)) { determinedProvider = 'istanbul'; } else { determinedProvider = 'v8';