该技能旨在帮助开发者在 OpenCode 项目中编写和维护 Playwright 端到端测试。它基于 packages/app/e2e 目录下的测试实践,提供了关于测试结构、运行模式、模拟 API、隔离原则、性能优化和避免 CI 不稳定的详细指导。
用途:
- 编写、修改、审查或调试 Playwright 端到端测试,包括回归保护测试和用户故事测试。
主要能力:
- 解释测试运行环境:无 OpenCode 后端,使用 in-memory mock 模拟 API;每个分片运行
bun --cwd packages/app test:e2e:built --shard=<n>/2,启动 Bun 静态服务器于 127.0.0.1:${PLAYWRIGHT_PORT ?? 3000}。 - 提供测试辅助工具:mockWorkspace、openSession、openDraft、openWorktreeDraft、mockRemoteServer、openSettings、setupTimeline、mockServers、seed、holdRoute 等。
- 强调测试隔离:每个测试获得新的 context、mock handler 和 init 脚本;禁止共享状态、beforeAll、serial mode、test.extend 或 worker fixtures(除 e2e/service-worker 外)。
- 性能优化建议:避免不必要的 goto/reload,使用 UI 或事件推进状态;使用 RegExp 或 query-aware glob 匹配路由;避免使用 stress fixture 除非规模是契约;使用 page.clock 控制时间。
- 提供竞态条件处理:等待最终挂载状态、避免 hover 时滚动、使用 polled reads、处理模态框提前打开、注意快捷键守卫、字体探测、使用 harness 信号等。
- 调度与重试:解释项目拆分、分片逻辑、worker 选项、重试成本、超时设置。
使用方式:
- 阅读 packages/app/e2e/AGENTS.md 和 packages/app/AGENTS.md 的 Tests 部分。
- 从 packages/app 运行:
bun run test:e2e:built -- e2e/regression/<file>.spec.ts(构建模式)。 - 使用空闲端口(如 PLAYWRIGHT_PORT=4310)。
- 重复测试:
--repeat-each=10 --workers=5 --retries=0 -g "<title>",并可用 PLAYWRIGHT_FULLY_PARALLEL=1 验证顺序无关性。 - 模拟 Windows 时序:延迟资源响应(0.6-1.5s)。
- 提交前运行 typecheck:e2e,并确保新增测试不增加错误。
适用场景:
- OpenCode 项目的端到端测试开发与维护。
- CI 中测试不稳定问题的调试。
- 需要理解测试运行模式、模拟机制和性能优化的场景。
限制:
- 仅适用于 packages/app/e2e 目录下的 Playwright 测试。
- 需要遵循 AGENTS.md 中的约定。
- 部分行为(如 Windows 竞态)难以本地复现。
- 本地 macOS 快捷键测试可能失败,需在 Linux 或 CI 验证。
- 未提及收费、价格或平台支持等额外信息。