import { spawn, type ChildProcess } from 'child_process'; import waitOn from 'wait-on'; import debug from 'debug'; const dbg = debug('test-card:utils'); const SERVER_PORT = 5888; let devServer: ChildProcess; export async function startDevServer(): Promise { return new Promise((resolve, reject) => { dbg('Starting dev server on http://localhost:%d...', SERVER_PORT); devServer = spawn( 'npm', ['run', 'dev', '--', '--host', 'localhost', '--port', String(SERVER_PORT)], { stdio: 'pipe', shell: true } ); // Wait until SvelteKit dev server responds waitOn( { resources: [`http://localhost:${SERVER_PORT}`], timeout: 30000 }, (err) => { if (err) reject(err); else resolve(); } ); dbg('Dev server started'); }); } export async function stopDevServer(): Promise { if (devServer) { dbg('Stopping dev server...'); devServer.kill('SIGTERM'); } }