mcpField
T
test-framework-migration-skill

test-framework-migration-skill

github.com/lambdatest测试与质量384221 次安装2 周前更新
代码仓库

关于 test-framework-migration-skill

用于在 Selenium、Playwright、Puppeteer 和 Cypress 之间迁移浏览器测试脚本的技能,涵盖框架识别、按参考文档转换 API 及迁移后验证。

主要功能

  1. 01识别源框架与目标框架
  2. 02转换定位器、等待和操作
  3. 03迁移断言与生命周期
  4. 04依据迁移注意事项验证

适用场景

  1. 01将 Selenium 测试迁至 Playwright
  2. 02将 Cypress 测试迁至 Selenium
  3. 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.md
cypress-to-selenium.md
overview.md
playbook.md
playwright-to-cypress.md
playwright-to-puppeteer.md
playwright-to-selenium.md
puppeteer-to-playwright.md
puppeteer-to-selenium.md
selenium-to-cypress.md
selenium-to-playwright.md
selenium-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#)→ PlaywrightPlaywright 通常使用 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 → Playwrightreference/selenium-to-playwright.md
Playwright → Seleniumreference/playwright-to-selenium.md
Selenium → Puppeteerreference/selenium-to-puppeteer.md
Puppeteer → Seleniumreference/puppeteer-to-selenium.md
Puppeteer → Playwrightreference/puppeteer-to-playwright.md
Playwright → Puppeteerreference/playwright-to-puppeteer.md
Cypress → Playwrightreference/cypress-to-playwright.md
Playwright → Cypressreference/playwright-to-cypress.md
Selenium → Cypressreference/selenium-to-cypress.md
Cypress → Seleniumreference/cypress-to-selenium.md

如果表格中没有对应的框架组合,请说明这一点,并建议最接近的受支持迁移方式(例如,之后添加 WebDriverIO 作为新的参考文件)。

步骤 5 — 应用映射

使用参考文档:

  1. 定位器 — 使用 API 映射表进行转换(例如,By.id("x") → page.getByRole(...) 或 page.locator('#x'))。
  2. 等待 — 转换等待策略(显式等待/自动等待/cy.should)。
  3. 操作 — 映射点击、输入、选择等操作。
  4. 断言 — 映射为目标框架的断言风格。
  5. 生命周期 — 调整设置/清理流程(driver 与 page、launch 与 connect)。
  6. 云端(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

验证工作流

生成迁移后的代码后:

  1. 确保每个定位器/操作/断言都已使用参考映射完成转换(没有遗留的源 API)。
  2. 确保生命周期(设置/清理)与目标框架相匹配。
  3. 如果目标是 Playwright:使用自动等待断言(expect(locator).toBeVisible()),不要使用原始的 waitForTimeout。
  4. 如果目标是 Cypress:不要在 cy 命令中使用 async/await;请使用链式风格。
  5. 如果目标是 Selenium:使用显式的 WebDriverWait,绝不要使用 Thread.sleep。

参考文件摘要

文件阅读时机
reference/overview.md框架比较、语言矩阵、何时迁移
reference/playbook.md完整迁移工作流、调试表、CI/CD 检查清单、最佳实践
reference/<source>-to-<target>.md为对应的源与目标框架转换任何脚本之前

评论

支持 Markdown