Files
iptvnator/apps/web-e2e/src/fixtures.ts
T
4grayand4gray ef900d0f2a [codex] Add scoped coverage reporting (#1024)
* add scoped coverage reporting

* fix coverage review feedback

---------

Co-authored-by: 4gray <fourgray@proton.me>
2026-06-06 17:41:40 +02:00

42 lines
1.3 KiB
TypeScript

import { test as base, expect, type Page } from '@playwright/test';
import { mkdir, writeFile } from 'node:fs/promises';
import path from 'node:path';
function safeArtifactName(value: string): string {
return value
.replace(/[^a-z0-9]+/gi, '-')
.replace(/^-+|-+$/g, '')
.slice(0, 120);
}
export const test = base.extend<{ page: Page }>({
page: async ({ page }, use, testInfo) => {
if (process.env['IPTVNATOR_E2E_V8_COVERAGE'] !== '1') {
await use(page);
return;
}
await page.coverage.startJSCoverage({ resetOnNavigation: false });
await page.coverage.startCSSCoverage({ resetOnNavigation: false });
try {
await use(page);
} finally {
const [js, css] = await Promise.all([
page.coverage.stopJSCoverage(),
page.coverage.stopCSSCoverage(),
]);
const coverageDir = path.join(testInfo.outputDir, 'v8-coverage');
const artifactName = safeArtifactName(testInfo.titlePath.join(' '));
await mkdir(coverageDir, { recursive: true });
await writeFile(
path.join(coverageDir, `${artifactName || 'test'}.json`),
`${JSON.stringify({ css, js }, null, 4)}\n`
);
}
},
});
export { expect };