Fix Playwright coverage collection and merge

This commit is contained in:
beatz174-bit
2025-12-02 16:40:09 +10:00
parent 6192bd20eb
commit 35e6ecca0f
8 changed files with 86 additions and 89 deletions
+34 -25
View File
@@ -6,30 +6,39 @@ const libSourceMaps = require('istanbul-lib-source-maps');
const libReport = require('istanbul-lib-report');
const reports = require('istanbul-reports');
const out = libCoverage.createCoverageMap({});
const dir = path.join(process.cwd(), '.nyc_output');
if (!fs.existsSync(dir)) {
console.error('.nyc_output not found');
process.exit(2);
}
const files = fs.readdirSync(dir).filter(f => f.endsWith('.json'));
for (const f of files) {
const data = JSON.parse(fs.readFileSync(path.join(dir, f), 'utf8'));
out.merge(data);
async function main() {
const out = libCoverage.createCoverageMap({});
const dir = path.join(process.cwd(), 'coverage-reports', 'e2e', '.nyc_output');
if (!fs.existsSync(dir)) {
console.error('.nyc_output not found at', dir);
process.exit(2);
}
const files = fs.readdirSync(dir).filter(f => f.endsWith('.json'));
for (const f of files) {
const data = JSON.parse(fs.readFileSync(path.join(dir, f), 'utf8'));
out.merge(data);
}
if (out.size === 0) {
console.error('No coverage entries were merged.');
process.exit(3);
}
const sourceMapStore = libSourceMaps.createSourceMapStore();
const transformed = await sourceMapStore.transformCoverage(out);
const remapped = libCoverage.createCoverageMap(transformed.map || transformed.data || {});
const outDir = path.join(process.cwd(), 'coverage-reports', 'e2e');
fs.mkdirSync(outDir, { recursive: true });
const context = libReport.createContext({ dir: outDir, coverageMap: remapped });
reports.create('lcovonly', {}).execute(context);
reports.create('html', {}).execute(context);
console.log('Wrote remapped e2e coverage to', outDir);
}
// Remap using source maps
const sourceMapStore = libSourceMaps.createSourceMapStore();
const transformed = sourceMapStore.transformCoverage(out);
const remapped = transformed.map;
// Write reports
const outDir = path.join(process.cwd(), 'coverage-reports', 'e2e');
fs.mkdirSync(outDir, { recursive: true });
const context = libReport.createContext({ dir: outDir, coverageMap: remapped });
// lcov + html
reports.create('lcovonly', {}).execute(context);
reports.create('html', {}).execute(context);
console.log('Wrote remapped e2e coverage to', outDir);
main().catch(err => {
console.error(err);
process.exit(1);
});