From 626f76e5725958d233541c4cfe1dede4f9333984 Mon Sep 17 00:00:00 2001 From: Christian Svensson Date: Tue, 10 Feb 2026 17:17:30 +0100 Subject: [PATCH] feat(@angular/build): run vitest browser with playwright with OS theme --- .../runners/vitest/browser-provider.ts | 11 +++++++++++ .../runners/vitest/browser-provider_spec.ts | 19 ++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts index 08dd28100d0e..f89848abfbf6 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider.ts @@ -99,6 +99,17 @@ export async function setupBrowserConfiguration( launchOptions: { executablePath: process.env.CHROME_BIN, }, + contextOptions: { + // Enables `prefer-color-scheme` for Vitest browser instead of `light` + colorScheme: null, + }, + }); + } else if (providerName === 'playwright') { + provider = providerFactory({ + contextOptions: { + // Enables `prefer-color-scheme` for Vitest browser instead of `light` + colorScheme: null, + }, }); } else { provider = providerFactory(); diff --git a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider_spec.ts b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider_spec.ts index 6f31fc1e7227..ae6e9832a7e1 100644 --- a/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider_spec.ts +++ b/packages/angular/build/src/builders/unit-test/runners/vitest/browser-provider_spec.ts @@ -28,7 +28,7 @@ describe('setupBrowserConfiguration', () => { ); await writeFile( join(playwrightPkgPath, 'index.js'), - 'module.exports = { playwright: () => ({ name: "playwright" }) };', + 'module.exports = { playwright: (options) => ({ name: "playwright", options }) };', ); }); @@ -135,6 +135,23 @@ describe('setupBrowserConfiguration', () => { } }); + // See: https://github.com/angular/angular-cli/issues/32469 + it('should pass colorScheme=null to Playwright provider', async () => { + const { browser } = await setupBrowserConfiguration( + ['ChromeHeadless'], + undefined, + false, + workspaceRoot, + undefined, + ); + + expect(browser?.provider?.options).toEqual(jasmine.objectContaining({ + contextOptions: jasmine.objectContaining({ + colorScheme: null, + }), + })); + }); + it('should support Preview provider forcing headless false', async () => { // Create mock preview package const previewPkgPath = join(workspaceRoot, 'node_modules/@vitest/browser-preview');