try fixing leaky firefox tests (#12904)

This commit is contained in:
Matthias Mair
2026-09-21 16:56:42 +10:00
committed by GitHub
parent 2f91f9a068
commit c86df83c01
+35 -1
View File
@@ -76,7 +76,11 @@ async function collectCoverageFromContext(context: BrowserContext) {
);
}
export const test = baseTest.extend<{}, {}>({
type TestFixtures = {
closeTestPages: BrowserContext[];
};
export const test = baseTest.extend<TestFixtures, {}>({
// Wrap browser.newPage so contexts created via doCachedLogin also get coverage
browser: [
async ({ browser }, use) => {
@@ -99,6 +103,36 @@ export const test = baseTest.extend<{}, {}>({
},
{ scope: 'worker' }
],
// remove possibly leaky browser contexts after each test
closeTestPages: [
async ({ browser }, use) => {
const contexts: BrowserContext[] = [];
const newPage = browser.newPage.bind(browser);
(browser as any).newPage = async (
options?: Parameters<typeof browser.newPage>[0]
) => {
const page = await newPage(options);
if (!contexts.includes(page.context())) {
contexts.push(page.context());
}
return page;
};
try {
await use(contexts);
} finally {
(browser as any).newPage = newPage;
for (const context of contexts) {
await collectCoverageFromContext(context);
await context.close().catch(() => {});
}
}
},
{ auto: true }
],
context: async ({ context }, use) => {
await setupCoverageCollection(context);