/* 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); }); } });