86 lines
2.7 KiB
JavaScript
86 lines
2.7 KiB
JavaScript
import { defineConfig } from "vitest/config";
|
|
import react from "@vitejs/plugin-react";
|
|
|
|
export default defineConfig({
|
|
plugins: [
|
|
react({ jsxRuntime: "automatic" }),
|
|
// Transform CSS imports to empty modules to avoid jsdom parsing errors
|
|
{
|
|
name: "css-mock",
|
|
load(id) {
|
|
if (id.endsWith(".css")) {
|
|
return "export default {};";
|
|
}
|
|
},
|
|
},
|
|
],
|
|
esbuild: {
|
|
target: "node18",
|
|
jsx: "automatic",
|
|
loader: "tsx",
|
|
include: /\.[jt]sx?$/,
|
|
exclude: [/node_modules/],
|
|
},
|
|
test: {
|
|
environment: "jsdom",
|
|
setupFiles: ["./vitest.setup.ts"],
|
|
include: [
|
|
"tests/components/**/*.test.{js,jsx,ts,tsx}",
|
|
"tests/contexts/**/*.test.{js,jsx,ts,tsx}",
|
|
"tests/pages/**/*.test.{js,jsx,ts,tsx}",
|
|
"tests/utils/**/*.test.{js,jsx,ts,tsx}",
|
|
"tests/unit/**/*.test.{js,jsx,ts,tsx}",
|
|
],
|
|
exclude: ["tests/e2e/**/*.spec.{js,jsx,ts,tsx}"],
|
|
// Disable CSS processing in tests to avoid jsdom parsing errors with Tailwind v4
|
|
// Tailwind classes are still available via JIT compilation
|
|
css: false,
|
|
coverage: {
|
|
provider: "v8",
|
|
reporter: ["text", "lcov"],
|
|
include: [
|
|
"app/**/*.{js,jsx,ts,tsx}",
|
|
"lib/**/*.{js,jsx,ts,tsx}",
|
|
"!**/*.test.{js,jsx,ts,tsx}",
|
|
"!**/*.spec.{js,jsx,ts,tsx}",
|
|
"!**/node_modules/**",
|
|
"!**/tests/**",
|
|
],
|
|
exclude: [
|
|
"**/node_modules/**",
|
|
"**/tests/**",
|
|
"**/*.test.{js,jsx,ts,tsx}",
|
|
"**/*.spec.{js,jsx,ts,tsx}",
|
|
"**/coverage/**",
|
|
"**/.next/**",
|
|
"**/dist/**",
|
|
"**/build/**",
|
|
],
|
|
// Global thresholds intentionally removed to prioritize simplicity
|
|
// over strict coverage gating. Use reports for guidance instead.
|
|
enabled: !(typeof process !== "undefined" && process.env.CI),
|
|
},
|
|
pool: "threads", // Use threads for better performance
|
|
testTimeout: 60000, // 60s timeout for all tests
|
|
hookTimeout: 60000, // 60s timeout for hooks
|
|
teardownTimeout: 60000, // 60s timeout for teardown
|
|
// Conservative settings for stability
|
|
maxConcurrency: 1, // Single test at a time to avoid resource contention
|
|
maxThreads: 1, // Single thread to avoid resource contention
|
|
minThreads: 1, // Minimum threads
|
|
retry: 0, // No retries to avoid masking issues
|
|
// Stability measures
|
|
isolate: true, // Enable isolation for better test stability
|
|
passWithNoTests: true, // Don't fail if no tests found
|
|
// Timeout settings
|
|
workerTimeout: 120000, // 2min for worker timeout
|
|
poolTimeout: 120000, // 2min for pool timeout
|
|
// Optimize dependencies
|
|
server: {
|
|
deps: {
|
|
inline: ["@testing-library/jest-dom"], // Inline testing library
|
|
},
|
|
},
|
|
},
|
|
});
|