migrate
交互式从 Cypress 或 Selenium 迁移到 Playwright,逐文件转换测试套件,保持测试逻辑和结构
npx skills add alirezarezvani/claude-skills --skill migrateBefore / After 效果对比
1 组手动完成交互式从 Cypress 或 相关任务,需要反复操作和确认,整个过程大约需要103小时,容易出错且效率低下
使用该 Skill 自动化处理,智能分析和执行,4小时内完成全部工作,准确率高且流程标准化
description SKILL.md
migrate
Migrate to Playwright
Interactive migration from Cypress or Selenium to Playwright with file-by-file conversion.
Input
$ARGUMENTS can be:
-
"from cypress"— migrate Cypress test suite -
"from selenium"— migrate Selenium/WebDriver tests -
A file path: convert a specific test file
-
Empty: auto-detect source framework
Steps
1. Detect Source Framework
Use Explore subagent to scan:
-
cypress/directory orcypress.config.ts→ Cypress -
selenium,webdriverinpackage.jsondeps → Selenium -
.pytest files withseleniumimports → Selenium (Python)
2. Assess Migration Scope
Count files and categorize:
Migration Assessment:
- Total test files: X
- Cypress custom commands: Y
- Cypress fixtures: Z
- Estimated effort: [small|medium|large]
Size Files Approach
Small (1-10) Convert sequentially Direct conversion
Medium (11-30) Batch in groups of 5 Use sub-agents
Large (31+)
Use /batch
Parallel conversion with /batch
3. Set Up Playwright (If Not Present)
Run /pw:init first if Playwright isn't configured.
4. Convert Files
For each file, apply the appropriate mapping:
Cypress → Playwright
Load cypress-mapping.md for complete reference.
Key translations:
cy.visit(url) → page.goto(url)
cy.get(selector) → page.locator(selector) or 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 import or test data file
Cypress custom commands → Playwright fixtures or helper functions
Cypress plugins → Playwright config or fixtures
before/beforeEach → test.beforeAll() / test.beforeEach()
Selenium → Playwright
Load selenium-mapping.md for complete reference.
Key translations:
driver.get(url) → page.goto(url)
driver.findElement(By.id('x')) → page.locator('#x') or page.getByTestId('x')
driver.findElement(By.css('.x')) → page.locator('.x') or 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. Upgrade Locators
During conversion, upgrade selectors to Playwright best practices:
-
#id→getByTestId()orgetByRole() -
.class→getByRole()orgetByText() -
[data-testid]→getByTestId() -
XPath → role-based locators
6. Convert Custom Commands / Utilities
-
Cypress custom commands → Playwright custom fixtures via
test.extend() -
Selenium page objects → Playwright page objects (keep structure, update API)
-
Shared helpers → TypeScript utility functions
7. Verify Each Converted File
After converting each file:
npx playwright test <converted-file> --reporter=list
Fix any compilation or runtime errors before moving to the next file.
8. Clean Up
After all files are converted:
-
Remove Cypress/Selenium dependencies from
package.json -
Remove old config files (
cypress.config.ts, etc.) -
Update CI workflow to use Playwright
-
Update README with new test commands
Ask user before deleting anything.
Output
-
Conversion summary: files converted, total tests migrated
-
Any tests that couldn't be auto-converted (manual intervention needed)
-
Updated CI config
-
Before/after comparison of test run results
Weekly Installs239Repositoryalirezarezvani/…e-skillsGitHub Stars6.3KFirst SeenMar 5, 2026Security AuditsGen Agent Trust HubPassSocketPassSnykPassInstalled oncodex228gemini-cli226kimi-cli225github-copilot225cursor225amp225
forum用户评价 (0)
发表评价
暂无评价,来写第一条吧
统计数据
用户评分
为此 Skill 评分