diff --git a/tests/library/headful.spec.ts b/tests/library/headful.spec.ts index ce17a4ed3c..7211fe6609 100644 --- a/tests/library/headful.spec.ts +++ b/tests/library/headful.spec.ts @@ -18,28 +18,27 @@ import { compare } from 'playwright-core/lib/image_tools/compare'; import { PNG } from 'playwright-core/lib/utilsBundle'; import { expect, playwrightTest as it } from '../config/browserTest'; -it('should have default url when launching browser @smoke', async ({ browserType, createUserDataDir }) => { - const browserContext = await browserType.launchPersistentContext(await createUserDataDir(), { headless: false }); - const urls = browserContext.pages().map(page => page.url()); +it.use({ headless: false }); + +it('should have default url when launching browser @smoke', async ({ launchPersistent }) => { + const { context } = await launchPersistent(); + const urls = context.pages().map(page => page.url()); expect(urls).toEqual(['about:blank']); - await browserContext.close(); }); -it('should close browser with beforeunload page', async ({ browserType, server, createUserDataDir }) => { +it('should close browser with beforeunload page', async ({ launchPersistent, server }) => { it.slow(); - const browserContext = await browserType.launchPersistentContext(await createUserDataDir(), { headless: false }); - const page = await browserContext.newPage(); + const { context } = await launchPersistent(); + const page = await context.newPage(); await page.goto(server.PREFIX + '/beforeunload.html'); // We have to interact with a page so that 'beforeunload' handlers // fire. await page.click('body'); - await browserContext.close(); + await context.close(); }); -it('should close browsercontext with pending beforeunload dialog', async ({ server, browserType }) => { - const browser = await browserType.launch({ headless: false }); - const context = await browser.newContext(); +it('should close browsercontext with pending beforeunload dialog', async ({ server, context }) => { const page = await context.newPage(); await page.goto(server.PREFIX + '/beforeunload.html'); // We have to interact with a page so that 'beforeunload' handlers @@ -50,12 +49,10 @@ it('should close browsercontext with pending beforeunload dialog', async ({ serv page.close({ runBeforeUnload: true }), ]); await context.close(); - await browser.close(); }); -it('should not crash when creating second context', async ({ browserType }) => { - const browser = await browserType.launch({ headless: false }); +it('should not crash when creating second context', async ({ browser }) => { { const browserContext = await browser.newContext(); await browserContext.newPage(); @@ -66,29 +63,23 @@ it('should not crash when creating second context', async ({ browserType }) => { await browserContext.newPage(); await browserContext.close(); } - await browser.close(); }); -it('should click background tab', async ({ browserType, server }) => { - const browser = await browserType.launch({ headless: false }); - const page = await browser.newPage(); +it('should click background tab', async ({ page, server }) => { await page.setContent(`empty.html`); await page.click('a'); await page.click('button'); - await browser.close(); }); it('should close browser after context menu was triggered', async ({ browserType, server }) => { - const browser = await browserType.launch({ headless: false }); + const browser = await browserType.launch(); const page = await browser.newPage(); await page.goto(server.PREFIX + '/grid.html'); await page.click('body', { button: 'right' }); await browser.close(); }); -it('should(not) block third party cookies', async ({ browserType, server, browserName, allowsThirdParty }) => { - const browser = await browserType.launch({ headless: false }); - const page = await browser.newPage(); +it('should(not) block third party cookies', async ({ page, server, allowsThirdParty }) => { await page.goto(server.EMPTY_PAGE); await page.evaluate(src => { let fulfill; @@ -122,12 +113,10 @@ it('should(not) block third party cookies', async ({ browserType, server, browse } else { expect(cookies).toEqual([]); } - await browser.close(); }); -it('should not block third party SameSite=None cookies', async ({ httpsServer, browserName, browserType }) => { +it('should not block third party SameSite=None cookies', async ({ httpsServer, browserName, browser }) => { it.skip(browserName === 'webkit', 'No third party cookies in WebKit'); - const browser = await browserType.launch({ headless: false }); const page = await browser.newPage({ ignoreHTTPSErrors: true, }); @@ -159,14 +148,13 @@ it('should not block third party SameSite=None cookies', async ({ httpsServer, b await page.goto(httpsServer.EMPTY_PAGE); expect(await cookie).toBe('a=b'); - await browser.close(); + await page.close(); }); -it('should not override viewport size when passed null', async function({ browserType, server, browserName }) { +it('should not override viewport size when passed null', async function({ browserName, server, browser }) { it.fixme(browserName === 'webkit'); // Our WebKit embedder does not respect window features. - const browser = await browserType.launch({ headless: false }); const context = await browser.newContext({ viewport: null }); const page = await context.newPage(); await page.goto(server.EMPTY_PAGE); @@ -180,11 +168,9 @@ it('should not override viewport size when passed null', async function({ browse await popup.waitForLoadState(); await popup.waitForFunction(() => window.outerWidth === 500 && window.outerHeight === 450); await context.close(); - await browser.close(); }); -it('Page.bringToFront should work', async ({ browserType }) => { - const browser = await browserType.launch({ headless: false }); +it('Page.bringToFront should work', async ({ browser }) => { const page1 = await browser.newPage(); await page1.setContent('Page1'); const page2 = await browser.newPage(); @@ -199,10 +185,12 @@ it('Page.bringToFront should work', async ({ browserType }) => { expect(await page2.evaluate('document.visibilityState')).toBe( 'visible' ); - await browser.close(); + + await page1.close(); + await page2.close(); }); -it.skip('should click in OOPIF', async ({ browserName, browserType, createUserDataDir, server }) => { +it.skip('should click in OOPIF', async ({ browserName, launchPersistent, server }) => { it.fixme(browserName === 'chromium'); server.setRoute('/empty.html', (req, res) => { res.writeHead(200, { 'Content-Type': 'text/html' }); @@ -214,8 +202,7 @@ it.skip('should click in OOPIF', async ({ browserName, browserType, createUserDa `); }); - const context = await browserType.launchPersistentContext(await createUserDataDir(), { headless: false }); - const [page] = context.pages(); + const { page } = await launchPersistent(); const consoleLog: string[] = []; page.on('console', m => consoleLog.push(m.text())); await page.goto(server.EMPTY_PAGE); @@ -223,7 +210,7 @@ it.skip('should click in OOPIF', async ({ browserName, browserType, createUserDa expect(consoleLog).toContain('ok'); }); -it.skip('should click bottom row w/ infobar in OOPIF', async ({ browserType, createUserDataDir, server }) => { +it.skip('should click bottom row w/ infobar in OOPIF', async ({ launchPersistent, server }) => { server.setRoute('/empty.html', (req, res) => { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(` @@ -245,8 +232,7 @@ it.skip('should click bottom row w/ infobar in OOPIF', async ({ browserType, cre `); }); - const browserContext = await browserType.launchPersistentContext(await createUserDataDir(), { headless: false }); - const [page] = browserContext.pages(); + const { page } = await launchPersistent(); await page.goto(server.EMPTY_PAGE); // Chrome bug! Investigate what's happening in the oopif router. const consoleLog: string[] = []; @@ -257,7 +243,7 @@ it.skip('should click bottom row w/ infobar in OOPIF', async ({ browserType, cre } }); -it('headless and headful should use same default fonts', async ({ page, headless, browserName, browserType, platform }) => { +it('headless and headful should use same default fonts', async ({ page, browserName, browserType }) => { it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/11177' }); it.fixme(browserName === 'firefox', 'Text is misaligned in headed vs headless'); const genericFontFamilies = [ @@ -269,19 +255,19 @@ it('headless and headful should use same default fonts', async ({ page, headless 'fantasy', 'emoji' ]; - const headedBrowser = await browserType.launch({ headless: !headless }); - const headedPage = await headedBrowser.newPage(); + const headlessBrowser = await browserType.launch({ headless: true }); + const headlessPage = await headlessBrowser.newPage(); for (const family of genericFontFamilies) { const content = `