Automate E2E Tests
本技能将已验证的行为转化为可持续的回归覆盖,使用项目的 E2E、集成、契约或移动测试框架。这是一个通用起始技能;项目团队应运行 setup-task-to-pr,用确切的路径、命令、夹具、认证、设备设置和 CI 规则来丰富它。
何时不使用
- 仅用于手动 QA、截图、视频或验证报告时不要使用。使用 test-feature。
- 除非用户要求套件维护,否则不要用于广泛的易波动套件修复或跳过审计。
- 当单元、组件、API、解析器、验证器或契约测试是更好的覆盖级别时不要使用。
- 不要为仅文档或没有用户可观察行为的内部重构添加 E2E 测试。
输入
在编辑测试之前,阅读:
- 需求或工单。
- 实现差异。
- 来自 test-feature 或配置的测试技能的功能验证报告(如存在)。
- 现有的 E2E 配置、规范、夹具和辅助工具。
- 项目测试说明。
发现常见框架:
rg --files -g 'playwright.config.' -g 'cypress.config.' -g 'wdio.conf.' -g 'nightwatch.conf.' -g 'detox.config.' -g 'maestro.yaml' -g '.maestro/**' -g 'package.json' -g 'pom.xml' -g 'build.gradle' find . -maxdepth 4 -type d ( -name e2e -o -name cypress -o -name playwright -o -name specs -o -name tests -o -name maestro ) 2>/dev/null | sort
如果不存在 E2E 框架,未经用户批准不要引入。记录覆盖缺口并建议最小可行的框架选择。
覆盖决策
在以下情况下添加或更新 E2E 覆盖:
- 受保护的是认证、路由、浏览器/移动 UI、持久化、实时行为、支付、入门、结账、权限或多服务集成。
- 核心用户旅程发生了变化。
- Bug 复现需要全栈回归测试。
- 项目已为同一表面有附近的 E2E 覆盖。
在以下情况下优先较低级别测试,并记录原因:
- 行为是纯计算、解析、验证、格式化或数据映射。
- 由于缺少必需的测试数据、认证或环境,E2E 设置会很脆弱。
- 已存在等效的 E2E 覆盖。
- 变更不是用户可观察的。
编写流程
- 从验证报告或需求中识别最小的可持续旅程。
- 在创建新文件前搜索现有规范:
rg -n "<route|feature words|button text|test id|domain term>" .
- 复用现有夹具、认证辅助、页面对象、种子数据、服务器设置、设备设置和测试工具。
- 当现有规范已拥有该行为时更新它。仅在最近的已建立 E2E 文件夹中创建新规范。
- 优先使用可访问的角色、标签和可见文本。仅当 UI 需要持久的测试契约时才添加稳定的测试选择器。
- 断言用户可见的结果和持久化状态。不要断言私有实现细节。
- 覆盖变更的快乐路径,并在实际可行时覆盖至少一个有意义的失败、边界或恢复路径。
- 保持测试确定性。避免宽泛的 sleep,除非现有套件有作用域内的稳定辅助且没有更好的信号。
表面指导
表面 | 指导 Web/PWA | 优先使用现有的 Playwright、Cypress、WebdriverIO 或框架特定的浏览器测试。复用认证存储和夹具设置。 原生移动 | 优先使用现有的 Appium、Detox、Maestro、XCUITest、Espresso 或项目模拟器/设备装置。不要发明设备设置。 API | 优先集成或契约测试而非浏览器 E2E,除非 UI 流程是需求的一部分。 桌面 | 使用项目已建立的桌面自动化装置。如果不存在,在添加工具前记录缺口。 Monorepo | 将测试放在应用旁边或已建立的跨应用 E2E 包中。
验证
首先运行最窄的聚焦命令。示例:
npx playwright test path/to/spec npx cypress run --spec path/to/spec npm run e2e -- path/to/spec pnpm e2e path/to/spec yarn e2e path/to/spec ./gradlew connectedAndroidTest xcodebuild test -scheme <scheme> -destination <destination> maestro test path/to/flow.yaml
使用项目已记录的命令。对于新的或明显变化的浏览器/移动规范,在实际可行时重复聚焦测试以捕获明显的波动。
仅当触及的辅助、夹具、设置代码或共享流程使聚焦运行不足时,才运行更广泛的 E2E 或 CI 等效检查。
失败处理
- 规范暴露产品缺陷:如果在范围内,修复产品,然后重新运行聚焦规范。
- 规范易波动:收紧选择器、设置、等待、数据隔离或断言。如果这变成广泛的套件修复,停止并报告任务已改变。
- 缺少夹具/认证/设备支持:如果安全,添加最窄的可复用支持;否则记录阻塞。
- 没有批准的 E2E 框架:在引入前询问。
- 环境不可用:在 PR/测试说明中记录确切的命令、错误和未验证的风险。
产物
成功产生以下之一:
- 新的或更新的 E2E 规范/流程。
- 当那是正确的回归层时,新的或更新的集成或契约测试。
- 该规范所需的窄范围夹具/辅助更新。
- 有记录的 E2E 覆盖例外及所用的替代覆盖。
报告确切的更改文件、运行的命令、通过/失败结果和剩余风险。
来源
来自 Supatest AI supa-skills automate-e2e-tests v1.0.1 的通用起始技能。在每个项目中运行 setup-task-to-pr 以创建本地丰富版本。
自我改进
如果此技能选择了错误的回归层、遗漏了项目测试框架或创建了脆弱的测试,在关闭之前修补此技能或配置的项目本地版本。