test-framework-migration-skill:在 Selenium、Playwright、Puppeteer、Cypress 之间迁移 E2E 测试

前言

团队换测试栈时,常见做法是对照官方文档手工改定位器、等待和断言,再逐条跑通 CI。Selenium 的 WebDriverWait、Playwright 的 auto-wait、Cypress 的链式 cy.should 并不一一对应,生命周期(driver / page / launch)也容易漏改。下面介绍 TestMu AI 在 LambdaTest/agent-skills 仓库中提供的 test-framework-migration-skill:把「识别源框架与目标框架 → 查对照表 → 按映射改写」写成 Agent 可执行的固定流程,并附带各迁移方向的 reference 文档。

这是什么

test-framework-migration-skill 面向 AI 编码助手(如 Cursor、Claude Code、GitHub Copilot、Gemini CLI 等),在 Selenium、Playwright、Puppeteer、Cypress 四类 E2E 框架之间迁移、转换或移植测试脚本。Skill 元数据标明维护方为 TestMu AI,版本 1.0,许可证 MIT,分类为 e2e-testing,涉及语言包括 Java、Python、JavaScript、TypeScript、C#。

仓库路径:

https://github.com/LambdaTest/agent-skills/tree/main/test-framework-migration-skill

Agent 加载该 Skill 后,会按内置步骤扮演「资深 QA 自动化架构师」,在生成迁移代码前必须先阅读对应 reference/<source>-to-<target>.md,再应用 API 映射、生命周期调整与模式转换。

核心功能

支持的迁移方向

Skill 为以下 10 组「源 → 目标」各提供独立 reference 文件(双向组合覆盖四框架之间的主要切换):

源 → 目标 Reference 文件
Selenium → Playwright reference/selenium-to-playwright.md
Playwright → Selenium reference/playwright-to-selenium.md
Selenium → Puppeteer reference/selenium-to-puppeteer.md
Puppeteer → Selenium reference/puppeteer-to-selenium.md
Puppeteer → Playwright reference/puppeteer-to-playwright.md
Playwright → Puppeteer reference/playwright-to-puppeteer.md
Cypress → Playwright reference/cypress-to-playwright.md
Playwright → Cypress reference/playwright-to-cypress.md
Selenium → Cypress reference/selenium-to-cypress.md
Cypress → Selenium reference/cypress-to-selenium.md

若用户请求的框架对不在表中,Agent 应说明不支持,并建议最接近的已支持迁移(文档示例:后续可为 WebDriverIO 增加 reference)。

五步工作流

  1. 识别源框架:根据用户描述或打开文件中的特征(如 By.id、page.getByRole、cy.visit、puppeteer.launch)判断 Selenium / Playwright / Puppeteer / Cypress;信息不足时向用户确认。
  2. 识别目标框架:从「to Playwright / to Selenium」等表述解析目标;只提到源框架时询问迁移目标。
  3. 识别语言:按源与目标组合提示语言变化(例如 Selenium Java/Python/C# 迁到 Playwright 通常需改写为 JS/TS);细节见 reference/overview.md 的语言矩阵。
  4. 路由到 reference:在生成代码前始终读取上表中的匹配文件。
  5. 应用映射:按 reference 转换定位器、等待、操作、断言、setup/teardown;若用户在云上跑测,迁移后指向目标框架的云文档(TestMu)。

映射示例(来自 Skill 说明):By.id("x") 可转为 page.getByRole(...) 或 page.locator('#x')。

生成后的校验

迁移代码产出后,Skill 要求对照 reference 中的 Gotchas,并执行校验清单:

  1. 定位器、操作、断言均已按映射转换,无残留源框架 API。
  2. 生命周期与目标框架一致。
  3. 目标为 Playwright:使用 auto-wait 断言(如 expect(locator).toBeVisible()),避免裸 waitForTimeout。
  4. 目标为 Cypress:不对 cy 命令混用 async/await,保持链式写法。
  5. 目标为 Selenium:使用显式 WebDriverWait,不用 Thread.sleep。

延伸阅读与同级 Skill

需求 查阅位置
框架对比、何时迁移 reference/overview.md
完整迁移流程、调试表、CI/CD 检查项 reference/playbook.md
各框架 POM、云集成 同仓库的 playwright-skill、selenium-skill、puppeteer-skill、cypress-skill 及各自 reference/cloud-integration.md
TestMu 云能力(全框架) shared/testmu-cloud-reference.md

安装与启用

该 Skill 随 agent-skills 仓库分发。官方 README 要求:Node.js 与 npm(最新稳定版)、已安装的 AI 编码助手;若在 TestMu AI 云上执行测试,还需 TestMu AI 账号的 username 与 access key(环境变量 LT_USERNAME、LT_ACCESS_KEY)。完整步骤见 TestMu AI Agent Skills 文档。

在已具备 Node.js 的机器上,可用 agentskillsforall 从 GitHub 安装单个 Skill(与同仓库中 selenium-skill、playwright-skill 的安装方式一致):

npx agentskillsforall add https://github.com/LambdaTest/agent-skills.git --skill test-framework-migration-skill

浏览仓库内全部 Skill:

npx agentskillsforall list https://github.com/LambdaTest/agent-skills.git

README 亦提供克隆仓库后在本目录执行 npx agentskillsforall add 的方式;Cursor 等助手在 Skill 安装完成后,通过自然语言触发即可,无需额外配置文件名(以各助手对 Agent Skills 的加载机制为准)。

典型用法

Skill 的 description 声明了常见触发语:migrate、convert、port,以及 selenium to playwright、playwright to selenium、puppeteer to playwright、cypress to playwright、rewrite tests in、switch from [framework] to [framework] 等。在助手已启用该 Skill 的前提下,可直接描述迁移意图,并附上待改测试文件或片段。

示例(自然语言,与官方触发场景一致):

把当前打开的 Selenium Java 用例迁移到 Playwright TypeScript,保留原有断言语义。
Convert these Cypress tests to Playwright; files use cy.get and cy.visit.

信息不全时,Agent 会按 Skill 追问,例如:「当前测试在哪个框架(Selenium、Playwright、Puppeteer 或 Cypress)?」或「要迁移到 Playwright、Puppeteer、Cypress,还是换语言继续用 Selenium?」

经过上面的步骤,Agent 会先选定 reference/selenium-to-playwright.md(或对应路径),再按映射表改写定位器与等待策略,并在结束时对照 Validation Workflow 自检。

适用场景与注意

适合谁:维护多套 E2E 栈或计划从 Selenium / Cypress 等迁到 Playwright(或反向)的团队;希望减少「查 API 对照表 + 手工改生命周期」重复劳动的 QA 与开发。

语言与栈:元数据列出的五种语言与四框架组合在迁移时并不对称——例如 Selenium(Java/Python/C#)迁 Playwright 时,Skill 明确要求向用户说明 Playwright 侧通常为 JavaScript/TypeScript。具体矩阵以 reference/overview.md 为准。

限制:当前仅覆盖上述四框架与 10 条 reference 路径;不能替代在目标框架上的全量回归与 CI 调通。生成代码后仍需在本地或 CI 执行测试。云上执行需自行配置 TestMu 凭证与目标框架的云集成文档。

与纯聊天改代码的区别:该 Skill 强制「先读 reference、再映射、再 Gotchas/校验」,并把 playbook 与同级 framework skill 串起来,降低漏改等待策略或断言风格的风险。

结尾

test-framework-migration-skill 把跨框架迁移拆成可重复的检测、路由与映射步骤,并用成对的 reference 文档约束输出质量。若你正在 Selenium、Playwright、Puppeteer、Cypress 之间切换测试栈,可从官方目录安装并在对话中直接说明源与目标框架。

官方地址:https://github.com/LambdaTest/agent-skills/tree/main/test-framework-migration-skill

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜