2026-05-26 22:11:21 +08:00
|
|
|
import { defineConfig } from "vite-plus";
|
2026-05-28 10:04:54 +08:00
|
|
|
import vueJsx from "@vitejs/plugin-vue-jsx";
|
2026-05-26 22:11:21 +08:00
|
|
|
|
|
|
|
|
export default defineConfig({
|
2026-05-28 10:04:54 +08:00
|
|
|
plugins: [vueJsx()],
|
2026-05-26 22:11:21 +08:00
|
|
|
test: {
|
2026-05-28 10:04:54 +08:00
|
|
|
include: ["integration/pty/**/*.test.{ts,tsx}"],
|
2026-05-29 11:28:36 +08:00
|
|
|
// node-pty requires child_process.fork(), not worker_threads, so the pool
|
|
|
|
|
// MUST be "forks". Each test spawns its own isolated PTY subprocess (no
|
|
|
|
|
// shared ports/files/global state), so test files parallelize safely across
|
|
|
|
|
// forked workers — ~3x faster than serial (the PTY suite is the CI's
|
|
|
|
|
// wall-clock bottleneck). testTimeout stays generous (15s vs ~2s slowest
|
|
|
|
|
// test) to absorb CPU contention on smaller CI runners.
|
|
|
|
|
pool: "forks",
|
2026-05-29 14:50:09 +08:00
|
|
|
// Files parallelize across forked workers (~3x faster than serial — the PTY
|
|
|
|
|
// suite is the CI bottleneck). Tests within a file run SERIALLY: many of
|
|
|
|
|
// these assert timing-sensitive render/commit counts driven by the ~32ms
|
|
|
|
|
// commit throttle, and in-file concurrency starves them of wall-clock on a
|
|
|
|
|
// 4-core CI runner (it passes on higher-core dev machines, which is the
|
|
|
|
|
// trap). File-level parallelism is the proven, stable win.
|
2026-05-29 11:28:36 +08:00
|
|
|
fileParallelism: true,
|
2026-05-27 01:03:40 +08:00
|
|
|
testTimeout: 15000,
|
2026-05-29 14:54:16 +08:00
|
|
|
// CI:"false" so the runner's CI=true doesn't flip interactive detection off
|
|
|
|
|
// for any in-process render tests under this config (the PTY child helpers
|
|
|
|
|
// set it per-spawn, but vitest-level tests need it too).
|
|
|
|
|
env: { FORCE_COLOR: "3", CI: "false" },
|
2026-05-26 22:11:21 +08:00
|
|
|
},
|
|
|
|
|
});
|