From 28e077cd70cf685bde93587aa3244ac3ae570870 Mon Sep 17 00:00:00 2001 From: AriPerkkio Date: Sat, 24 Feb 2024 14:46:20 +0200 Subject: [PATCH] fix(workspace): throw error when browser mode and `@vitest/coverage-v8` are used --- packages/vitest/src/node/core.ts | 4 ++++ .../workspace/browser/workspace-with-browser.ts | 13 +++++++++++++ test/config/test/failures.test.ts | 6 ++++++ 3 files changed, 23 insertions(+) create mode 100644 test/config/fixtures/workspace/browser/workspace-with-browser.ts diff --git a/packages/vitest/src/node/core.ts b/packages/vitest/src/node/core.ts index aa2bdfb458f9..e09cd5a2100e 100644 --- a/packages/vitest/src/node/core.ts +++ b/packages/vitest/src/node/core.ts @@ -336,6 +336,10 @@ export class Vitest { names.add(name) } + const isAnyProjectBrowser = resolvedProjects.some(project => project.config.browser.enabled) + if (isAnyProjectBrowser && this.config.coverage.enabled && this.config.coverage.provider === 'v8') + throw new Error('@vitest/coverage-v8 does not work with --browser. Use @vitest/coverage-istanbul instead') + return resolvedProjects } diff --git a/test/config/fixtures/workspace/browser/workspace-with-browser.ts b/test/config/fixtures/workspace/browser/workspace-with-browser.ts new file mode 100644 index 000000000000..993a69926b3f --- /dev/null +++ b/test/config/fixtures/workspace/browser/workspace-with-browser.ts @@ -0,0 +1,13 @@ +import { defineWorkspace } from "vitest/config"; + +export default defineWorkspace([ + { + test: { + name: "Browser project", + browser: { + enabled: true, + name: 'chrome' + }, + } + } +]) \ No newline at end of file diff --git a/test/config/test/failures.test.ts b/test/config/test/failures.test.ts index e9c4d8300af6..0007f55aac3f 100644 --- a/test/config/test/failures.test.ts +++ b/test/config/test/failures.test.ts @@ -61,6 +61,12 @@ test('v8 coverage provider cannot be used with browser', async () => { expect(stderr).toMatch('Error: @vitest/coverage-v8 does not work with --browser. Use @vitest/coverage-istanbul instead') }) +test('v8 coverage provider cannot be used with browser in workspace', async () => { + const { stderr } = await runVitest({ coverage: { enabled: true }, workspace: './fixtures/workspace/browser/workspace-with-browser.ts' }) + + expect(stderr).toMatch('Error: @vitest/coverage-v8 does not work with --browser. Use @vitest/coverage-istanbul instead') +}) + test('version number is printed when coverage provider fails to load', async () => { const { stderr, stdout } = await runVitest({ coverage: {