import http from 'node:http'; import type { Express } from 'express'; export interface RunningTestServer { baseUrl: string; close: () => Promise; } export function startTestServer(app: Express): Promise { return new Promise((resolve, reject) => { const server = http.createServer(app); server.once('error', reject); server.listen(0, '127.0.0.1', () => { server.off('error', reject); const address = server.address(); if (typeof address !== 'object' || address === null) { server.close(); reject(new Error('Test server did not expose a listening address.')); return; } resolve({ baseUrl: `http://127.0.0.1:${address.port}`, close: () => new Promise((closeResolve, closeReject) => { server.close((error) => { if (error) { closeReject(error); return; } closeResolve(); }); }), }); }); }); }