mirror of
https://github.com/morris/vanilla-todo.git
synced 2025-08-19 20:31:20 +02:00
41 lines
977 B
JavaScript
41 lines
977 B
JavaScript
/* global process */
|
|
import { test } from '@playwright/test';
|
|
import crypto from 'node:crypto';
|
|
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
|
|
// See also https://playwright.dev/docs/api/class-coverage
|
|
|
|
if (process.env.NODE_V8_COVERAGE) {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.coverage.startJSCoverage();
|
|
});
|
|
|
|
test.afterEach(async ({ page }) => {
|
|
const coverage = await page.coverage.stopJSCoverage();
|
|
|
|
const output = {
|
|
result: coverage.map((entry) => ({
|
|
...entry,
|
|
url: resolveFileUrl(entry.url),
|
|
})),
|
|
};
|
|
|
|
await fs.promises.mkdir(process.env.NODE_V8_COVERAGE, { recursive: true });
|
|
await fs.promises.writeFile(
|
|
path.join(
|
|
process.env.NODE_V8_COVERAGE,
|
|
`coverage-${crypto.randomUUID()}.json`,
|
|
),
|
|
JSON.stringify(output),
|
|
);
|
|
});
|
|
}
|
|
|
|
function resolveFileUrl(url) {
|
|
return url.replace(
|
|
'http://localhost:8080',
|
|
`file://${path.resolve('public')}`,
|
|
);
|
|
}
|