前言¶
团队换测试栈时,常见做法是对照官方文档手工改定位器、等待和断言,再逐条跑通 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)。
五步工作流¶
- 识别源框架:根据用户描述或打开文件中的特征(如
By.id、page.getByRole、cy.visit、puppeteer.launch)判断 Selenium / Playwright / Puppeteer / Cypress;信息不足时向用户确认。 - 识别目标框架:从「to Playwright / to Selenium」等表述解析目标;只提到源框架时询问迁移目标。
- 识别语言:按源与目标组合提示语言变化(例如 Selenium Java/Python/C# 迁到 Playwright 通常需改写为 JS/TS);细节见
reference/overview.md的语言矩阵。 - 路由到 reference:在生成代码前始终读取上表中的匹配文件。
- 应用映射:按 reference 转换定位器、等待、操作、断言、setup/teardown;若用户在云上跑测,迁移后指向目标框架的云文档(TestMu)。
映射示例(来自 Skill 说明):By.id("x") 可转为 page.getByRole(...) 或 page.locator('#x')。
生成后的校验¶
迁移代码产出后,Skill 要求对照 reference 中的 Gotchas,并执行校验清单:
- 定位器、操作、断言均已按映射转换,无残留源框架 API。
- 生命周期与目标框架一致。
- 目标为 Playwright:使用 auto-wait 断言(如
expect(locator).toBeVisible()),避免裸waitForTimeout。 - 目标为 Cypress:不对
cy命令混用 async/await,保持链式写法。 - 目标为 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