83 lines
2.0 KiB
JavaScript
83 lines
2.0 KiB
JavaScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
//@ts-check
|
|
|
|
const yaserver = require('yaserver');
|
|
const http = require('http');
|
|
const cp = require('child_process');
|
|
const path = require('path');
|
|
const { PORT } = require('./common');
|
|
const DEBUG_TESTS = process.argv.includes('--debug-tests');
|
|
|
|
const REPO_ROOT = path.join(__dirname, '../../');
|
|
|
|
yaserver
|
|
.createServer({
|
|
rootDir: REPO_ROOT
|
|
})
|
|
.then((staticServer) => {
|
|
const server = http.createServer((request, response) => {
|
|
return staticServer.handle(request, response);
|
|
});
|
|
server.listen(PORT, '127.0.0.1', async () => {
|
|
try {
|
|
await runTests();
|
|
console.log(`All good`);
|
|
process.exit(0);
|
|
} catch (err) {
|
|
console.error(err);
|
|
process.exit(1);
|
|
}
|
|
});
|
|
});
|
|
|
|
async function runTests() {
|
|
// uncomment to shortcircuit and run a specific combo
|
|
// await runTest('webpack', 'chromium'); return;
|
|
|
|
for (const type of ['amd', 'webpack']) {
|
|
await runTest(type, 'chromium');
|
|
await runTest(type, 'firefox');
|
|
await runTest(type, 'webkit');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param {string} type
|
|
* @param {'chromium'|'firefox'|'webkit'} browser
|
|
* @returns
|
|
*/
|
|
function runTest(type, browser) {
|
|
return new Promise((resolve, reject) => {
|
|
const env = { BROWSER: browser, TESTS_TYPE: type, ...process.env };
|
|
if (DEBUG_TESTS) {
|
|
env['DEBUG_TESTS'] = 'true';
|
|
}
|
|
const proc = cp.spawn(
|
|
'node',
|
|
[
|
|
path.join(REPO_ROOT, 'node_modules/mocha/bin/mocha'),
|
|
'test/smoke/*.test.js',
|
|
'--headless',
|
|
'--timeout',
|
|
'20000'
|
|
],
|
|
{
|
|
env,
|
|
stdio: 'inherit'
|
|
}
|
|
);
|
|
proc.on('error', reject);
|
|
proc.on('exit', (code) => {
|
|
if (code === 0) {
|
|
resolve();
|
|
} else {
|
|
reject(code);
|
|
}
|
|
});
|
|
});
|
|
}
|