collectAndSaveCoverage function test
Last updated: 2026-03-01T23:25:47.056Z
Metrics
LOC: 84
Complexity: 17
Params: 5
Signature
collectAndSaveCoverage(
page: Page,
background: Worker,
context: BrowserContext,
testInfo: TestInfo,
): : Promise<void>
Architecture violations
- [warning] max-cyclomatic-complexity: 'collectAndSaveCoverage' has cyclomatic complexity 17 (max 10)
- [warning] max-lines: 'collectAndSaveCoverage' has 84 lines (max 80)
Source Code
async function collectAndSaveCoverage(
page: Page,
background: Worker,
context: BrowserContext,
testInfo: TestInfo,
): Promise<void> {
const map = createCoverageMap({});
// 1. Service worker (background) — globalThis.__coverage__
try {
const swCov = await background.evaluate<CoverageMapData>(() =>
JSON.parse(
JSON.stringify(
(globalThis as unknown as Record<string, unknown>)["__coverage__"] ??
{},
),
),
);
if (Object.keys(swCov).length) map.merge(swCov);
} catch {
// SW may not have coverage data when VITE_COVERAGE is not set
}
// 2. Content scripts (isolated world) — collected via background scripting API
try {
const raw = await background.evaluate(async () => {
const tabs = await chrome.tabs.query({ url: "http://localhost/*" });
const results: string[] = [];
for (const tab of tabs) {
if (!tab.id) continue;
try {
const [res] = await chrome.scripting.executeScript({
target: { tabId: tab.id },
world: "ISOLATED",
func: (): string =>
JSON.stringify(
(window as unknown as Record<string, unknown>)[
"__coverage__"
] ?? {},
),
});
if (res?.result) results.push(res.result as string);
} catch {
// Tab may have been closed or scripting not permitted
}
}
return results;
});
for (const serialized of raw) {
const cov = JSON.parse(serialized) as CoverageMapData;
if (Object.keys(cov).length) map.merge(cov);
}
} catch {
// Background scripting API unavailable
}
// 3. Extension pages (popup, options, devtools) — window.__coverage__
for (const pg of context.pages()) {
if (pg === page) continue;
try {
const pageCov = await pg.evaluate<CoverageMapData>(() =>
JSON.parse(
JSON.stringify(
(window as unknown as Record<string, unknown>)["__coverage__"] ??
{},
),
),
);
if (Object.keys(pageCov).length) map.merge(pageCov);
} catch {
// Page may have been closed
}
}
fs.mkdirSync(COVERAGE_OUTPUT, { recursive: true });
const safeName = testInfo.titlePath
.join("_")
.replace(/[^a-z0-9_]/gi, "-")
.slice(0, 100);
fs.writeFileSync(
path.join(COVERAGE_OUTPUT, `${safeName}.json`),
JSON.stringify(map.toJSON(), null, 2),
);
}
No outgoing dependencies.
Impact (Incoming)
| Source | Type |
|---|---|
| getChromiumExecutablePath | calls |