import { mkdtemp, rm } from 'node:fs/promises'; import { spawn, spawnSync } from 'node:child_process'; import { tmpdir } from 'node:os'; import path from 'node:path'; const cwd = path.resolve('.next/standalone'); const directory = await mkdtemp(path.join(tmpdir(), 'portfolio-e2e-')); const port = process.env.PLAYWRIGHT_PORT || '43119'; const env = { ...process.env, DATA_DIR: directory, SITE_URL: `http://127.0.0.1:${port}`, HOSTNAME: '127.0.0.1', PORT: port, OWNER_EMAIL: 'e2e@example.com', OWNER_PASSWORD: 'Only-for-isolated-e2e-tests-2026' }; for (const command of ['import-legacy', 'create-owner']) { const result = spawnSync(process.execPath, ['maintenance.mjs', command], { cwd, env, stdio: 'inherit' }); if (result.status !== 0) { await rm(directory, { recursive: true, force: true }); process.exit(result.status || 1); } } const server = spawn(process.execPath, ['server.js'], { cwd, env, stdio: 'inherit' }); process.on('SIGTERM', () => server.kill()); process.on('SIGINT', () => server.kill()); server.on('exit', async code => { await rm(directory, { recursive: true, force: true }); process.exit(code || 0); });