Testing Guide
面向开发者和 AI Agent 的当前测试参考手册。
测试结构
OpenCLI 当前测试主要分成四类:
| 类别 | 位置 | 当前规模 | 主要用途 |
|---|---|---|---|
| 单元测试 | src/**/*.test.ts | 60 | 核心运行时、命令层、浏览器桥、输出、插件、诊断 |
| E2E 测试 | tests/e2e/*.test.ts | 11 | 真实 CLI 入口、公开站点、浏览器命令、管理命令、输出格式 |
| 烟雾测试 | tests/smoke/*.test.ts | 1 | 外部 API 与注册完整性健康检查 |
| 步骤级测试 | src/pipeline/steps/*.test.ts | 已包含在单元测试内 | pipeline step 行为与边界情况 |
当前仓库里没有独立的 clis/**/*.test.{ts,js} adapter 测试树。adapter 相关验证主要分布在:
tests/e2e/src/commanderAdapter.test.tssrc/registry.test.tssrc/execution.test.tssrc/validate.ts/opencli validate
本地默认策略
本地默认跑最小充分验证,不要先跑全量。
推荐顺序:
- 改动命令文案、输出格式、参数解析:
- 跑对应单元测试
- 跑一条真实 CLI 命令做 spot check
- 改动 adapter 发现、注册、验证逻辑:
- 跑
src/registry.test.ts - 跑
src/execution.test.ts - 跑
opencli validate
- 跑
- 改动 browser / daemon / runtime:
- 跑对应
src/*test.ts - 必要时补一条
tests/e2e/*或手动opencli browser ...验证
- 跑对应
- 改动共享底层、跨多个模块、或 merge 前需要更高信心:
- 再扩大到
npm test
- 再扩大到
常用命令
bash
# 类型检查
npx tsc --noEmit
# 编译产物
npm run build
# 跑一个目标测试文件
npx vitest run src/<target>.test.ts
# 全量 vitest projects
npm run test:all
# E2E
npm run test:e2e
# 适配器注册 / schema 校验
node dist/src/main.js validate如果你明确要跑 adapter project,也可以执行:
bash
npm run test:adapter当前 E2E 文件
当前 tests/e2e/ 包含:
browser-auth.test.tsbrowser-public.test.tscli.test.tsextension-bridge.test.tsformats.test.tslist.test.tsmanagement.test.tspublic-commands.test.tsrecovery.test.tsremote-chrome.test.tstab-targeting.test.ts
如果这个列表变化,以仓库文件为准:
bash
find tests/e2e -name '*.test.ts' | sort当前值得优先覆盖的区域
以下改动最容易引入回归:
src/cli.tssrc/commanderAdapter.tssrc/discovery.tssrc/execution.tssrc/runtime.tssrc/daemon.tssrc/plugin.tssrc/external.tssrc/pipeline/**
这类改动优先补:
- 精准单元测试
- 一条真实 CLI 验证路径
- 必要时再扩大到
npm test
手动验证建议
文档或命令面改动后,优先做 2 到 4 条真实命令 spot check,例如:
bash
node dist/src/main.js --help
node dist/src/main.js list --format json
node dist/src/main.js plugin --help
node dist/src/main.js doctor --help浏览器相关改动再补:
bash
node dist/src/main.js browser --help
node dist/src/main.js browser tab listCI 角色
CI 负责更大范围的回归信心,本地负责最快闭环。
适合交给 CI 的内容:
- 更大的命令面回归
- 多环境差异
- E2E 稳定性
- smoke 检查
适合本地优先做的内容:
- 参数解析
- 输出格式
- 注册与发现
- 文档相关命令行为
- 共享模块的小范围回归
更新这份文档的规则
当以下任一项变化时,顺手更新此页:
tests/e2e/文件列表- 默认本地测试命令
package.json测试脚本- 共享运行时的高风险模块