Reduce mock test flake on CI
This commit is contained in:
parent
62040e5c1a
commit
e41973c238
4 changed files with 41 additions and 3 deletions
|
@ -41,7 +41,7 @@
|
||||||
"test-electron": "node ts/scripts/test-electron.js",
|
"test-electron": "node ts/scripts/test-electron.js",
|
||||||
"test-release": "node ts/scripts/test-release.js",
|
"test-release": "node ts/scripts/test-release.js",
|
||||||
"test-node": "cross-env LANG=en-us electron-mocha --timeout 10000 --file test/setup-test-node.js --recursive test/modules ts/test-node ts/test-both",
|
"test-node": "cross-env LANG=en-us electron-mocha --timeout 10000 --file test/setup-test-node.js --recursive test/modules ts/test-node ts/test-both",
|
||||||
"test-mock": "mocha ts/test-mock/**/*_test.js",
|
"test-mock": "mocha --require ts/test-mock/setup-ci.js ts/test-mock/**/*_test.js",
|
||||||
"test-eslint": "mocha .eslint/rules/**/*.test.js --ignore-leaks",
|
"test-eslint": "mocha .eslint/rules/**/*.test.js --ignore-leaks",
|
||||||
"test-node-coverage": "nyc --reporter=lcov --reporter=text mocha --recursive test/modules ts/test-node ts/test-both",
|
"test-node-coverage": "nyc --reporter=lcov --reporter=text mocha --recursive test/modules ts/test-node ts/test-both",
|
||||||
"test-lint-intl": "ts-node ./build/intl-linter/linter.ts --test",
|
"test-lint-intl": "ts-node ./build/intl-linter/linter.ts --test",
|
||||||
|
|
|
@ -359,6 +359,12 @@ export class Bootstrap {
|
||||||
const { logsDir } = this;
|
const { logsDir } = this;
|
||||||
await fs.rename(logsDir, outDir);
|
await fs.rename(logsDir, outDir);
|
||||||
|
|
||||||
|
const page = await app?.getWindow();
|
||||||
|
if (process.env.TRACING) {
|
||||||
|
await page
|
||||||
|
?.context()
|
||||||
|
.tracing.stop({ path: path.join(outDir, 'trace.zip') });
|
||||||
|
}
|
||||||
if (app) {
|
if (app) {
|
||||||
const window = await app.getWindow();
|
const window = await app.getWindow();
|
||||||
const screenshot = await window.screenshot();
|
const screenshot = await window.screenshot();
|
||||||
|
|
|
@ -62,13 +62,20 @@ export class App extends EventEmitter {
|
||||||
SIGNAL_CI_CONFIG: this.options.config,
|
SIGNAL_CI_CONFIG: this.options.config,
|
||||||
},
|
},
|
||||||
locale: 'en',
|
locale: 'en',
|
||||||
timeout: 20 * SECOND,
|
timeout: 30 * SECOND,
|
||||||
});
|
});
|
||||||
|
|
||||||
// wait for the first window to load
|
// wait for the first window to load
|
||||||
await pTimeout(
|
await pTimeout(
|
||||||
(async () => {
|
(async () => {
|
||||||
const page = await this.privApp?.firstWindow();
|
const page = await this.getWindow();
|
||||||
|
if (process.env.TRACING) {
|
||||||
|
await page.context().tracing.start({
|
||||||
|
name: 'tracing',
|
||||||
|
screenshots: true,
|
||||||
|
snapshots: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
await page?.waitForLoadState('load');
|
await page?.waitForLoadState('load');
|
||||||
})(),
|
})(),
|
||||||
20 * SECOND
|
20 * SECOND
|
||||||
|
|
25
ts/test-mock/setup-ci.ts
Normal file
25
ts/test-mock/setup-ci.ts
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
// Copyright 2023 Signal Messenger, LLC
|
||||||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
import createDebug from 'debug';
|
||||||
|
|
||||||
|
import { Bootstrap } from './bootstrap';
|
||||||
|
|
||||||
|
const debug = createDebug('mock:test:setup-ci');
|
||||||
|
|
||||||
|
// Sadly, we can reduce flakiness in CI by launching the app once first
|
||||||
|
export async function mochaGlobalSetup(): Promise<void> {
|
||||||
|
if (!process.env.CI) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
debug('Launching app before running all tests');
|
||||||
|
const bootstrap = new Bootstrap();
|
||||||
|
await bootstrap.init();
|
||||||
|
const app = await bootstrap.link();
|
||||||
|
|
||||||
|
debug('Closing app before running all tests');
|
||||||
|
await app.close();
|
||||||
|
await bootstrap.teardown();
|
||||||
|
debug('Done');
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue