import { defineConfig } from "vitest/config"; // 三组测试,按 groupOrder 依次跑: // unit —— 纯内存、无 PG,文件并行; // pg —— 真实 PG、假引擎(每文件独立 schema),文件并行; // serial —— 起真实引擎 / worker / 后台循环 / 子进程的集成与 e2e,文件级串行。并发跑时 worker、轮询、迁移 // 互相抢 CPU 与连接,会把"入库→状态推进"这类时序拉长到超时,串行让每个文件拿到稳定的时序预算。 // 新测试缺省进 pg;起真实 worker / 引擎 / 子进程的加进 SERIAL;确认不碰 PG 的加进 UNIT。 // 并行文件数受开发库连接数约束(max_connections 100,每个 harness 连接池 5–10):MAX_WORKERS 别随手调大。 const UNIT = [ "test/api-registry.test.ts", "test/organize-in-place-verify.test.ts", "test/file-manager/preview-parse.test.ts", "test/search/work-match.test.ts", "test/auth.test.ts", "test/health.test.ts", "test/sources-identity/identity-differential.test.ts", "test/sources-identity/enrich-sources.test.ts", "test/invoke-limits.test.ts", "test/logger.test.ts", "test/mapping-compat.test.ts", "test/modules.test.ts", "test/sse.test.ts", "test/static.test.ts", ]; const SERIAL = [ // 起真实沙箱子进程(内存 / 超时强杀) "test/sandbox/**", "test/e2e/**/*.test.ts", "test/auth-settings/admin-api.test.ts", "test/auth-settings/engine-retry.test.ts", "test/auth-settings/sse-pg.test.ts", "test/system/**/*.test.ts", "test/search/search.test.ts", "test/search/two-stage-search.test.ts", "test/worker-lanes.test.ts", "test/preflight.test.ts", "test/bootstrap.test.ts", ]; const MAX_WORKERS = 6; export default defineConfig({ test: { // 建/删 schema 在一把咨询锁上排队(withSchemaLock),迁移 + 引擎 schema 在负载下可能超过缺省 10s hookTimeout: 120_000, teardownTimeout: 60_000, maxWorkers: MAX_WORKERS, projects: [ { extends: true, test: { name: "unit", include: UNIT } }, { extends: true, test: { name: "pg", include: ["test/**/*.test.ts"], exclude: [...UNIT, ...SERIAL], // 迁移类用例在用例体里建 schema + 迁移,并行时排队等同一把锁,缺省 5s 不够 testTimeout: 60_000, sequence: { groupOrder: 1 }, }, }, { extends: true, test: { name: "serial", include: SERIAL, fileParallelism: false, sequence: { groupOrder: 2 }, }, }, ], }, });