When coverage is generated in different environments (e.g., Node.js server vs. Browser client) or different test types (e.g., Jest unit tests vs. Playwright E2E tests), you may need to merge them.
Manual Merging Workflow:
- Export raw coverage data from your test runners to specific directories using the
raw report type. - Create a script using
CoverageReport from monocart-coverage-reports. - Provide
inputDir containing the paths to the raw data. - Use
sourcePath to unify file paths if the same file has different relative paths in different environments. - Use
entryFilter and sourceFilter to include/exclude specific files (e.g., node_modules).
CLI Merge Command:
mcr merge -r v8,console-details --inputDir ./coverage-reports/unit/raw,./coverage-reports/e2e/raw --outputDir ./coverage-reports/merged
const fs = require('fs');
const { CoverageReport } = require('monocart-coverage-reports');
const inputDir = [
'./coverage-reports/unit/raw',
'./coverage-reports/e2e/raw'
];
const coverageOptions = {
name: 'My Merged Coverage Report',
inputDir,
outputDir: './coverage-reports/merged',
// filter for both unit and e2e
entryFilter: {
'**/node_modules/**': false,
'**/*': true
},
sourceFilter: {
'**/node_modules/**': false,
'**/src/**': true
},
sourcePath: (filePath, info) => {
// Unify the file path for the same files
return filePath.replace("unit-dist/", "").replace("e2e-dist/", "");
},
reports: [
['v8'],
['console-details']
]
};
await new CoverageReport(coverageOptions).generate();