Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
chore: upgrade to Mocha v8 (#5997)
* chore: upgrade to Mocha v8

Mocha v8 has some nice improvements and also unlocks the potential
to have parallel test runs which may speed up CI.
  • Loading branch information
jackfranklin committed Jun 18, 2020
1 parent 9522f80 commit 759b280
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 42 deletions.
5 changes: 3 additions & 2 deletions mocha-config/puppeteer-unit-tests.js
Expand Up @@ -18,9 +18,10 @@ const base = require('./base');

module.exports = {
...base,
file: ['./test/mocha-utils.js'],
require: ['./test/mocha-utils.js'],
spec: 'test/*.spec.js',
parallel: process.env.CI && !process.env.COVERAGE,
// retry twice more, so we run each test up to 3 times if needed.
retries: 2,
retries: process.env.CI ? 2 : 0,
timeout: 25 * 1000,
};
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -84,7 +84,7 @@
"expect": "^25.2.7",
"jpeg-js": "^0.3.7",
"minimist": "^1.2.0",
"mocha": "^7.1.1",
"mocha": "^8.0.1",
"ncp": "^2.0.0",
"pixelmatch": "^4.0.2",
"pngjs": "^5.0.0",
Expand Down
21 changes: 11 additions & 10 deletions test/coverage-utils.js
Expand Up @@ -102,16 +102,17 @@ const trackCoverage = () => {
clearOldCoverage();
const coverageMap = new Map();

before(() => {
const api = require('../lib/api');
const events = require('../lib/common/Events');
for (const [className, classType] of Object.entries(api))
traceAPICoverage(coverageMap, events, className, classType);
});

after(() => {
writeCoverage(coverageMap);
});
return {
beforeAll: () => {
const api = require('../lib/api');
const events = require('../lib/common/Events');
for (const [className, classType] of Object.entries(api))
traceAPICoverage(coverageMap, events, className, classType);
},
afterAll: () => {
writeCoverage(coverageMap);
},
};
};

module.exports = {
Expand Down
73 changes: 44 additions & 29 deletions test/mocha-utils.js
Expand Up @@ -140,7 +140,14 @@ global.describeChromeOnly = (...args) => {
if (isChrome) return describe(...args);
};

if (process.env.COVERAGE) trackCoverage();
let coverageHooks = {
beforeAll: () => {},
afterAll: () => {},
};

if (process.env.COVERAGE) {
coverageHooks = trackCoverage();
}

console.log(
`Running unit tests with:
Expand Down Expand Up @@ -176,31 +183,39 @@ exports.setupTestPageAndContextHooks = () => {
});
};

before(async () => {
const { server, httpsServer } = await setupServer();

state.puppeteer = puppeteer;
state.defaultBrowserOptions = defaultBrowserOptions;
state.server = server;
state.httpsServer = httpsServer;
state.isFirefox = isFirefox;
state.isChrome = isChrome;
state.isHeadless = isHeadless;
state.puppeteerPath = path.resolve(path.join(__dirname, '..'));
});

beforeEach(async () => {
state.server.reset();
state.httpsServer.reset();
});

after(async () => {
await state.server.stop();
state.server = null;
await state.httpsServer.stop();
state.httpsServer = null;
});

afterEach(() => {
sinon.restore();
});
exports.mochaHooks = {
beforeAll: [
async () => {
const { server, httpsServer } = await setupServer();

state.puppeteer = puppeteer;
state.defaultBrowserOptions = defaultBrowserOptions;
state.server = server;
state.httpsServer = httpsServer;
state.isFirefox = isFirefox;
state.isChrome = isChrome;
state.isHeadless = isHeadless;
state.puppeteerPath = path.resolve(path.join(__dirname, '..'));
},
coverageHooks.beforeAll,
],

beforeEach: async () => {
state.server.reset();
state.httpsServer.reset();
},

afterAll: [
async () => {
await state.server.stop();
state.server = null;
await state.httpsServer.stop();
state.httpsServer = null;
},
coverageHooks.afterAll,
],

afterEach: () => {
sinon.restore();
},
};

0 comments on commit 759b280

Please sign in to comment.