From b6ec6339d07b8c2fe7361914263dd807326377d8 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Tue, 7 Sep 2021 13:05:29 +0200 Subject: [PATCH] test: fix flaky 'should not fire events for favicon' test (#8738) --- tests/browsercontext-network-event.spec.ts | 21 +++++++-------------- tests/download.spec.ts | 1 + tests/selectors-register.spec.ts | 5 +++++ 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/tests/browsercontext-network-event.spec.ts b/tests/browsercontext-network-event.spec.ts index ab6616cac2..5bf0517f97 100644 --- a/tests/browsercontext-network-event.spec.ts +++ b/tests/browsercontext-network-event.spec.ts @@ -17,8 +17,7 @@ import { browserTest as it, expect } from './config/browserTest'; -it('BrowserContext.Events.Request', async ({browser, server}) => { - const context = await browser.newContext(); +it('BrowserContext.Events.Request', async ({context, server}) => { const page = await context.newPage(); const requests = []; context.on('request', request => requests.push(request)); @@ -37,8 +36,7 @@ it('BrowserContext.Events.Request', async ({browser, server}) => { ]); }); -it('BrowserContext.Events.Response', async ({browser, server}) => { - const context = await browser.newContext(); +it('BrowserContext.Events.Response', async ({context, server}) => { const page = await context.newPage(); const responses = []; context.on('response', response => responses.push(response)); @@ -57,12 +55,11 @@ it('BrowserContext.Events.Response', async ({browser, server}) => { ]); }); -it('BrowserContext.Events.RequestFailed', async ({browser, server}) => { +it('BrowserContext.Events.RequestFailed', async ({context, server}) => { server.setRoute('/one-style.css', (_, res) => { res.setHeader('Content-Type', 'text/css'); res.connection.destroy(); }); - const context = await browser.newContext(); const page = await context.newPage(); const failedRequests = []; context.on('requestfailed', request => failedRequests.push(request)); @@ -75,8 +72,7 @@ it('BrowserContext.Events.RequestFailed', async ({browser, server}) => { }); -it('BrowserContext.Events.RequestFinished', async ({browser, server}) => { - const context = await browser.newContext(); +it('BrowserContext.Events.RequestFinished', async ({context, server}) => { const page = await context.newPage(); const [response] = await Promise.all([ page.goto(server.EMPTY_PAGE), @@ -90,8 +86,7 @@ it('BrowserContext.Events.RequestFinished', async ({browser, server}) => { expect(request.failure()).toBe(null); }); -it('should fire events in proper order', async ({browser, server}) => { - const context = await browser.newContext(); +it('should fire events in proper order', async ({context, server}) => { const page = await context.newPage(); const events = []; context.on('request', () => events.push('request')); @@ -108,12 +103,10 @@ it('should fire events in proper order', async ({browser, server}) => { ]); }); -it('should not fire events for favicon or favicon redirects', async ({browser, server, browserName, channel, headless}) => { +it('should not fire events for favicon or favicon redirects', async ({context, page, server, browserName, channel, headless}) => { it.skip(headless && browserName !== 'firefox', 'headless browsers, except firefox, do not request favicons'); it.skip(!headless && browserName === 'webkit' && !channel, 'headed webkit does not have a favicon feature'); - const context = await browser.newContext(); - const page = await context.newPage(); - const favicon = `/favicon.ico`; + const favicon = `/no-cache/favicon.ico`; const hashedFaviconUrl = `/favicon-hashed.ico`; const imagePath = `/fakeimage.png`; const pagePath = `/page.html`; diff --git a/tests/download.spec.ts b/tests/download.spec.ts index 08133ea358..a2318fcb6c 100644 --- a/tests/download.spec.ts +++ b/tests/download.spec.ts @@ -465,6 +465,7 @@ it.describe('download event', () => { ]); expect(downloadPath).toBe(null); expect(saveError.message).toContain('File deleted upon browser context closure.'); + await browser.close(); }); it('should download large binary.zip', async ({browser, server, browserName}, testInfo) => { diff --git a/tests/selectors-register.spec.ts b/tests/selectors-register.spec.ts index 22f0d8c063..552a880af4 100644 --- a/tests/selectors-register.spec.ts +++ b/tests/selectors-register.spec.ts @@ -56,6 +56,7 @@ it('should work with path', async ({playwright, browser, asset}) => { await playwright.selectors.register('foo', { path: asset('sectionselectorengine.js') }); await page.setContent('
'); expect(await page.$eval('foo=whatever', e => e.nodeName)).toBe('SECTION'); + await page.close(); }); it('should work in main and isolated world', async ({playwright, browser}) => { @@ -88,6 +89,7 @@ it('should work in main and isolated world', async ({playwright, browser}) => { expect(await page.$eval('isolated=ignored >> main=ignored', e => e.nodeName)).toBe('SPAN'); // Can be chained to css. expect(await page.$eval('main=ignored >> css=section', e => e.nodeName)).toBe('SECTION'); + await page.close(); }); it('should handle errors', async ({playwright, browser}) => { @@ -116,6 +118,7 @@ it('should handle errors', async ({playwright, browser}) => { error = await playwright.selectors.register('css', createDummySelector).catch(e => e); expect(error.message).toBe('"css" is a predefined selector engine'); + await page.close(); }); it('should not rely on engines working from the root', async ({ playwright, browser }) => { @@ -132,6 +135,7 @@ it('should not rely on engines working from the root', async ({ playwright, brow await playwright.selectors.register('__value', createValueEngine); await page.setContent(``); expect(await page.$eval('input >> __value=value2', e => e.id)).toBe('input2'); + await page.close(); }); it('should throw a nice error if the selector returns a bad value', async ({ playwright, browser }) => { @@ -148,4 +152,5 @@ it('should throw a nice error if the selector returns a bad value', async ({ pla await playwright.selectors.register('__fake', createFakeEngine); const error = await page.$('__fake=value2').catch(e => e); expect(error.message).toContain('Expected a Node but got [object Array]'); + await page.close(); });