You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
10 months ago
|
/* eslint-disable eslint-comments/disable-enable-pair */
|
||
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
||
|
/* eslint-disable eslint-comments/no-unlimited-disable */
|
||
|
const { spawn } = require('child_process');
|
||
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
||
|
const { kill } = require('cross-port-killer');
|
||
|
|
||
|
const env = Object.create(process.env);
|
||
|
env.BROWSER = 'none';
|
||
|
env.TEST = true;
|
||
|
env.UMI_UI = 'none';
|
||
|
env.PROGRESS = 'none';
|
||
|
// flag to prevent multiple test
|
||
|
let once = false;
|
||
|
|
||
|
const startServer = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['start'], {
|
||
|
env,
|
||
|
});
|
||
|
|
||
|
startServer.stderr.on('data', (data) => {
|
||
|
// eslint-disable-next-line
|
||
|
console.log(data.toString());
|
||
|
});
|
||
|
|
||
|
startServer.on('exit', () => {
|
||
|
kill(process.env.PORT || 8000);
|
||
|
});
|
||
|
|
||
|
console.log('Starting development server for e2e tests...');
|
||
|
startServer.stdout.on('data', (data) => {
|
||
|
console.log(data.toString());
|
||
|
// hack code , wait umi
|
||
|
if (
|
||
|
(!once && data.toString().indexOf('Compiled successfully') >= 0) ||
|
||
|
data.toString().indexOf('Theme generated successfully') >= 0
|
||
|
) {
|
||
|
// eslint-disable-next-line
|
||
|
once = true;
|
||
|
console.log('Development server is started, ready to run tests.');
|
||
|
const testCmd = spawn(
|
||
|
/^win/.test(process.platform) ? 'npm.cmd' : 'npm',
|
||
|
['test', '--', '--maxWorkers=1', '--runInBand'],
|
||
|
{
|
||
|
stdio: 'inherit',
|
||
|
},
|
||
|
);
|
||
|
testCmd.on('exit', (code) => {
|
||
|
startServer.kill();
|
||
|
process.exit(code);
|
||
|
});
|
||
|
}
|
||
|
});
|