SuperAPI AI 工具集

migrate-to-e2e

测试与质量

查看项目

更新于 10-16 11:29

技能介绍

用途

migrate-to-e2e 是一个迁移技能,用于把已有的端到端测试套件逐步搬到 e2e 运行器上。它不追求一次完成,而是按会话推进:每次只移植一个切片(one slice),证明它通过,并让新旧两套套件同时保持绿色——旧运行器保留它原有的全部测试,新 e2e 测试在其旁边通过。进度文件 MIGRATION.md 记录哪些已迁移、哪些剩余及原因,供下一次会话(无论是否由同一个智能体执行)接着做。旧测试何时退出由用户决定。

主要能力

  • 识别源运行器:通过配置文件和依赖检测 Playwright、Cypress、Selenium、Detox、Maestro,并对应到相应的迁移指南和引擎(web 或 mobile)。
  • WebdriverIO 和 Appium 没有专门指南,但可用 Selenium 指南映射其 WebDriver 调用,用 Detox 和 Maestro 指南映射 Appium 的设备命令,结果会被明确告知为部分映射。
  • 维护 MIGRATION.md 进度文件,逐文件(或逐测试)记录状态、断言数量(源 → e2e)、通过情况和备注。
  • 构建测试脚手架(harness):配置、应用启动和一条绿色冒烟测试,每个平台或浏览器对应一个目标。
  • 逐切片移植:先移植共享辅助,再逐条翻译测试,保留标题并标注来源。
  • 验证严格度:e2e 断言数量不低于源套件清单,每个源断言都有对应 e2e 断言,不弱化断言、不无故放宽超时、不为通过而删步骤。
  • 双套件并行运行:在用户确认前,已移植测试仍保留在旧套件中;CI 中两套运行器可并存,但不会同时驱动同一设备。

使用方式

迁移遵循一套分步流程:

  1. 恢复或开始:查找 e2e 配置旁或仓库根目录的 MIGRATION.md,存在则按进度文件继续,否则视为首次会话。
  2. 清点套件(首次会话):确定源运行器、测试、共享代码、运行方式、e2e 存放位置,以及旧套件能否在此运行,并据此写出 MIGRATION.md。
  3. 构建脚手架(仅一次):没有 e2e 配置时运行 npx e2e init --yes。可询问用户 agent 步骤使用哪个模型并配置,纯字面移植不需要模型。移植 CI 任务的编排,复用仓库自身脚本。把最简单的源测试(通常是登录或启动)移植为冒烟测试。
  4. 选择切片:一个会话能跑绿的范围,通常 1 至 5 条测试,如一个文件、一个文件夹、一个标签或一个功能区域。把切片写入进度文件的 Next 段。
  5. 移植切片:先移植共享辅助(放在如 tests/support/ 下的普通 .ts 文件,而非 .e2e.ts),再逐条翻译测试。按指南表格逐字面翻译,每个源步骤对应一个 await 调用。
  6. 证明每个移植:在源覆盖的每个目标上运行(如 npx e2e run <file> --repeat-each 3),三次全过才算完成。
  7. 运行两套套件:已移植测试也保留在旧套件中;删源测试须用户确认后标记 retired。CI 中可并存,但两个运行器不同时驱动同一设备或模拟器。
  8. 维护进度文件:随做随更新,而非最后补。
  9. 交接:说明本次会话迁移了什么、证明了什么、被阻塞或保留的内容及原因、报告的缺口和下一个切片,并询问哪些已移植源测试可退役。

适用场景

  • 团队希望把 Playwright、Cypress、Selenium、Detox 或 Maestro 套件迁移到 e2e。
  • 需要渐进式、可中断、可接力的迁移,而非一次性重写。
  • 需要在新旧套件并行期间保持两套都绿,以降低风险。
  • 多平台(web 与 mobile)或多源运行器(一次迁移一个)的项目。

限制

  • WebdriverIO 和 Appium 没有专门迁移指南,映射为部分映射,需要告知用户。
  • 每个会话只做一个切片,不作一次性整体迁移。
  • 未经用户确认,不得删除或编辑源测试、辅助或旧运行器配置。
  • 指南标记为 missing 或 "No equivalent" 的步骤使用其变通方法;没有变通方法时测试留在旧运行器,并标注原因。
  • 只能基于仓库实际情况移植,进度文件中的每条命令至少要运行一次;无法在此运行的命令需在进度文件中注明。
  • 不得修改应用代码;需要测试 id 时应提出应用变更建议而非直接修改。
  • 不得把密钥放入测试、配置或进度文件。