const { readdirSync, statSync } = require('fs'); const { join } = require('path'); const execa = require('execa'); const exampleDirs = readdirSync(__dirname) .map(dir => join(__dirname, dir)) .filter(dir => statSync(dir).isDirectory()); const config = { stdio: 'inherit', shell: true }; // run npm install in parallel async function install(dir) { await execa('npm install', { cwd: dir, ...config }); // override the package version of axe-core with the local version. // this allows the examples to stay examples while allowing us to // test them against our changes return await execa('npm install --no-save file:..\\/..\\/..\\/', { cwd: dir, ...config }); } // run tests synchronously so we can see which one threw an error function test(dir) { return execa('npm test', { cwd: dir, ...config }); } Promise.all(exampleDirs.map(install)) .then(async () => { for (const dir of exampleDirs) { await test(dir); } // Return successful exit process.exit(); }) .catch(err => { console.error(err); process.exit(1); });