modified: .vscode/launch.json new file: e2e/playwright-collect-coverage.spec.ts modified: package-lock.json modified: package.json modified: playwright.config.ts new file: scripts/merge-lcov.cjs new file: scripts/normalize-lcov.cjs new file: scripts/playwright-collect-coverage.cjs new file: scripts/remap-and-report.cjs modified: vite.config.ts new file: vitest.config.ts
24 lines
874 B
JavaScript
Executable File
24 lines
874 B
JavaScript
Executable File
// tests/playwright-collect-coverage.js
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const { test } = require('@playwright/test');
|
|
|
|
test.afterEach(async ({ page }, testInfo) => {
|
|
try {
|
|
// evaluate coverage from the page
|
|
const coverage = await page.evaluate(() => (globalThis.__coverage__ || {}));
|
|
if (coverage && Object.keys(coverage).length) {
|
|
const dir = path.join(process.cwd(), '.nyc_output');
|
|
fs.mkdirSync(dir, { recursive: true });
|
|
|
|
// unique file per worker/test
|
|
const filename = path.join(dir, `coverage-e2e-${process.pid}-${Date.now()}.json`);
|
|
fs.writeFileSync(filename, JSON.stringify(coverage));
|
|
console.log('Wrote coverage:', filename);
|
|
}
|
|
} catch (err) {
|
|
// don't fail tests if coverage collection fails
|
|
console.warn('Failed to collect coverage from page:', err.message || err);
|
|
}
|
|
});
|