测试与验证
Hover 的测试分层交付。把它们当作发布关卡来用。
单元测试 —— Vitest,按包运行
pnpm test # 在整个 workspace 中扇出运行
pnpm --filter @hover-dev/core test # 只跑单个包
测试放在 packages/*/tests/。保持 src/ 只含源码——不要把 *.test.ts 放进 src/。
集成 / 端到端 —— Playwright 自测(dogfooding)
晶化后的 spec 作为标准的 @playwright/test 运行——回路中没有 agent,只有保存下来的脚本。这正是晶化的意义所在:CI 运行纯粹的 Playwright,零 AI。用 BASE_URL 把一个 spec 指向任意环境。
手动端到端(回路中有 agent)
完整回路——agent 通过 MCP 驱动浏览器并晶化出一个 spec——靠手动执行:
- 把本地 MCP 添加到你的 agent(或用
pnpm --filter hover-dev package旁加载扩展)。 - 启动任意目标开发服务器(一个普通的 Vite / Next 等应用;其中不安装任何与 Hover 相关的东西)。
- 运行
/mcp__hover__test_app并驱动一条真实流程。
没有脚本化的 smoke 回路;手动端到端不属于 CI 的一部分。
验证策略
在把工作标记为就绪之前:
pnpm typecheck—— 扇出到每个包。pnpm test—— Vitest,扇出到每个含测试的包。pnpm build—— 确认每个包都能干净地构建。- 与所改动文件相匹配的手动端到端(MCP 运行或扩展旁加载)。
这套流程也正是发布工作流为一次发布设置的关卡。