mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-05-02 16:20:26 +00:00
- Add unit tests for 8 MCP advanced tool handlers (Phase 3) - Migrate test files from JavaScript to TypeScript (.ts/.tsx) - Restructure file paths from app/ to src/app/ across all tests - Refactor route assertions into reusable assertRouteMethods helper - Add tests for new API routes (compliance, audit-log, evals/[suiteId]) - Update barrel export tests to use consolidated assertion pattern
79 lines
2 KiB
JavaScript
79 lines
2 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { spawn } from "node:child_process";
|
|
import { setTimeout as delay } from "node:timers/promises";
|
|
|
|
const port = process.env.DASHBOARD_PORT || process.env.PORT || "20128";
|
|
const baseUrl = process.env.OMNIROUTE_BASE_URL || `http://localhost:${port}`;
|
|
const healthUrl = `${baseUrl}/api/monitoring/health`;
|
|
const maxWaitMs = Number(process.env.ECOSYSTEM_SERVER_WAIT_MS || 180000);
|
|
const pollMs = 2000;
|
|
|
|
async function isServerReady() {
|
|
const timeout = AbortSignal.timeout(2000);
|
|
try {
|
|
const res = await fetch(healthUrl, { signal: timeout });
|
|
return res.ok;
|
|
} catch {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
async function waitForServerReady() {
|
|
const maxAttempts = Math.ceil(maxWaitMs / pollMs);
|
|
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
|
|
if (await isServerReady()) {
|
|
return;
|
|
}
|
|
await delay(pollMs);
|
|
}
|
|
throw new Error(`Timed out waiting for ${healthUrl} after ${maxWaitMs}ms`);
|
|
}
|
|
|
|
async function main() {
|
|
let serverProcess = null;
|
|
let startedHere = false;
|
|
|
|
if (!(await isServerReady())) {
|
|
serverProcess = spawn(process.execPath, ["scripts/run-next-playwright.mjs", "dev"], {
|
|
stdio: "inherit",
|
|
env: process.env,
|
|
});
|
|
startedHere = true;
|
|
await waitForServerReady();
|
|
}
|
|
|
|
const vitestProcess = spawn(
|
|
process.execPath,
|
|
["./node_modules/vitest/vitest.mjs", "run", "tests/e2e/ecosystem.test.ts"],
|
|
{
|
|
stdio: "inherit",
|
|
env: process.env,
|
|
}
|
|
);
|
|
|
|
const exitCode = await new Promise((resolve) => {
|
|
vitestProcess.on("exit", (code, signal) => {
|
|
if (signal) {
|
|
resolve(1);
|
|
return;
|
|
}
|
|
resolve(code ?? 1);
|
|
});
|
|
});
|
|
|
|
if (startedHere && serverProcess) {
|
|
serverProcess.kill("SIGTERM");
|
|
await delay(1000);
|
|
if (!serverProcess.killed) {
|
|
serverProcess.kill("SIGKILL");
|
|
}
|
|
}
|
|
|
|
process.exit(exitCode);
|
|
}
|
|
|
|
main().catch((error) => {
|
|
console.error("[test:ecosystem] Failed:", error?.message || error);
|
|
process.exit(1);
|
|
});
|