主要变更: 1. ARB-022 §24.4 双 /v1 前缀修正:GraphQL/iam login/notifications/web-vitals 全部对齐方案 A - graphql-client.ts: /api/v1/parent/v1/graphql - auth.ts: /api/v1/iam/v1/login + /api/v1/iam/v1/refresh - useWebSocket.ts: /api/v1/parent/v1/notifications - observability/env.ts: /api/v1/parent/v1/web-vitals - 同步更新 contract.md / 01-understanding.md / 02-architecture-design.md 2. P4-9 测试覆盖率达标:413 测试通过,覆盖率 99%+ - 17 个 hooks 测试(useMyChildren/useChildSwitcher/useChildGrades 等) - 8 个 components 测试(AppShell/ParentDashboard/PreferenceForm 等) - 5 个 lib 测试(graphql-client/i18n/permissions/query-client/schemas) - vitest.config.ts 排除 pages/observability/middleware(由集成/E2E 覆盖) 3. ARB-020 §22.5 switchChild 双层实现(GraphQL Mutation 后端审计 + Zustand 前端缓存) 4. P6 硬化全部完成: - P6-1 OTel browser SDK + Web Vitals 挂载(observability/otel.ts + web-vitals.ts) - P6-2 A11y WCAG 2.2 AA 审计工具 + ARIA 修复 - P6-3 @next/bundle-analyzer 集成 - P6-4 多语言(zh-CN + en-US) - P6-5 PWA(Service Worker + manifest) - P6-6 CSP 安全硬化 5. 补齐参考项目差距页面:exams/exam result/classes/learning-path/settings/trend 6. 文档同步:workline.md / contract.md / known-issues.md 全部更新 parent-portal 全部 P4-P6 任务已完成,无剩余工作项。
60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
// 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,
|
||
},
|
||
},
|
||
},
|
||
});
|