import { defineConfig } from "vitest/config"; import { nodePolyfills } from "vite-plugin-node-polyfills"; import path from "path"; import { fileURLToPath } from "url"; const configDir = path.dirname(fileURLToPath(import.meta.url)); const projectRoot = path.resolve(configDir, ".."); export default defineConfig({ root: projectRoot, plugins: [ nodePolyfills({ include: ["buffer", "process", "util", "os", "crypto", "stream"], globals: { Buffer: true, process: true, global: true, }, }), ], resolve: { alias: { buffer: "buffer", process: "process/browser", util: "util", os: "os-browserify/browser", }, }, test: { globals: true, environment: "jsdom", maxWorkers: 1, minWorkers: 1, // Clear call history between tests but keep mock implementations from setup.ts // (mockReset/restoreMocks wipe vi.fn implementations and break shared mocks like getBackendUrl). clearMocks: true, mockReset: false, restoreMocks: false, setupFiles: ["src/test/setup.ts"], include: ["src/**/*.test.{ts,tsx}", "test/*.test.{ts,tsx}"], hookTimeout: 30000, testTimeout: 30000, coverage: { provider: "v8", include: ["src/**/*.{ts,tsx}"], exclude: [ "src/main.tsx", "src/vite-env.d.ts", "src/**/*.d.ts", "src/test/**", "src/__tests__/**", "src/**/__tests__/**", "src/**/*.test.{ts,tsx}", "src/**/types.ts", "src/**/types/*.ts", "src/types/**", ], reporter: ["text", "text-summary", "html", "lcov"], // thresholds: { // lines: 15, // statements: 15, // functions: 15, // branches: 12, // }, }, }, });