Skip to content

Commit

Permalink
test(firefox): introduce vendor-specific specs (#3890)
Browse files Browse the repository at this point in the history
Certain Puppeteer methods do expose the inner browser - e.g.
`browser.version()` depends on the browser we run.

Split out these tests into a vendor-specific test suites.

References #3889
  • Loading branch information
aslushnikov committed Feb 2, 2019
1 parent 84fe601 commit 6bb0350
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 18 deletions.
3 changes: 2 additions & 1 deletion .gitignore
@@ -1,5 +1,6 @@
/node_modules/
/test/output
/test/output-chromium
/test/output-firefox
/test/test-user-data-dir*
/.local-chromium/
/.dev_profile*
Expand Down
20 changes: 3 additions & 17 deletions test/browser.spec.js
Expand Up @@ -14,27 +14,11 @@
* limitations under the License.
*/

module.exports.addTests = function({testRunner, expect, headless, puppeteer}) {
module.exports.addTests = function({testRunner, expect, headless, puppeteer, FFOX}) {
const {describe, xdescribe, fdescribe} = testRunner;
const {it, fit, xit} = testRunner;
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;

describe('Browser.version', function() {
it('should return whether we are in headless', async({browser}) => {
const version = await browser.version();
expect(version.length).toBeGreaterThan(0);
expect(version.startsWith('Headless')).toBe(headless);
});
});

describe('Browser.userAgent', function() {
it('should include WebKit', async({browser}) => {
const userAgent = await browser.userAgent();
expect(userAgent.length).toBeGreaterThan(0);
expect(userAgent).toContain('WebKit');
});
});

describe('Browser.target', function() {
it('should return browser target', async({browser}) => {
const target = browser.target();
Expand All @@ -46,6 +30,8 @@ module.exports.addTests = function({testRunner, expect, headless, puppeteer}) {
it('should return child_process instance', async function({browser}) {
const process = await browser.process();
expect(process.pid).toBeGreaterThan(0);
});
(FFOX ? xit : it)('should not return child_process for remote browser', async function({browser}) {
const browserWSEndpoint = browser.wsEndpoint();
const remoteBrowser = await puppeteer.connect({browserWSEndpoint});
expect(remoteBrowser.process()).toBe(null);
Expand Down
39 changes: 39 additions & 0 deletions test/chromiumonly.spec.js
@@ -0,0 +1,39 @@
/**
* Copyright 2019 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.
*/
module.exports.addTests = function({testRunner, expect, product, headless}) {
const {describe, xdescribe, fdescribe} = testRunner;
const {it, fit, xit} = testRunner;
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;

describe('Chromium-specific tests', function() {
describe('Browser.version', function() {
it('should return whether we are in headless', async({browser}) => {
const version = await browser.version();
expect(version.length).toBeGreaterThan(0);
expect(version.startsWith('Headless')).toBe(headless);
});
});

describe('Browser.userAgent', function() {
it('should include WebKit', async({browser}) => {
const userAgent = await browser.userAgent();
expect(userAgent.length).toBeGreaterThan(0);
expect(userAgent).toContain('WebKit');
});
});
});
};

39 changes: 39 additions & 0 deletions test/firefoxonly.spec.js
@@ -0,0 +1,39 @@
/**
* Copyright 2019 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.
*/
module.exports.addTests = function({testRunner, expect, product}) {
const {describe, xdescribe, fdescribe} = testRunner;
const {it, fit, xit} = testRunner;
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;

describe('Firefox-specific tests', function() {
describe('Browser.version', function() {
it('should return whether we are in headless', async({browser}) => {
const version = await browser.version();
expect(version.length).toBeGreaterThan(0);
expect(version.startsWith('Firefox/')).toBe(true);
});
});

describe('Browser.userAgent', function() {
it('should include WebKit', async({browser}) => {
const userAgent = await browser.userAgent();
expect(userAgent.length).toBeGreaterThan(0);
expect(userAgent).toContain('Gecko');
});
});
});
};

6 changes: 6 additions & 0 deletions test/puppeteer.spec.js
Expand Up @@ -28,6 +28,7 @@ module.exports.addTests = ({testRunner, product, puppeteer, defaultBrowserOption
const {beforeAll, beforeEach, afterAll, afterEach} = testRunner;

const CHROME = product === 'Chromium';
const FFOX = product === 'Firefox';

if (defaultBrowserOptions.executablePath) {
console.warn(`${YELLOW_COLOR}WARN: running ${product} tests with ${defaultBrowserOptions.executablePath}${RESET_COLOR}`);
Expand All @@ -48,6 +49,8 @@ module.exports.addTests = ({testRunner, product, puppeteer, defaultBrowserOption
const testOptions = {
testRunner,
product,
FFOX,
CHROME,
puppeteer,
expect,
defaultBrowserOptions,
Expand Down Expand Up @@ -121,6 +124,9 @@ module.exports.addTests = ({testRunner, product, puppeteer, defaultBrowserOption
require('./coverage.spec.js').addTests(testOptions);
require('./network.spec.js').addTests(testOptions);
require('./worker.spec.js').addTests(testOptions);
require('./chromiumonly.spec.js').addTests(testOptions);
} else {
require('./firefoxonly.spec.js').addTests(testOptions);
}
});

Expand Down

0 comments on commit 6bb0350

Please sign in to comment.