run-tests.js 1.24 KB
Newer Older
wuhao's avatar
wuhao committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
/* eslint-disable @typescript-eslint/no-var-requires */
const { spawn } = require("child_process");
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",
  ["run", "serve"],
  {
    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("Serving your umi project!") >= 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",
      ["run", "playwright"],
      {
        stdio: "inherit",
      }
    );
    testCmd.on("exit", (code) => {
      console.log(code);
      startServer.kill();
      process.exit(code);
    });
  }
});