🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx skills add https://skills.sh/alirezarezvani/claude-skills/migrate
💡 提示:需要 Node.js 和 NPM
迁移到 Playwright
从 Cypress 或 Selenium 交互式迁移到 Playwright,逐个文件进行转换。
输入
$ARGUMENTS 可以是:
"from cypress"— 迁移 Cypress 测试套件"from selenium"— 迁移 Selenium/WebDriver 测试- 文件路径:转换特定的测试文件
- 空:自动检测源框架
步骤
1. 检测源框架
使用 Explore 子智能体进行扫描:
cypress/目录或cypress.config.ts→ Cypresspackage.json依赖中有selenium、webdriver→ Selenium.py测试文件包含selenium导入 → Selenium (Python)
2. 评估迁移范围
统计文件数量并进行分类:
迁移评估:
- 测试文件总数:X
- Cypress 自定义命令:Y
- Cypress 测试数据:Z
- 预估工作量:[小|中|大]
| 规模 | 文件数 | 方法 |
|---|---|---|
| 小 (1-10) | 按顺序转换 | 直接转换 |
| 中 (11-30) | 每 5 个一批 | 使用子智能体 |
| 大 (31+) | 使用 /batch |
使用 /batch 并行转换 |
3. 设置 Playwright(如果尚未配置)
如果 Playwright 尚未配置,请先运行 /pw:init。
4. 转换文件
对于每个文件,应用相应的映射:
Cypress → Playwright
加载 cypress-mapping.md 获取完整参考。
关键转换:
cy.visit(url) → page.goto(url)
cy.get(selector) → page.locator(selector) 或 page.getByRole(...)
cy.contains(text) → page.getByText(text)
cy.find(selector) → locator.locator(selector)
cy.click() → locator.click()
cy.type(text) → locator.fill(text)
cy.should('be.visible') → expect(locator).toBeVisible()
cy.should('have.text') → expect(locator).toHaveText(text)
cy.intercept() → page.route()
cy.wait('@alias') → page.waitForResponse()
cy.fixture() → JSON 导入或测试数据文件
Cypress 自定义命令 → Playwright 测试夹具或辅助函数
Cypress 插件 → Playwright 配置或测试夹具
before/beforeEach → test.beforeAll() / test.beforeEach()
Selenium → Playwright
加载 selenium-mapping.md 获取完整参考。
关键转换:
driver.get(url) → page.goto(url)
driver.findElement(By.id('x')) → page.locator('#x') 或 page.getByTestId('x')
driver.findElement(By.css('.x')) → page.locator('.x') 或 page.getByRole(...)
element.click() → locator.click()
element.sendKeys(text) → locator.fill(text)
element.getText() → locator.textContent()
WebDriverWait + ExpectedConditions → expect(locator).toBeVisible()
driver.switchTo().frame() → page.frameLocator()
Actions → locator.hover(), locator.dragTo()
5. 升级定位器
在转换过程中,将选择器升级为 Playwright 最佳实践:
#id→getByTestId()或getByRole().class→getByRole()或getByText()[data-testid]→getByTestId()- XPath → 基于角色的定位器
6. 转换自定义命令 / 工具函数
- Cypress 自定义命令 → 通过
test.extend()创建 Playwright 自定义测试夹具 - Selenium 页面对象 → Playwright 页面对象(保留结构,更新 API)
- 共享辅助函数 → TypeScript 工具函数
7. 验证每个转换后的文件
转换每个文件后:
npx playwright test <转换后的文件> --reporter=list
在继续下一个文件之前,修复所有编译或运行时错误。
8. 清理
所有文件转换完成后:
- 从
package.json中移除 Cypress/Selenium 依赖 - 删除旧的配置文件(
cypress.config.ts等) - 更新 CI 工作流以使用 Playwright
- 更新 README 中的新测试命令
在删除任何内容之前询问用户。
输出
- 转换摘要:转换的文件数、迁移的测试总数
- 任何无法自动转换的测试(需要手动介入)
- 更新后的 CI 配置
- 测试运行结果的前后对比
📄 原始文档
完整文档(英文):
https://skills.sh/alirezarezvani/claude-skills/migrate
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)