MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / startPlainViteDev

Function startPlainViteDev

e2e/local/vite-dev-routing.test.ts:79–118  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

77}
78
79const startPlainViteDev = async (): Promise<ViteDev> => {
80 const dataDir = mkdtempSync(join(tmpdir(), "executor-local-vite-e2e-"));
81 const port = await freePort();
82 const origin = `http://127.0.0.1:${port}`;
83 const viteEntrypoint = join(localAppDir, "node_modules", "vite", "bin", "vite.js");
84 let logs = "";
85 const child = spawn(
86 "bun",
87 [viteEntrypoint, "dev", "--host", "127.0.0.1", "--port", String(port), "--strictPort"],
88 {
89 cwd: localAppDir,
90 env: { ...process.env, EXECUTOR_DATA_DIR: dataDir, PORT: String(port) },
91 stdio: ["ignore", "pipe", "pipe"],
92 detached: true,
93 },
94 );
95 child.stdout?.on("data", (chunk: Buffer) => {
96 logs += chunk.toString();
97 });
98 child.stderr?.on("data", (chunk: Buffer) => {
99 logs += chunk.toString();
100 });
101
102 try {
103 await waitForHttp(origin, { timeoutMs: 90_000 });
104 const token = await readToken(dataDir);
105 return {
106 origin,
107 token,
108 stop: async () => {
109 await stopTree(child);
110 rmSync(dataDir, { recursive: true, force: true });
111 },
112 };
113 } catch (error) {
114 await stopTree(child);
115 rmSync(dataDir, { recursive: true, force: true });
116 throw new Error(`plain Vite dev failed to boot:\n${logs}\n${String(error)}`);
117 }
118};
119
120scenario(
121 "Local Vite dev · local-only API routes match production routing",

Callers 1

Calls 5

waitForHttpFunction · 0.90
stopTreeFunction · 0.85
toStringMethod · 0.80
freePortFunction · 0.70
readTokenFunction · 0.70

Tested by

no test coverage detected