SuperAPI AI 工具集

test-framework-migration-skill

测试与质量

查看项目

更新于 10-15 14:57

技能介绍

用途

Test Framework Migration Skill 是一个测试自动化脚本迁移技能,定位为“资深 QA 自动化架构师”。它的核心用途是把测试自动化脚本从一种框架迁移、转换或移植到另一种框架,支持的框架包括 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。若无法判断,则询问用户当前测试使用哪个框架。

  2. 检测目标框架:根据用户消息中的表述判断目标框架,例如 "to Playwright" 对应 Playwright,"to Selenium" 或 "to WebDriver" 对应 Selenium,"to Puppeteer" 对应 Puppeteer,"to Cypress" 对应 Cypress。若用户只说明了源框架,则询问目标框架。

  3. 检测语言:根据源到目标的组合给出语言提示。例如 Selenium(Java/Python/C#)迁移到 Playwright 通常意味着重写为 TypeScript 或 JavaScript;Selenium(JS)迁移到 Playwright 可保持相同语言;Playwright/Puppeteer/Cypress 迁移到 Selenium 时目标语言可为 Java、Python、JS、C#,优先与项目一致或询问用户;Playwright、Puppeteer、Cypress 之间互转通常保持 JS/TS。语言矩阵细节见 reference/overview.md。

  4. 路由到参考文档:在生成迁移代码前,必须读取匹配的参考文件。支持的迁移对包括:Selenium → Playwright、Playwright → Selenium、Selenium → Puppeteer、Puppeteer → Selenium、Puppeteer → Playwright、Playwright → Puppeteer、Cypress → Playwright、Playwright → Cypress、Selenium → Cypress、Cypress → Selenium。若迁移对不在表中,则说明情况并建议最接近的受支持迁移。

  5. 应用映射:依据参考文档进行转换,包括定位器(如 By.id("x") → page.getByRole(...) 或 page.locator('#x'))、等待策略(显式等待 / 自动等待 / cy.should)、操作(click、type、select 等)、断言(映射到目标框架的断言风格)、生命周期(driver 与 page、launch 与 connect 的调整)。若用户在云端运行,迁移后指向目标框架的云端文档。生成代码后需对照参考文档的 "Gotchas" 部分进行校验。

使用方式

该技能以分步工作流方式运行,先检测源框架、目标框架和语言,再读取对应参考文档,最后应用映射生成迁移后的代码。它还提供交叉引用:需要完整 Playwright 模式、POM、云端内容时查看 playwright-skill 及其 reference/cloud-integration.md;Selenium 对应 selenium-skill;Puppeteer 对应 puppeteer-skill;Cypress 对应 cypress-skill;TestMu 能力(所有框架)见 shared/testmu-cloud-reference.md。

验证工作流

生成迁移代码后需执行验证:确保每个定位器、操作、断言都按参考映射转换,没有遗留源框架 API;确保生命周期(setup/teardown)与目标框架匹配;若目标是 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:在转换该组合的任何脚本前读取。

适用场景

适用于需要将现有测试自动化脚本从一个框架迁移到另一个框架的团队或个人,例如把 Selenium 测试迁移到 Playwright,或在 Playwright、Puppeteer、Cypress 之间互转。

限制

该技能仅支持上述列出的迁移对;不在表中的迁移对会提示并建议最接近的受支持迁移。关于收费、价格、平台等具体信息,资料中暂未提供。