# Testing Guide ## Test layers 项目当前采用四层测试结构: ### 1. 静态检查 - `pnpm check` - `pnpm build` - `go build ./...` 用于保证类型、打包和 Go 媒体服务编译可通过。 ### 2. 单元测试 - `pnpm test` 当前覆盖: - Node/tRPC 路由输入校验与权限检查 - 媒体工具函数,例如录制时长格式化与码率选择 ### 3. Go 媒体服务测试 - `pnpm test:go` 当前覆盖: - `media/health` - 会话创建与状态聚合 - 归档流程的基础回放产物生成 ### 4. 浏览器 E2E - `pnpm test:e2e` 使用 Playwright。为保证稳定性: - 启动本地测试服务器 `pnpm dev:test` - 通过路由拦截模拟 tRPC 和 `/media` 接口 - 注入假媒体设备、假 `MediaRecorder` 和假 `RTCPeerConnection` 这样可以自动验证前端主流程,而不依赖数据库、真实摄像头权限和真实 WebRTC 网络环境。 ## Unified verification 一次性执行全部自动验证: ```bash pnpm verify ``` 执行顺序: 1. `pnpm check` 2. `pnpm test` 3. `pnpm test:go` 4. `pnpm build` 5. `pnpm test:e2e` ## Local browser prerequisites 首次运行 Playwright 前执行: ```bash pnpm exec playwright install chromium ``` ## Notes - E2E 目前验证的是“模块主流程是否正常”,不是媒体编码质量本身 - 若需要真实录制验证,可额外用本地 Chrome 和真实摄像头做手工联调 - 若 `pnpm test:e2e` 失败,优先检查: - `PORT=3100` 是否被占用 - 浏览器依赖是否安装 - 前端路由或测试标识是否被改动