mirror of
https://github.com/inventree/InvenTree.git
synced 2026-09-27 22:26:00 +00:00
try fixing leaky firefox tests (#12904)
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user