// Vitest 配置 // 依据:02-architecture-design.md §13 测试策略分层 import { defineConfig } from "vitest/config"; import react from "@vitejs/plugin-react"; import { resolve } from "node:path"; export default defineConfig({ plugins: [react()], resolve: { alias: { "@": resolve(__dirname, "./src"), }, }, test: { environment: "jsdom", globals: true, setupFiles: ["./src/test/setup.ts"], include: [ "src/**/*.{test,spec}.{ts,tsx}", "src/**/__tests__/**/*.{ts,tsx}", ], exclude: ["node_modules", ".next", "e2e"], coverage: { provider: "v8", reporter: ["text", "json", "html"], include: ["src/**/*.{ts,tsx}"], exclude: [ "src/**/*.d.ts", "src/test/**", "src/mocks/**", "src/types/**", "src/**/*.config.{ts,tsx}", // Next.js App Router pages:由 MSW 集成测试 + E2e 覆盖,不纳入单元测试覆盖率 "src/app/**/page.tsx", "src/app/**/layout.tsx", "src/app/**/providers.tsx", "src/app/**/error.tsx", "src/app/**/loading.tsx", "src/app/**/not-found.tsx", "src/app/api/**", // 可观测性 optional modules:依赖 optionalDependencies(@opentelemetry/*、web-vitals、axe-core) // 这些模块用 dynamic import 在运行时按需加载,单元测试不覆盖 "src/lib/observability/**", // PWA Service Worker 注册(生产环境 only) "src/components/WebVitalsInitializer.tsx", // Next.js middleware(Edge Runtime,单元测试不覆盖) "src/middleware.ts", // ErrorBoundary:React 渲染异常兜底,需 React Error Boundary 测试 harness "src/components/ErrorBoundary.tsx", ], thresholds: { statements: 85, branches: 75, functions: 85, lines: 85, }, }, }, });