48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
/* eslint-disable no-console */
 | 
						|
const { spawn } = require('child_process');
 | 
						|
const { kill } = require('cross-port-killer');
 | 
						|
 | 
						|
const env = Object.create(process.env);
 | 
						|
env.BROWSER = 'none';
 | 
						|
env.TEST = true;
 | 
						|
// 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);
 | 
						|
    });
 | 
						|
  }
 | 
						|
});
 |