test: split out headful tests into headful.spec.js (#2657)

This commit is contained in:
Andrey Lushnikov 2018-06-01 13:48:34 -07:00 committed by GitHub
parent e03802688d
commit 07b91f61a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 82 additions and 48 deletions

79
test/headful.spec.js Normal file
View File

@ -0,0 +1,79 @@
/**
* Copyright 2018 Google Inc. All rights reserved.
*
* 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 path = require('path');
const os = require('os');
const TMP_FOLDER = path.join(os.tmpdir(), 'pptr_tmp_folder-');
module.exports.addTests = function({testRunner, expect, PROJECT_ROOT, defaultBrowserOptions}) {
const {describe, xdescribe, fdescribe} = testRunner;
const {it, fit, xit} = testRunner;
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;
const puppeteer = require(PROJECT_ROOT);
const headfulOptions = Object.assign({}, defaultBrowserOptions, {
headless: false
});
const headlessOptions = Object.assign({}, defaultBrowserOptions, {
headless: true
});
const extensionPath = path.join(__dirname, 'assets', 'simple-extension');
const extensionOptions = Object.assign({}, defaultBrowserOptions, {
headless: false,
args: [
'--no-sandbox',
`--disable-extensions-except=${extensionPath}`,
`--load-extension=${extensionPath}`,
],
});
describe('HEADFUL', function() {
it('background_page target type should be available', async({browser}) => {
const browserWithExtension = await puppeteer.launch(extensionOptions);
const page = await browserWithExtension.newPage();
const targets = await browserWithExtension.targets();
const backgroundPageTarget = targets.find(target => target.type() === 'background_page');
await page.close();
await browserWithExtension.close();
expect(backgroundPageTarget).toBeTruthy();
});
it('should have default url when launching browser', async function() {
const browser = await puppeteer.launch(extensionOptions);
const pages = (await browser.pages()).map(page => page.url());
expect(pages).toEqual(['about:blank']);
await browser.close();
});
xit('headless should be able to read cookies written by headful', async({server}) => {
const userDataDir = await mkdtempAsync(TMP_FOLDER);
// Write a cookie in headful chrome
const headfulBrowser = await puppeteer.launch(Object.assign({userDataDir}, headfulOptions));
const headfulPage = await headfulBrowser.newPage();
await headfulPage.goto(server.EMPTY_PAGE);
await headfulPage.evaluate(() => document.cookie = 'foo=true; expires=Fri, 31 Dec 9999 23:59:59 GMT');
await headfulBrowser.close();
// Read the cookie from headless chrome
const headlessBrowser = await puppeteer.launch(Object.assign({userDataDir}, headlessOptions));
const headlessPage = await headlessBrowser.newPage();
await headlessPage.goto(server.EMPTY_PAGE);
const cookie = await headlessPage.evaluate(() => document.cookie);
await headlessBrowser.close();
rm(userDataDir);
expect(cookie).toBe('foo=true');
});
});
};

View File

@ -178,26 +178,6 @@ module.exports.addTests = function({testRunner, expect, PROJECT_ROOT, defaultBro
await browser2.close(); await browser2.close();
rm(userDataDir); rm(userDataDir);
}); });
xit('headless should be able to read cookies written by headful', async({server}) => {
const userDataDir = await mkdtempAsync(TMP_FOLDER);
const options = Object.assign({userDataDir}, defaultBrowserOptions);
// Write a cookie in headful chrome
options.headless = false;
const headfulBrowser = await puppeteer.launch(options);
const headfulPage = await headfulBrowser.newPage();
await headfulPage.goto(server.EMPTY_PAGE);
await headfulPage.evaluate(() => document.cookie = 'foo=true; expires=Fri, 31 Dec 9999 23:59:59 GMT');
await headfulBrowser.close();
// Read the cookie from headless chrome
options.headless = true;
const headlessBrowser = await puppeteer.launch(options);
const headlessPage = await headlessBrowser.newPage();
await headlessPage.goto(server.EMPTY_PAGE);
const cookie = await headlessPage.evaluate(() => document.cookie);
await headlessBrowser.close();
rm(userDataDir);
expect(cookie).toBe('foo=true');
});
it('should return the default chrome arguments', async() => { it('should return the default chrome arguments', async() => {
const args = puppeteer.defaultArgs(); const args = puppeteer.defaultArgs();
expect(args).toContain('--no-first-run'); expect(args).toContain('--no-first-run');
@ -270,13 +250,6 @@ module.exports.addTests = function({testRunner, expect, PROJECT_ROOT, defaultBro
expect(pages).toEqual(['about:blank']); expect(pages).toEqual(['about:blank']);
await browser.close(); await browser.close();
}); });
it('should have default url when launching browser with headless:false', async function() {
const options = Object.assign({}, defaultBrowserOptions, {headless: false});
const browser = await puppeteer.launch(options);
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}) { it('should have custom url when launching browser', async function({server}) {
const customUrl = server.PREFIX + '/empty.html'; const customUrl = server.PREFIX + '/empty.html';
const options = Object.assign({}, defaultBrowserOptions); const options = Object.assign({}, defaultBrowserOptions);

View File

@ -16,7 +16,7 @@
const {waitEvent} = require('./utils'); const {waitEvent} = require('./utils');
module.exports.addTests = function({testRunner, expect, puppeteer, browserWithExtensionOptions}) { module.exports.addTests = function({testRunner, expect, puppeteer}) {
const {describe, xdescribe, fdescribe} = testRunner; const {describe, xdescribe, fdescribe} = testRunner;
const {it, fit, xit} = testRunner; const {it, fit, xit} = testRunner;
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner; const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;
@ -36,15 +36,6 @@ module.exports.addTests = function({testRunner, expect, puppeteer, browserWithEx
expect(allPages).toContain(page); expect(allPages).toContain(page);
expect(allPages[0]).not.toBe(allPages[1]); expect(allPages[0]).not.toBe(allPages[1]);
}); });
it('should allow background_page target type to pass through', async({browser}) => {
const browserWithExtension = await puppeteer.launch(browserWithExtensionOptions);
const page = await browserWithExtension.newPage();
const targets = await browserWithExtension.targets();
const backgroundPageTarget = targets.find(target => target.type() === 'background_page');
await page.close();
await browserWithExtension.close();
expect(backgroundPageTarget).toBeTruthy();
});
it('should contain browser target', async({browser}) => { it('should contain browser target', async({browser}) => {
const targets = browser.targets(); const targets = browser.targets();
const browserTarget = targets.find(target => target.type() === 'browser'); const browserTarget = targets.find(target => target.type() === 'browser');

View File

@ -35,7 +35,6 @@ const RESET_COLOR = '\x1b[0m';
const headless = (process.env.HEADLESS || 'true').trim().toLowerCase() === 'true'; const headless = (process.env.HEADLESS || 'true').trim().toLowerCase() === 'true';
const executablePath = process.env.CHROME; const executablePath = process.env.CHROME;
const extensionPath = path.resolve(__dirname, '../test/assets/simple-extension');
if (executablePath) if (executablePath)
console.warn(`${YELLOW_COLOR}WARN: running tests with ${executablePath}${RESET_COLOR}`); console.warn(`${YELLOW_COLOR}WARN: running tests with ${executablePath}${RESET_COLOR}`);
@ -50,15 +49,6 @@ const defaultBrowserOptions = {
dumpio: (process.env.DUMPIO || 'false').trim().toLowerCase() === 'true', dumpio: (process.env.DUMPIO || 'false').trim().toLowerCase() === 'true',
args: ['--no-sandbox'] args: ['--no-sandbox']
}; };
const browserWithExtensionOptions = {
headless: false,
executablePath,
args: [
'--no-sandbox',
`--disable-extensions-except=${extensionPath}`,
`--load-extension=${extensionPath}`,
],
};
let parallel = 1; let parallel = 1;
if (process.env.PPTR_PARALLEL_TESTS) if (process.env.PPTR_PARALLEL_TESTS)
@ -153,12 +143,13 @@ describe('Page', function() {
require('./jshandle.spec.js').addTests({testRunner, expect}); require('./jshandle.spec.js').addTests({testRunner, expect});
require('./network.spec.js').addTests({testRunner, expect}); require('./network.spec.js').addTests({testRunner, expect});
require('./page.spec.js').addTests({testRunner, expect, puppeteer, DeviceDescriptors, headless}); require('./page.spec.js').addTests({testRunner, expect, puppeteer, DeviceDescriptors, headless});
require('./target.spec.js').addTests({testRunner, expect, puppeteer, browserWithExtensionOptions}); require('./target.spec.js').addTests({testRunner, expect, puppeteer});
require('./tracing.spec.js').addTests({testRunner, expect}); require('./tracing.spec.js').addTests({testRunner, expect});
}); });
// Top-level tests that launch Browser themselves. // Top-level tests that launch Browser themselves.
require('./puppeteer.spec.js').addTests({testRunner, expect, PROJECT_ROOT, defaultBrowserOptions}); require('./puppeteer.spec.js').addTests({testRunner, expect, PROJECT_ROOT, defaultBrowserOptions});
require('./headful.spec.js').addTests({testRunner, expect, PROJECT_ROOT, defaultBrowserOptions});
if (process.env.COVERAGE) { if (process.env.COVERAGE) {
describe('COVERAGE', function() { describe('COVERAGE', function() {