/** * Build backend for E2E. Path from E2E_BACKEND_ROOT or sibling ../backend-nest. */ import { existsSync } from 'node:fs' import { dirname, join, resolve } from 'node:path' import { fileURLToPath } from 'node:url' import { spawnSync } from 'node:child_process' const scriptDir = dirname(fileURLToPath(import.meta.url)) const frontendRoot = join(scriptDir, '..') const defaultBackend = join(frontendRoot, '..', 'backend-nest') const backendRoot = resolve(process.env.E2E_BACKEND_ROOT ?? defaultBackend) if (!existsSync(join(backendRoot, 'package.json'))) { console.error( `E2E backend not found at ${backendRoot}. Set E2E_BACKEND_ROOT or clone per e2e/backend.contract.json.`, ) process.exit(1) } const result = spawnSync('npm', ['run', 'build'], { cwd: backendRoot, stdio: 'inherit', env: process.env, shell: process.platform === 'win32', }) process.exit(result.status ?? 1)