@temporalio/nyc-test-coverage
v1.11.5
Published
Temporal.io SDK code coverage integration
Downloads
66,871
Readme
@temporalio/nyc-test-coverage
Temporal's TypeScript SDK integration for Workflow code coverage with nyc and similar tools.
Getting Started
npm install -D mocha nyc @temporalio/nyc-test-coverage
- Instantiate
WorkflowCoverage
from this package, and callaugmentWorkerOptions()
to configure Workflows to gather and export code coverage data:
import { WorkflowCoverage } from '@temporalio/nyc-test-coverage';
const workflowCoverage = new WorkflowCoverage();
worker = await Worker.create(workflowCoverage.augmentWorkerOptions({
connection: nativeConnection,
taskQueue,
workflowsPath: require.resolve("./workflows"),
}));
- After your tests are done, call
mergeIntoGlobalCoverage()
to merge your Workflows' code coverage into nyc's global coverage.
after(() => {
workflowCoverage.mergeIntoGlobalCoverage();
});
Usage with bundleWorkflowCode()
If you are pre-bundling your Workflows using bundleWorkflowCode()
, we recommend using the augmentBundleOptions()
method to configure your bundle options, followed by augmentWorkerOptionsWithBundle()
to configure your Worker options as follows.
const bundle = await bundleWorkflowCode(
workflowCoverage.augmentBundleOptions({
workflowsPath: require.resolve('./workflows'),
})
);
const worker = await Worker.create(
workflowCoverage.augmentWorkerOptionsWithBundle({
connection,
taskQueue,
workflowBundle: bundle,
activities,
})
);
With bundleWorkflowCode()
, you still need to call mergeIntoGlobalCoverage()
when your tests are done to merge Workflow test coverage into nyc's global test coverage.
after(() => {
workflowCoverage.mergeIntoGlobalCoverage();
});
Usage with Jest
This package also works with Jest code coverage.
However, this package only works with the default coverageProvider
option 'babel'
.
This package does not work with coverageProvider: 'v8'
.
Complete the following steps to use this package with Jest.
npm install jest @temporalio/nyc-test-coverage
- Check your Jest config and make sure the
coverageProvider
option is not set to'v8'
. SetcoverageProvider
to'babel'
. - Instantiate
WorkflowCoverage
from this package, and callaugmentWorkerOptions()
to configure Workflows to gather and export code coverage data:
import { WorkflowCoverage } from '@temporalio/nyc-test-coverage';
const workflowCoverage = new WorkflowCoverage();
worker = await Worker.create(workflowCoverage.augmentWorkerOptions({
connection: nativeConnection,
taskQueue,
workflowsPath: require.resolve("./workflows"),
}));
- After your tests are done, call
mergeIntoGlobalCoverage()
to merge your Workflows' code coverage into Jest's global coverage.
afterAll(() => {
workflowCoverage.mergeIntoGlobalCoverage();
});