docs/archives/131-testing-redesign/architecture.md
把“必须手工看控制台才能发现的 UI 错误”变成自动化可拦截、可复现、可门禁的测试失败。
约束:
VCR_MODE=replay)console.error/warn、unhandledrejection、window error 都应 fail 测试pageerror、console error/warn 都应 fail 测试packages/ui/tests/utils/error-detection.tspackages/ui/tests/setup.ts 中启用:
console.error / console.warn:默认 fail(支持 ignore patterns)window.onerror / unhandledrejection:默认 failtests/e2e/fixtures.ts./fixtures 导出 { test, expect }:
page.on('pageerror')page.on('console') 的 error/warn让“依赖外部 LLM 服务”的测试在 CI 中强制离线(replay),并在需要时可录制更新 fixtures(record)。
packages/core/tests/utils/vcr.ts:VCR 模式与 fixtures 读写
VCR_MODE=record|replay|auto|offENABLE_REAL_LLM=true / RUN_REAL_API=1 控制是否允许真实 APIpackages/core/tests/utils/llm-mock-service.ts:MSW handlers(Node 侧拦截)packages/core/tests/setup.js:在 core 测试中按环境变量决定是否启用 MSWpnpm test:replay(严格、不可访问网络)pnpm test:replay 或 pnpm testpnpm test:record(显式启用真实 API)门禁脚本的目标是:
推荐拆分:
pnpm test:gate:pre-commit 运行的 fast gatepnpm test:gate:full:CI 或本地手动运行(含 E2E/视觉回归等更重的用例)