import path from "path"; import { fileURLToPath } from "url"; import { defineConfig } from "vitest/config"; const rootDir = path.dirname(fileURLToPath(new URL(import.meta.url))); const alias = { "@": rootDir }; const esbuild = { jsx: "automatic" as const }; export default defineConfig({ resolve: { alias }, esbuild, test: { projects: [ { resolve: { alias }, esbuild, test: { name: "unit", environment: "node", include: ["tests/unit/**/*.test.ts", "tests/*.test.ts"], }, }, { resolve: { alias }, esbuild, test: { name: "integration", environment: "node", include: ["tests/integration/**/*.test.{ts,tsx}"], // One shared test database. Files run sequentially (never in parallel) // but each in its own worker, so every file gets a fresh database // connection and truncation between tests never races another file. fileParallelism: false, globalSetup: ["tests/helpers/global-db-setup.ts"], setupFiles: ["tests/helpers/integration-setup.ts"], hookTimeout: 60_000, testTimeout: 30_000, }, }, { resolve: { alias }, esbuild, test: { name: "component", environment: "jsdom", include: ["tests/component/**/*.test.{ts,tsx}"], setupFiles: ["tests/helpers/component-setup.ts"], }, }, ], }, });