SuperAPI AI 工具集

app-e2e-tests

测试与质量

查看项目

更新于 10-20 18:50

技能介绍

该技能旨在帮助开发者在 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 验证。
  • 未提及收费、价格或平台支持等额外信息。