Checkpoint: v4.0 media service, compose deploy, and verified docs
这个提交包含在:
77
docs/testing.md
普通文件
77
docs/testing.md
普通文件
@@ -0,0 +1,77 @@
|
||||
# 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` 是否被占用
|
||||
- 浏览器依赖是否安装
|
||||
- 前端路由或测试标识是否被改动
|
||||
在新工单中引用
屏蔽一个用户