Skip to content

Commit

Permalink
chore: normalize NPM scripts (#1285)
Browse files Browse the repository at this point in the history
This patch:
- makes `npm run cunit/wunit/funit` and `npm run ctest/ftest/wtest` run
browser-specific tests only
- makes `npm run unit` and `npm run test` run *all* browser tests
- runs *all* our infrastructure tests as part of `npm run lint`

As a result, if there's one test to be tested across all three browsers,
you can focus it and do `npm run test`;
  • Loading branch information
aslushnikov committed Mar 8, 2020
1 parent e78f0f7 commit 071ee06
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 46 deletions.
23 changes: 13 additions & 10 deletions package.json
Expand Up @@ -16,20 +16,23 @@
"ctest": "cross-env BROWSER=chromium node test/test.js",
"ftest": "cross-env BROWSER=firefox node test/test.js",
"wtest": "cross-env BROWSER=webkit node test/test.js",
"unit": "npm run ctest",
"funit": "npm run ftest",
"wunit": "npm run wtest",
"debug-test": "node --inspect-brk test/test.js",
"test-doclint": "node utils/doclint/check_public_api/test/test.js && node utils/doclint/preprocessor/test.js",
"test": "npm run lint --silent && npm run ccoverage && npm run fcoverage && npm run wcoverage && npm run test-doclint && node utils/testrunner/test/test.js",
"prepare": "node install-from-github.js",
"lint": "([ \"$CI\" = true ] && eslint --quiet -f codeframe --ext js,ts ./src || eslint --ext js,ts ./src) && npm run tsc && npm run doc",
"doc": "node utils/doclint/cli.js",
"ccoverage": "cross-env COVERAGE=true npm run ctest",
"test": "cross-env BROWSER=all node test/test.js",
"cunit": "cross-env BROWSER=chromium node test/test.js",
"funit": "cross-env BROWSER=firefox node test/test.js",
"wunit": "cross-env BROWSER=webkit node test/test.js",
"unit": "cross-env BROWSER=all node test/test.js",
"ccoverage": "cross-env COVERAGE=true BROWSER=chromium node test/test.js",
"fcoverage": "cross-env COVERAGE=true BROWSER=firefox node test/test.js",
"wcoverage": "cross-env COVERAGE=true BROWSER=webkit node test/test.js",
"coverage": "cross-env COVERAGE=true BROWSER=all node test/test.js",
"eslint": "[ \"$CI\" = true ] && eslint --quiet -f codeframe --ext js,ts ./src || eslint --ext js,ts ./src",
"tsc": "tsc -p .",
"doc": "node utils/doclint/cli.js",
"test-infra": "node utils/doclint/check_public_api/test/test.js && node utils/doclint/preprocessor/test.js && node utils/testrunner/test/test.js",
"lint": "npm run eslint && npm run tsc && npm run doc && npm run test-infra",
"debug-test": "node --inspect-brk test/test.js",
"clean": "rimraf lib",
"prepare": "node install-from-github.js",
"build": "node utils/runWebpack.js --mode='development' && tsc -p .",
"watch": "node utils/runWebpack.js --mode='development' --watch --silent | tsc -w -p .",
"version": "node utils/sync_package_versions.js && npm run doc"
Expand Down
79 changes: 43 additions & 36 deletions test/test.js
Expand Up @@ -77,44 +77,51 @@ beforeEach(async({server, httpsServer}) => {
httpsServer.reset();
});

const products = ['WebKit', 'Firefox', 'Chromium'];
let product;
let events;
let missingCoverage;
if (process.env.BROWSER === 'firefox') {
product = 'Firefox';
events = {
...require('../lib/events').Events,
...require('../lib/chromium/events').Events,
};
missingCoverage = ['browserContext.setGeolocation', 'browserContext.setOffline'];
} else if (process.env.BROWSER === 'webkit') {
product = 'WebKit';
events = require('../lib/events').Events;
missingCoverage = ['browserContext.clearPermissions'];
} else {
product = 'Chromium';
events = require('../lib/events').Events;
missingCoverage = [];
}
const BROWSER_CONFIGS = [
{
name: 'Firefox',
events: {
...require('../lib/events').Events,
...require('../lib/chromium/events').Events,
},
missingCoverage: ['browserContext.setGeolocation', 'browserContext.setOffline'],
},
{
name: 'WebKit',
events: require('../lib/events').Events,
missingCoverage: ['browserContext.clearPermissions'],
},
{
name: 'Chromium',
events: require('../lib/events').Events,
missingCoverage: [],
},
];

describe(product, () => {
testRunner.loadTests(require('./playwright.spec.js'), {
product,
playwrightPath: utils.projectRoot(),
testRunner,
});
if (process.env.COVERAGE) {
const api = require('../lib/api');
const filteredApi = {};
Object.keys(api).forEach(name => {
if (products.some(p => name.startsWith(p)) && !name.startsWith(product))
return;
filteredApi[name] = api[name];
const browserNames = BROWSER_CONFIGS.map(config => config.name);

for (const browserConfig of BROWSER_CONFIGS) {
if (process.env.BROWSER !== browserConfig.name.toLowerCase() && process.env.BROWSER !== 'all')
continue;
const product = browserConfig.name;
describe(product, () => {
testRunner.loadTests(require('./playwright.spec.js'), {
product,
playwrightPath: utils.projectRoot(),
testRunner,
});
utils.recordAPICoverage(testRunner, filteredApi, events, missingCoverage);
}
});
if (process.env.COVERAGE) {
const api = require('../lib/api');
const filteredApi = {};
Object.keys(api).forEach(apiName => {
if (browserNames.some(browserName => apiName.startsWith(browserName)) && !apiName.startsWith(product))
return;
filteredApi[apiName] = api[apiName];
});
utils.recordAPICoverage(testRunner, filteredApi, browserConfig.events, browserConfig.missingCoverage);
}
});
}

if (process.env.CI && testRunner.hasFocusedTestsOrSuites()) {
console.error('ERROR: "focused" tests/suites are prohibited on bots. Remove any "fit"/"fdescribe" declarations.');
Expand Down

0 comments on commit 071ee06

Please sign in to comment.