run-tests.js 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /* eslint-disable eslint-comments/disable-enable-pair */
  2. /* eslint-disable @typescript-eslint/no-var-requires */
  3. /* eslint-disable eslint-comments/no-unlimited-disable */
  4. const { spawn } = require('child_process');
  5. const { kill } = require('cross-port-killer');
  6. const env = Object.create(process.env);
  7. env.BROWSER = 'none';
  8. env.TEST = true;
  9. // flag to prevent multiple test
  10. let once = false;
  11. const startServer = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['start'], {
  12. env,
  13. });
  14. startServer.stderr.on('data', data => {
  15. // eslint-disable-next-line
  16. console.log(data.toString());
  17. });
  18. startServer.on('exit', () => {
  19. kill(process.env.PORT || 8000);
  20. });
  21. console.log('Starting development server for e2e tests...');
  22. startServer.stdout.on('data', data => {
  23. console.log(data.toString());
  24. // hack code , wait umi
  25. if (
  26. (!once && data.toString().indexOf('Compiled successfully') >= 0) ||
  27. data.toString().indexOf('Theme generated successfully') >= 0
  28. ) {
  29. // eslint-disable-next-line
  30. once = true;
  31. console.log('Development server is started, ready to run tests.');
  32. const testCmd = spawn(
  33. /^win/.test(process.platform) ? 'npm.cmd' : 'npm',
  34. ['test', '--', '--maxWorkers=1', '--runInBand'],
  35. {
  36. stdio: 'inherit',
  37. },
  38. );
  39. testCmd.on('exit', code => {
  40. startServer.kill();
  41. process.exit(code);
  42. });
  43. }
  44. });