К основному содержанию
скилл Claude Code

migrate — скилл для Claude Code: миграция тестов

Переносит тесты с Cypress или Selenium на Playwright. Подходит, когда нужно конвертировать существующий набор тестов и проверить результат по файлам.

Установить в Claude Code · Через маркетплейс плагинов Все способы и платформы ↓
/plugin marketplace add alirezarezvani/claude-skills
/plugin install pw@claude-code-skills
Открыть на GitHub

Что делает migrate

Скилл определяет исходный фреймворк по структуре проекта и зависимостям, оценивает объём миграции, а затем переводит тесты на Playwright. Он работает с Cypress и Selenium, включая Selenium-тесты на Python. Входом может быть указание from cypress, from selenium или путь к конкретному файлу.

При конвертации обновляются вызовы навигации, локаторы, клики, ввод текста, проверки, перехват запросов и ожидания. Пользовательские команды Cypress переносятся в фикстуры или вспомогательные функции Playwright, а Selenium page objects сохраняют структуру с новым API. После каждого файла запускается npx playwright test --reporter=list.

Если Playwright ещё не настроен, сначала нужен /pw:pw-init. Для крупных наборов используется /batch; удаление старых конфигураций и зависимостей требует подтверждения пользователя. Ставьте скилл, если нужна пошаговая миграция с проверкой каждого файла.

Какие задачи решает

  • перенести тесты Cypress на Playwright
  • конвертировать Selenium-тесты на Python
  • оценить объём миграции тестового набора
  • обновить локаторы до практик Playwright
  • проверить каждый конвертированный файл

Примеры запросов агенту

  • Мигрируй тесты из Cypress на Playwright и начни с оценки проекта.
  • Перенеси файл `tests/login.cy.ts` на Playwright, затем запусти `npx playwright test --reporter=list`.
  • Проверь, что Playwright настроен, и мигрируй тесты `from selenium`.

Как установить migrate

1Через маркетплейс плагинов

/plugin marketplace add alirezarezvani/claude-skills
/plugin install pw@claude-code-skills

2Через Skills CLI (Vercel)

npx skills add alirezarezvani/claude-skills --skill migrate -a claude-code

3Вручную: положить файлы

~/.claude/skills/migrate/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/migrate/

Похожие

skill-creator официальный anthropics Помогает создать новый скилл, доработать существующий и проверить результат через тестовые промпты и оценки. Claude Code Claude.ai 414 180установок improve-codebase-architecture Matt Pocock Скилл ищет архитектурные узкие места в кодовой базе и показывает варианты углубления модулей в HTML-отчёте. Подойдёт для ревью перед рефакторингом. Claude Code 1 163 035установок tdd Matt Pocock Скилл управляет циклом красный-зелёный в TDD: проверяет, что тесты пишутся до кода, держит их на уровне публичных интерфейсов и не завязывает на внутреннюю структуру. Claude Code 1 141 062установок prototype Matt Pocock Создаёт временный прототип, чтобы проверить логику, модель состояния или вид интерфейса до работы над основным кодом. Claude Code 986 201установок codebase-design Matt Pocock Скилл помогает проектировать модули с небольшим интерфейсом и скрытой внутри сложностью. Подходит для рефакторинга, тестируемости и поиска чистого seam. Claude Code 850 344установок diagnosing-bugs Matt Pocock Скилл ведёт агента через воспроизводимую диагностику сложных багов и регрессий производительности. Нужен, когда код падает, работает неверно или тормозит. Claude Code 834 802установок

Вопросы о migrate

Как установить migrate в Claude Code?

Добавьте marketplace командой /plugin marketplace add alirezarezvani/claude-skills, затем установите плагин через /plugin install pw@claude-code-skills. Также доступны npx skills add alirezarezvani/claude-skills --skill migrate -a claude-code и путь ~/.claude/skills/migrate/SKILL.md.

Что делает скилл migrate?

Он переносит тесты с Cypress или Selenium на Playwright, обновляет API и локаторы, а затем проверяет каждый преобразованный файл запуском Playwright.

Что нужно подготовить перед миграцией?

Если Playwright не настроен, сначала выполните /pw:pw-init. Для больших наборов скилл использует /batch, а удаление старых зависимостей и конфигураций выполняется после подтверждения.

Исходный текст

SKILL.md · MIT
---
name: "migrate"
description: >-
  Migrate from Cypress or Selenium to Playwright. Use when user mentions
  "cypress", "selenium", "migrate tests", "convert tests", "switch to
  playwright", "move from cypress", or "replace selenium".
---

# 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 or `cypress.config.ts` → Cypress
- `selenium`, `webdriver` in `package.json` deps → Selenium
- `.py` test files with `selenium` imports → 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: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()` or `getByRole()`
- `.class` → `getByRole()` or `getByText()`
- `[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:

```bash
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

© Alireza Rezvani · MIT · alirezarezvani/claude-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой