mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-25 11:28:51 +01:00
7535d63466
This script makes it easier to run an individual E2E test. In the past I've run individual scripts by editing `run-all.sh` manually, but now that can be done more easily with this script. It also allows setting the number of retries to use and the browser to use from the CLI. This script has been added as an npm script as well, called 'test:e2e:single'. The `run-all.sh` script was rewritten in JavaScript to make it easier to pass through a `--retries` argument. The default number of retries has been set to zero to make local testing easier. It has been set to 2 on CI. This was mainly done to consolidate the code used to run an E2E test in one place, to make later improvements easier.
58 lines
1.6 KiB
JavaScript
58 lines
1.6 KiB
JavaScript
const path = require('path');
|
|
const { promises: fs } = require('fs');
|
|
const yargs = require('yargs/yargs');
|
|
const { hideBin } = require('yargs/helpers');
|
|
const { runInShell } = require('../../development/lib/run-command');
|
|
const { exitWithError } = require('../../development/lib/exit-with-error');
|
|
|
|
async function main() {
|
|
const { argv } = yargs(hideBin(process.argv))
|
|
.usage(
|
|
'$0 [options]',
|
|
'Run all E2E tests, with a variable number of retries.',
|
|
(_yargs) =>
|
|
_yargs
|
|
.option('browser', {
|
|
description: `Set the browser used; either 'chrome' or 'firefox'.`,
|
|
type: 'string',
|
|
choices: ['chrome', 'firefox'],
|
|
})
|
|
.option('retries', {
|
|
description:
|
|
'Set how many times the test should be retried upon failure.',
|
|
type: 'number',
|
|
}),
|
|
)
|
|
.strict()
|
|
.help('help');
|
|
|
|
const { browser, retries } = argv;
|
|
|
|
const testDir = path.join(__dirname, 'tests');
|
|
const metamaskUiTest = path.join(__dirname, 'metamask-ui.spec.js');
|
|
|
|
const testFilenames = await fs.readdir(testDir);
|
|
const testPaths = testFilenames.map((filename) =>
|
|
path.join(testDir, filename),
|
|
);
|
|
const allE2eTestPaths = [...testPaths, metamaskUiTest];
|
|
|
|
const runE2eTestPath = path.join(__dirname, 'run-e2e-test.js');
|
|
|
|
const args = [runE2eTestPath];
|
|
if (browser) {
|
|
args.push('--browser', browser);
|
|
}
|
|
if (retries) {
|
|
args.push('--retries', retries);
|
|
}
|
|
|
|
for (const testPath of allE2eTestPaths) {
|
|
await runInShell('node', [...args, testPath]);
|
|
}
|
|
}
|
|
|
|
main().catch((error) => {
|
|
exitWithError(error);
|
|
});
|