From 2d77760f016b7fee51bd9bd476bb6901a30bc55b Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Thu, 5 Dec 2019 13:15:17 -0800 Subject: [PATCH] chore: move tests around after targets extraction (#153) --- src/chromium/features/chromium.spec.js | 16 ++++++++++++ test/browsercontext.spec.js | 36 +++++++------------------- test/chromiumonly.spec.js | 35 +++++++++++++++++++++++++ test/launcher.spec.js | 35 ------------------------- test/page.spec.js | 2 +- 5 files changed, 62 insertions(+), 62 deletions(-) diff --git a/src/chromium/features/chromium.spec.js b/src/chromium/features/chromium.spec.js index 17ce5d9c5b..b9e68fe26b 100644 --- a/src/chromium/features/chromium.spec.js +++ b/src/chromium/features/chromium.spec.js @@ -210,5 +210,21 @@ module.exports.addTests = function({testRunner, expect, playwright, FFOX, CHROME }).catch(e => error = e); expect(error).toBeInstanceOf(playwright.errors.TimeoutError); }); + it('should fire target events', async function({browser, server}) { + const context = await browser.createIncognitoBrowserContext(); + const events = []; + browser.chromium.on('targetcreated', target => events.push('CREATED: ' + target.url())); + browser.chromium.on('targetchanged', target => events.push('CHANGED: ' + target.url())); + browser.chromium.on('targetdestroyed', target => events.push('DESTROYED: ' + target.url())); + const page = await context.newPage(); + await page.goto(server.EMPTY_PAGE); + await page.close(); + expect(events).toEqual([ + 'CREATED: about:blank', + `CHANGED: ${server.EMPTY_PAGE}`, + `DESTROYED: ${server.EMPTY_PAGE}` + ]); + await context.close(); + }); }); }; diff --git a/test/browsercontext.spec.js b/test/browsercontext.spec.js index a665c00ebb..d9548e93b0 100644 --- a/test/browsercontext.spec.js +++ b/test/browsercontext.spec.js @@ -16,7 +16,7 @@ const utils = require('./utils'); -module.exports.addTests = function({testRunner, expect, playwright, FFOX, CHROME, WEBKIT}) { +module.exports.addTests = function({testRunner, expect}) { const {describe, xdescribe, fdescribe} = testRunner; const {it, fit, xit} = testRunner; const {beforeAll, beforeEach, afterAll, afterEach} = testRunner; @@ -40,7 +40,7 @@ module.exports.addTests = function({testRunner, expect, playwright, FFOX, CHROME await context.close(); expect(browser.browserContexts().length).toBe(1); }); - it.skip(WEBKIT)('should close all belonging targets once closing context', async function({browser, server}) { + it('should close all belonging targets once closing context', async function({browser, server}) { expect((await browser.pages()).length).toBe(1); const context = await browser.createIncognitoBrowserContext(); @@ -62,28 +62,12 @@ module.exports.addTests = function({testRunner, expect, playwright, FFOX, CHROME expect(popupTarget.browserContext()).toBe(context); await context.close(); }); - it.skip(WEBKIT)('should fire target events', async function({browser, server}) { - const context = await browser.createIncognitoBrowserContext(); - const events = []; - browser.chromium.on('targetcreated', target => events.push('CREATED: ' + target.url())); - browser.chromium.on('targetchanged', target => events.push('CHANGED: ' + target.url())); - browser.chromium.on('targetdestroyed', target => events.push('DESTROYED: ' + target.url())); - const page = await context.newPage(); - await page.goto(server.EMPTY_PAGE); - await page.close(); - expect(events).toEqual([ - 'CREATED: about:blank', - `CHANGED: ${server.EMPTY_PAGE}`, - `DESTROYED: ${server.EMPTY_PAGE}` - ]); - await context.close(); - }); it('should isolate localStorage and cookies', async function({browser, server}) { // Create two incognito contexts. const context1 = await browser.createIncognitoBrowserContext(); const context2 = await browser.createIncognitoBrowserContext(); - expect(browser.chromium.targets(context1).length).toBe(0); - expect(browser.chromium.targets(context2).length).toBe(0); + expect((await context1.pages()).length).toBe(0); + expect((await context2.pages()).length).toBe(0); // Create a page in first incognito context. const page1 = await context1.newPage(); @@ -93,8 +77,8 @@ module.exports.addTests = function({testRunner, expect, playwright, FFOX, CHROME document.cookie = 'name=page1'; }); - expect(browser.chromium.targets(context1).length).toBe(1); - expect(browser.chromium.targets(context2).length).toBe(0); + expect((await context1.pages()).length).toBe(1); + expect((await context2.pages()).length).toBe(0); // Create a page in second incognito context. const page2 = await context2.newPage(); @@ -104,10 +88,10 @@ module.exports.addTests = function({testRunner, expect, playwright, FFOX, CHROME document.cookie = 'name=page2'; }); - expect(browser.chromium.targets(context1).length).toBe(1); - expect(browser.chromium.targets(context1)[0]).toBe(browser.chromium.pageTarget(page1)); - expect(browser.chromium.targets(context2).length).toBe(1); - expect(browser.chromium.targets(context2)[0]).toBe(browser.chromium.pageTarget(page2)); + expect((await context1.pages()).length).toBe(1); + expect((await context2.pages()).length).toBe(1); + expect((await context1.pages())[0]).toBe(page1); + expect((await context2.pages())[0]).toBe(page2); // Make sure pages don't share localstorage or cookies. expect(await page1.evaluate(() => localStorage.getItem('name'))).toBe('page1'); diff --git a/test/chromiumonly.spec.js b/test/chromiumonly.spec.js index 083d3e8193..2f6f488f1c 100644 --- a/test/chromiumonly.spec.js +++ b/test/chromiumonly.spec.js @@ -63,6 +63,41 @@ module.exports.addLauncherTests = function({testRunner, expect, defaultBrowserOp expect(error.message).toContain('Failed to fetch browser webSocket url from'); originalBrowser.close(); }); + it('userDataDir option should restore state', async({server}) => { + const userDataDir = await mkdtempAsync(TMP_FOLDER); + const options = Object.assign({userDataDir}, defaultBrowserOptions); + const browser = await playwright.launch(options); + const page = await browser.newPage(); + await page.goto(server.EMPTY_PAGE); + await page.evaluate(() => localStorage.hey = 'hello'); + await browser.close(); + + const browser2 = await playwright.launch(options); + const page2 = await browser2.newPage(); + await page2.goto(server.EMPTY_PAGE); + expect(await page2.evaluate(() => localStorage.hey)).toBe('hello'); + await browser2.close(); + // This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778 + await rmAsync(userDataDir).catch(e => {}); + }); + // This mysteriously fails on Windows on AppVeyor. See https://github.com/GoogleChrome/puppeteer/issues/4111 + it('userDataDir option should restore cookies', async({server}) => { + const userDataDir = await mkdtempAsync(TMP_FOLDER); + const options = Object.assign({userDataDir}, defaultBrowserOptions); + const browser = await playwright.launch(options); + const page = await browser.newPage(); + await page.goto(server.EMPTY_PAGE); + await page.evaluate(() => document.cookie = 'doSomethingOnlyOnce=true; expires=Fri, 31 Dec 9999 23:59:59 GMT'); + await browser.close(); + + const browser2 = await playwright.launch(options); + const page2 = await browser2.newPage(); + await page2.goto(server.EMPTY_PAGE); + expect(await page2.evaluate(() => document.cookie)).toBe('doSomethingOnlyOnce=true'); + await browser2.close(); + // This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778 + await rmAsync(userDataDir).catch(e => {}); + }); }); describe('Playwright.launch |pipe| option', function() { diff --git a/test/launcher.spec.js b/test/launcher.spec.js index eee94198f2..bf49a0b531 100644 --- a/test/launcher.spec.js +++ b/test/launcher.spec.js @@ -151,41 +151,6 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p // This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778 await rmAsync(userDataDir).catch(e => {}); }); - it.skip(WEBKIT)('userDataDir option should restore state', async({server}) => { - const userDataDir = await mkdtempAsync(TMP_FOLDER); - const options = Object.assign({userDataDir}, defaultBrowserOptions); - const browser = await playwright.launch(options); - const page = await browser.newPage(); - await page.goto(server.EMPTY_PAGE); - await page.evaluate(() => localStorage.hey = 'hello'); - await browser.close(); - - const browser2 = await playwright.launch(options); - const page2 = await browser2.newPage(); - await page2.goto(server.EMPTY_PAGE); - expect(await page2.evaluate(() => localStorage.hey)).toBe('hello'); - await browser2.close(); - // This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778 - await rmAsync(userDataDir).catch(e => {}); - }); - // This mysteriously fails on Windows on AppVeyor. See https://github.com/GoogleChrome/puppeteer/issues/4111 - xit('userDataDir option should restore cookies', async({server}) => { - const userDataDir = await mkdtempAsync(TMP_FOLDER); - const options = Object.assign({userDataDir}, defaultBrowserOptions); - const browser = await playwright.launch(options); - const page = await browser.newPage(); - await page.goto(server.EMPTY_PAGE); - await page.evaluate(() => document.cookie = 'doSomethingOnlyOnce=true; expires=Fri, 31 Dec 9999 23:59:59 GMT'); - await browser.close(); - - const browser2 = await playwright.launch(options); - const page2 = await browser2.newPage(); - await page2.goto(server.EMPTY_PAGE); - expect(await page2.evaluate(() => document.cookie)).toBe('doSomethingOnlyOnce=true'); - await browser2.close(); - // This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778 - await rmAsync(userDataDir).catch(e => {}); - }); it('should return the default arguments', async() => { if (CHROME) { expect(playwright.defaultArgs()).toContain('--no-first-run'); diff --git a/test/page.spec.js b/test/page.spec.js index a40747b2e0..9113aceecc 100644 --- a/test/page.spec.js +++ b/test/page.spec.js @@ -1145,7 +1145,7 @@ module.exports.addTests = function({testRunner, expect, headless, playwright, FF // convert target destroy events into close. describe('Page.Events.Close', function() { it.skip(WEBKIT)('should work with window.close', async function({ browser, page, context, server }) { - const newPagePromise = new Promise(fulfill => browser.chromium.once('targetcreated', target => fulfill(target.page()))); + const newPagePromise = new Promise(f => page.once('popup', f)); await page.evaluate(() => window['newPage'] = window.open('about:blank')); const newPage = await newPagePromise; const closedPromise = new Promise(x => newPage.on('close', x));