Files
deerflow-code/frontend-web/scripts/test-auth-entry.mjs
T

35 lines
1.2 KiB
JavaScript

import { spawnSync } from "node:child_process";
import { createRequire } from "node:module";
import path from "node:path";
import { fileURLToPath } from "node:url";
const root = fileURLToPath(new URL("../", import.meta.url));
const require = createRequire(import.meta.url);
// Resolve Vite's installed dependency directly: pnpm does not expose a
// transitive esbuild binary in node_modules/.bin, and tests must run offline.
const viteRequire = createRequire(require.resolve("vite/package.json"));
const { build, stop } = viteRequire("esbuild");
const testNames = ["login-entry", "session-validation"];
const outputDirectory = path.join(root, ".runtime/unit-tests");
try {
await build({
absWorkingDir: root,
entryPoints: testNames.map((name) => `src/core/auth/${name}.test.ts`),
outdir: outputDirectory,
outExtension: { ".js": ".mjs" },
bundle: true,
platform: "node",
format: "esm",
});
} finally {
stop();
}
const result = spawnSync(process.execPath, ["--test", ...testNames.map((name) => path.join(outputDirectory, `${name}.test.mjs`))], {
cwd: root,
stdio: "inherit",
});
if (result.error) throw result.error;
process.exitCode = result.status ?? 1;