diff --git a/packages/vitest/src/integrations/coverage.ts b/packages/vitest/src/integrations/coverage.ts index 0bc8e512eaea..d01ca4ee4c6a 100644 --- a/packages/vitest/src/integrations/coverage.ts +++ b/packages/vitest/src/integrations/coverage.ts @@ -32,13 +32,17 @@ export async function cleanCoverage(options: ResolvedC8Options, clean = true) { const require = createRequire(import.meta.url) -export async function reportCoverage(ctx: Vitest) { - // Flush coverage to disk +// Flush coverage to disk +export function takeCoverage() { const v8 = require('v8') if (v8.takeCoverage == null) console.warn('[Vitest] takeCoverage is not available in this NodeJs version.\nCoverage could be incomplete. Update to NodeJs 14.18.') else v8.takeCoverage() +} + +export async function reportCoverage(ctx: Vitest) { + takeCoverage() // eslint-disable-next-line @typescript-eslint/no-var-requires const createReport = require('c8/lib/report') diff --git a/packages/vitest/src/runtime/run.ts b/packages/vitest/src/runtime/run.ts index c87a216d932e..195c10e54e8e 100644 --- a/packages/vitest/src/runtime/run.ts +++ b/packages/vitest/src/runtime/run.ts @@ -4,6 +4,7 @@ import { vi } from '../integrations/vi' import { getSnapshotClient } from '../integrations/snapshot/chai' import { getFullName, hasFailed, hasTests, partitionSuiteChildren } from '../utils' import { getState, setState } from '../integrations/chai/jest-expect' +import { takeCoverage } from '../integrations/coverage' import { getFn, getHooks } from './map' import { rpc } from './rpc' import { collectTests } from './collect' @@ -207,6 +208,8 @@ export async function startTests(paths: string[], config: ResolvedConfig) { await runSuites(files) + takeCoverage() + await getSnapshotClient().saveSnap() await sendTasksUpdate()