From fe6addc71af0430dd5bab80c18ced1d835841a67 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Tue, 10 Dec 2019 14:02:48 -0800 Subject: [PATCH] test: rearrange launcher tests more --- test/chromium/launcher.spec.js | 36 +++++++++++++++- test/firefox/launcher.spec.js | 67 ++++++++++++++++++++++++++++++ test/launcher.spec.js | 76 +++++++++------------------------- test/playwright.spec.js | 12 +++++- test/webkit/launcher.spec.js | 38 +++++++++++++++++ 5 files changed, 170 insertions(+), 59 deletions(-) create mode 100644 test/firefox/launcher.spec.js create mode 100644 test/webkit/launcher.spec.js diff --git a/test/chromium/launcher.spec.js b/test/chromium/launcher.spec.js index 4356bc5112..2edfa2eae0 100644 --- a/test/chromium/launcher.spec.js +++ b/test/chromium/launcher.spec.js @@ -29,7 +29,41 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p const {it, fit, xit} = testRunner; const {beforeAll, beforeEach, afterAll, afterEach} = testRunner; - describe('Chromium-Specific Launcher tests', function() { + describe('CrPlaywright', function() { + describe('Playwright.launch', function() { + it('userDataDir option', async({server}) => { + const userDataDir = await mkdtempAsync(TMP_FOLDER); + const options = Object.assign({userDataDir}, defaultBrowserOptions); + const browser = await playwright.launch(options); + // Open a page to make sure its functional. + await browser.newPage(); + expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0); + await browser.close(); + expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0); + // This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778 + await rmAsync(userDataDir).catch(e => {}); + }); + it('userDataDir argument', async({server}) => { + const userDataDir = await mkdtempAsync(TMP_FOLDER); + const options = Object.assign({}, defaultBrowserOptions); + options.args = [ + ...(defaultBrowserOptions.args || []), + `--user-data-dir=${userDataDir}` + ]; + const browser = await playwright.launch(options); + expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0); + await browser.close(); + expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0); + // This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778 + await rmAsync(userDataDir).catch(e => {}); + }); + it('should return the default arguments', async() => { + expect(playwright.defaultArgs()).toContain('--no-first-run'); + expect(playwright.defaultArgs()).toContain('--headless'); + expect(playwright.defaultArgs({headless: false})).not.toContain('--headless'); + expect(playwright.defaultArgs({userDataDir: 'foo'})).toContain('--user-data-dir=foo'); + }); + }); describe('Playwright.launch |browserURL| option', function() { it('should be able to connect using browserUrl, with and without trailing slash', async({server}) => { const originalBrowser = await playwright.launch(Object.assign({}, defaultBrowserOptions, { diff --git a/test/firefox/launcher.spec.js b/test/firefox/launcher.spec.js new file mode 100644 index 0000000000..95e29921b7 --- /dev/null +++ b/test/firefox/launcher.spec.js @@ -0,0 +1,67 @@ +/** + * Copyright 2017 Google Inc. All rights reserved. + * Modifications copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const fs = require('fs'); +const os = require('os'); +const path = require('path'); +const {helper} = require('../../lib/helper'); +const rmAsync = helper.promisify(require('rimraf')); +const mkdtempAsync = helper.promisify(fs.mkdtemp); +const TMP_FOLDER = path.join(os.tmpdir(), 'pptr_tmp_folder-'); + +module.exports.addTests = function ({ testRunner, expect, defaultBrowserOptions, playwright }) { + const {describe, xdescribe, fdescribe} = testRunner; + const {it, fit, xit} = testRunner; + const {beforeAll, beforeEach, afterAll, afterEach} = testRunner; + + describe('FFPlaywright', function() { + describe('Playwright.launch', function() { + it('userDataDir option', async({server}) => { + const userDataDir = await mkdtempAsync(TMP_FOLDER); + const options = Object.assign({userDataDir}, defaultBrowserOptions); + const browser = await playwright.launch(options); + // Open a page to make sure its functional. + await browser.newPage(); + expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0); + await browser.close(); + expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0); + // This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778 + await rmAsync(userDataDir).catch(e => {}); + }); + it('userDataDir argument', async({server}) => { + const userDataDir = await mkdtempAsync(TMP_FOLDER); + const options = Object.assign({}, defaultBrowserOptions); + options.args = [ + ...(defaultBrowserOptions.args || []), + `-profile`, + userDataDir, + ]; + const browser = await playwright.launch(options); + expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0); + await browser.close(); + expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0); + // This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778 + await rmAsync(userDataDir).catch(e => {}); + }); + it('should return the default arguments', async() => { + expect(playwright.defaultArgs({browser: 'firefox'})).toContain('-headless'); + expect(playwright.defaultArgs({browser: 'firefox', headless: false})).not.toContain('-headless'); + expect(playwright.defaultArgs({browser: 'firefox', userDataDir: 'foo'})).toContain('-profile'); + expect(playwright.defaultArgs({browser: 'firefox', userDataDir: 'foo'})).toContain('foo'); + }); + }); + }); +}; diff --git a/test/launcher.spec.js b/test/launcher.spec.js index c01d3ba8fd..60b3b9052b 100644 --- a/test/launcher.spec.js +++ b/test/launcher.spec.js @@ -20,12 +20,10 @@ const path = require('path'); const {helper} = require('../lib/helper'); const rmAsync = helper.promisify(require('rimraf')); const mkdtempAsync = helper.promisify(fs.mkdtemp); -const readFileAsync = helper.promisify(fs.readFile); -const statAsync = helper.promisify(fs.stat); const TMP_FOLDER = path.join(os.tmpdir(), 'pptr_tmp_folder-'); const utils = require('./utils'); -module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, playwright, FFOX, CHROME, WEBKIT, WIN}) { +module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, playwright, WEBKIT}) { const {describe, xdescribe, fdescribe} = testRunner; const {it, fit, xit} = testRunner; const {beforeAll, beforeEach, afterAll, afterEach} = testRunner; @@ -61,42 +59,6 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p }); it.skip(WEBKIT)('userDataDir argument', async({server}) => { const userDataDir = await mkdtempAsync(TMP_FOLDER); - const options = Object.assign({}, defaultBrowserOptions); - if (CHROME || WEBKIT) { - options.args = [ - ...(defaultBrowserOptions.args || []), - `--user-data-dir=${userDataDir}` - ]; - } else { - options.args = [ - ...(defaultBrowserOptions.args || []), - `-profile`, - userDataDir, - ]; - } - const browser = await playwright.launch(options); - expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0); - await browser.close(); - expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0); - // 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'); - expect(playwright.defaultArgs()).toContain('--headless'); - expect(playwright.defaultArgs({headless: false})).not.toContain('--headless'); - expect(playwright.defaultArgs({userDataDir: 'foo'})).toContain('--user-data-dir=foo'); - } else if (WEBKIT) { - expect(playwright.defaultArgs().length).toBe(0); - } else { - expect(playwright.defaultArgs({browser: 'firefox'})).toContain('-headless'); - expect(playwright.defaultArgs({browser: 'firefox', headless: false})).not.toContain('-headless'); - expect(playwright.defaultArgs({browser: 'firefox', userDataDir: 'foo'})).toContain('-profile'); - expect(playwright.defaultArgs({browser: 'firefox', userDataDir: 'foo'})).toContain('foo'); - } - }); - it('should work with no default arguments', async() => { const options = Object.assign({}, defaultBrowserOptions); options.ignoreDefaultArgs = true; const browser = await playwright.launch(options); @@ -118,24 +80,6 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p expect(spawnargs.indexOf(defaultArgs[2])).toBe(-1); await browser.close(); }); - it.skip(FFOX || WEBKIT)('should have default URL when launching browser', async function() { - const browser = await playwright.launch(defaultBrowserOptions); - const pages = (await browser.pages()).map(page => page.url()); - expect(pages).toEqual(['about:blank']); - await browser.close(); - }); - it.skip(FFOX || WEBKIT)('should have custom URL when launching browser', async function({server}) { - const options = Object.assign({}, defaultBrowserOptions); - options.args = [server.EMPTY_PAGE].concat(options.args || []); - const browser = await playwright.launch(options); - const pages = await browser.pages(); - expect(pages.length).toBe(1); - const page = pages[0]; - if (page.url() !== server.EMPTY_PAGE) - await page.waitForNavigation(); - expect(page.url()).toBe(server.EMPTY_PAGE); - await browser.close(); - }); it.skip(WEBKIT)('should set the default viewport', async() => { const options = Object.assign({}, defaultBrowserOptions, { defaultViewport: { @@ -171,6 +115,24 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p expect(screenshot).toBeInstanceOf(Buffer); await browser.close(); }); + it('should have default URL when launching browser', async function() { + const browser = await playwright.launch(defaultBrowserOptions); + const pages = (await browser.pages()).map(page => page.url()); + expect(pages).toEqual(['about:blank']); + await browser.close(); + }); + it('should have custom URL when launching browser', async function({server}) { + const options = Object.assign({}, defaultBrowserOptions); + options.args = [server.EMPTY_PAGE].concat(options.args || []); + const browser = await playwright.launch(options); + const pages = await browser.pages(); + expect(pages.length).toBe(1); + const page = pages[0]; + if (page.url() !== server.EMPTY_PAGE) + await page.waitForNavigation(); + expect(page.url()).toBe(server.EMPTY_PAGE); + await browser.close(); + }); }); describe('Playwright.executablePath', function() { diff --git a/test/playwright.spec.js b/test/playwright.spec.js index b38ed29e81..5a2674f3b1 100644 --- a/test/playwright.spec.js +++ b/test/playwright.spec.js @@ -184,11 +184,21 @@ module.exports.addTests = ({testRunner, product, playwrightPath}) => { require('./fixtures.spec.js').addTests(testOptions); require('./ignorehttpserrors.spec.js').addTests(testOptions); require('./launcher.spec.js').addTests(testOptions); + if (CHROME) { - require('./chromium/headful.spec.js').addTests(testOptions); require('./chromium/connect.spec.js').addTests(testOptions); + require('./chromium/launcher.spec.js').addTests(testOptions); + require('./chromium/headful.spec.js').addTests(testOptions); require('./chromium/headful.spec.js').addTests(testOptions); require('./chromium/oopif.spec.js').addTests(testOptions); require('./chromium/tracing.spec.js').addTests(testOptions); } + + if (FFOX) { + require('./firefox/launcher.spec.js').addTests(testOptions); + } + + if (WEBKIT) { + require('./webkit/launcher.spec.js').addTests(testOptions); + } }; diff --git a/test/webkit/launcher.spec.js b/test/webkit/launcher.spec.js new file mode 100644 index 0000000000..9b306b2c89 --- /dev/null +++ b/test/webkit/launcher.spec.js @@ -0,0 +1,38 @@ +/** + * Copyright 2017 Google Inc. All rights reserved. + * Modifications copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const fs = require('fs'); +const os = require('os'); +const path = require('path'); +const {helper} = require('../../lib/helper'); +const rmAsync = helper.promisify(require('rimraf')); +const mkdtempAsync = helper.promisify(fs.mkdtemp); +const TMP_FOLDER = path.join(os.tmpdir(), 'pptr_tmp_folder-'); +const utils = require('../utils'); + +module.exports.addTests = function ({ testRunner, expect, playwright }) { + const {describe, xdescribe, fdescribe} = testRunner; + const {it, fit, xit} = testRunner; + const {beforeAll, beforeEach, afterAll, afterEach} = testRunner; + + describe('WKPlaywright', function() { + describe('Playwright.launch', function() { + it('should return the default arguments', async() => { + expect(playwright.defaultArgs().length).toBe(0); + }); + }); + }); +};