1
0
mirror of https://github.com/morris/vanilla-todo.git synced 2025-08-19 20:31:20 +02:00
Files
vanilla-todo/test/coverage.js
Morris Brodersen 12b35d447b modern node imports
2025-02-15 15:31:43 +01:00

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')}`,
);
}