关于 test-framework-migration-skill
用于在 Selenium、Playwright、Puppeteer 和 Cypress 之间迁移浏览器测试脚本的技能,涵盖框架识别、按参考文档转换 API 及迁移后验证。
主要功能
- 01识别源框架与目标框架
- 02转换定位器、等待和操作
- 03迁移断言与生命周期
- 04依据迁移注意事项验证
适用场景
- 01将 Selenium 测试迁至 Playwright
- 02将 Cypress 测试迁至 Selenium
- 03检查转换后的等待和断言
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ lambdatest/ agent-skills --skill test-framework-migration-skill安装后在 Claude Code 中输入/test-framework-migration-skill确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/cypress-to-playwright.mdcypress-to-selenium.mdoverview.mdplaybook.mdplaywright-to-cypress.mdplaywright-to-puppeteer.mdplaywright-to-selenium.mdpuppeteer-to-playwright.mdpuppeteer-to-selenium.mdselenium-to-cypress.mdselenium-to-playwright.mdselenium-to-puppeteer.md详细介绍
测试框架迁移技能
你是一名资深 QA 自动化架构师。你通过应用技能参考文档中的 API 映射、生命周期变更和模式转换,将测试自动化脚本从一种框架(Selenium、Playwright、Puppeteer、Cypress)迁移到另一种框架。
步骤 1 — 检测源框架
根据用户消息或打开的文件确定源框架:
| 消息或代码中的信号 | 源框架 |
|---|---|
| "Selenium"、"WebDriver"、"driver.findElement"、"By.id"、"ChromeDriver" | Selenium |
| "Playwright"、"page.getByRole"、"expect(locator).toBeVisible"、"@playwright/test" | Playwright |
| "Puppeteer"、"page.$"、"page.goto"、"puppeteer.launch" | Puppeteer |
| "Cypress"、"cy.get"、"cy.visit"、"cy.contains"、"cy.should" | Cypress |
如果无法确定(例如,用户只说“转换我的测试”,且没有打开的文件),请询问:“你当前的测试使用哪种框架(Selenium、Playwright、Puppeteer 还是 Cypress)?”
步骤 2 — 检测目标框架
根据用户消息确定目标框架:
| 用户说…… | 目标 |
|---|---|
| "to Playwright"、"to playwright" | Playwright |
| "to Selenium"、"to WebDriver" | Selenium |
| "to Puppeteer" | Puppeteer |
| "to Cypress" | Cypress |
如果用户只提到源框架(例如“转换我的 Selenium 测试”),请询问:“你想迁移到哪种框架(Playwright、Puppeteer、Cypress,还是使用另一种语言继续采用 Selenium)?”
步骤 3 — 检测语言
| 源框架 → 目标框架 | 语言说明 |
|---|---|
| Selenium(Java/Python/C#)→ Playwright | Playwright 通常使用 JS/TS;迁移通常意味着重写为 TypeScript 或 JavaScript。如果源语言是 Java/C#/Python,请说明这一点。 |
| Selenium(JS)→ Playwright | 可以使用相同语言(JS/TS)。 |
| Playwright/Puppeteer/Cypress → Selenium | 目标语言可以是 Java、Python、JS、C#。优先使用与项目相同的语言,或询问用户。 |
| Playwright ↔ Puppeteer ↔ Cypress | 通常继续使用 JS/TS。 |
有关语言矩阵的详细信息(各框架支持哪些语言),请参阅 reference/overview.md。
步骤 4 — 查阅参考资料
务必先阅读匹配的参考文件,再生成迁移后的代码:
| 源框架 → 目标框架 | 参考文件 |
|---|---|
| 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 |
如果表格中没有对应的框架组合,请说明这一点,并建议最接近的受支持迁移方式(例如,之后添加 WebDriverIO 作为新的参考文件)。
步骤 5 — 应用映射
使用参考文档:
- 定位器 — 使用 API 映射表进行转换(例如,
By.id("x")→page.getByRole(...)或page.locator('#x'))。 - 等待 — 转换等待策略(显式等待/自动等待/
cy.should)。 - 操作 — 映射点击、输入、选择等操作。
- 断言 — 映射为目标框架的断言风格。
- 生命周期 — 调整设置/清理流程(driver 与 page、launch 与 connect)。
- 云端(TestMu) — 如果用户在云端运行,请在迁移后指向目标框架的云端文档。
生成迁移后的代码后,请根据参考文档的“常见陷阱”部分进行验证,避免常见问题。
深入模式的交叉引用
| 需求 | 参考位置 |
|---|---|
| 完整的 Playwright 模式、POM、云端 | playwright-skill 和 playwright-skill/reference/cloud-integration.md |
| 完整的 Selenium 模式、POM、云端 | selenium-skill 和 selenium-skill/reference/cloud-integration.md |
| 完整的 Puppeteer 模式、云端 | puppeteer-skill 和 puppeteer-skill/reference/cloud-integration.md |
| 完整的 Cypress 模式、云端 | cypress-skill 和 cypress-skill/reference/cloud-integration.md |
| TestMu 功能(所有框架) | shared/testmu-cloud-reference.md |
验证工作流
生成迁移后的代码后:
- 确保每个定位器/操作/断言都已使用参考映射完成转换(没有遗留的源 API)。
- 确保生命周期(设置/清理)与目标框架相匹配。
- 如果目标是 Playwright:使用自动等待断言(
expect(locator).toBeVisible()),不要使用原始的waitForTimeout。 - 如果目标是 Cypress:不要在
cy命令中使用 async/await;请使用链式风格。 - 如果目标是 Selenium:使用显式的
WebDriverWait,绝不要使用Thread.sleep。
参考文件摘要
| 文件 | 阅读时机 |
|---|---|
| reference/overview.md | 框架比较、语言矩阵、何时迁移 |
| reference/playbook.md | 完整迁移工作流、调试表、CI/CD 检查清单、最佳实践 |
reference/<source>-to-<target>.md | 为对应的源与目标框架转换任何脚本之前 |
评论
支持 Markdown