diff --git a/packages/nyc-test-coverage/README.md b/packages/nyc-test-coverage/README.md index 923be414f..07a8dab83 100644 --- a/packages/nyc-test-coverage/README.md +++ b/packages/nyc-test-coverage/README.md @@ -87,4 +87,9 @@ worker = await Worker.create(workflowCoverage.augmentWorkerOptions({ afterAll(() => { workflowCoverage.mergeIntoGlobalCoverage(); }); -``` \ No newline at end of file +``` + +## Usage with vitest + +This package works with [vitest](https://vitest.dev/) code coverage. Make sure you have configured vitest to use the +`instanbul` provider https://vitest.dev/guide/coverage.html#coverage-providers. diff --git a/packages/nyc-test-coverage/src/globalCoverage.ts b/packages/nyc-test-coverage/src/globalCoverage.ts index 057b914f7..ccdbd2407 100644 --- a/packages/nyc-test-coverage/src/globalCoverage.ts +++ b/packages/nyc-test-coverage/src/globalCoverage.ts @@ -3,6 +3,8 @@ import { CoverageMapData } from 'istanbul-lib-coverage'; declare global { // eslint-disable-next-line no-var var __coverage__: CoverageMapData; + // eslint-disable-next-line no-var + var __VITEST_COVERAGE__: CoverageMapData; } export {}; diff --git a/packages/nyc-test-coverage/src/index.ts b/packages/nyc-test-coverage/src/index.ts index b4e5b4d9e..1cbce975b 100644 --- a/packages/nyc-test-coverage/src/index.ts +++ b/packages/nyc-test-coverage/src/index.ts @@ -12,7 +12,7 @@ export class WorkflowCoverage { // Check if running through nyc or some other Istanbul-based tool. // If not, any `workflowCoverage()` tools are a no-op. private hasCoverageGlobal() { - return '__coverage__' in global; + return coverage() !== undefined; } /** @@ -205,3 +205,7 @@ export class WorkflowCoverage { global.__coverage__ = coverageMap.data; } } + +function coverage() { + return global.__coverage__ ?? global.__VITEST_COVERAGE__; +}