test-framework-migration-skill について
Selenium、Playwright、Puppeteer、Cypress間でブラウザーテストを移行するスキルです。フレームワークの判定、参照資料に基づくAPI変換、移行後の検証を案内します。
主な機能
- 01移行元と移行先の判定
- 02ロケーター、待機、操作の変換
- 03アサーションとライフサイクルの変換
- 04移行時の注意点に沿った検証
活用シーン
- 01SeleniumテストのPlaywrightへの移行
- 02CypressテストのSeleniumへの移行
- 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.mdcypress-to-selenium.mdoverview.mdplaybook.mdplaywright-to-cypress.mdplaywright-to-puppeteer.mdplaywright-to-selenium.mdpuppeteer-to-playwright.mdpuppeteer-to-selenium.mdselenium-to-cypress.mdselenium-to-playwright.mdselenium-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#)→ Playwright | Playwright は通常 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 → Playwright | reference/selenium-to-playwright.md |
| Playwright → Selenium | reference/playwright-to-selenium.md |
| Selenium → Puppeteer | reference/selenium-to-puppeteer.md |
| Puppeteer → Selenium | reference/puppeteer-to-selenium.md |
| Puppeteer → Playwright | reference/puppeteer-to-playwright.md |
| Playwright → Puppeteer | reference/playwright-to-puppeteer.md |
| Cypress → Playwright | reference/cypress-to-playwright.md |
| Playwright → Cypress | reference/playwright-to-cypress.md |
| Selenium → Cypress | reference/selenium-to-cypress.md |
| Cypress → Selenium | reference/cypress-to-selenium.md |
該当する組み合わせが表にない場合は、その旨を伝え、最も近いサポート対象の移行方法を提案します(例:後で新しいリファレンスファイルとして WebDriverIO を追加する)。
ステップ 5 — マッピングを適用する
リファレンスドキュメントを使用して、次の手順に従います。
- ロケーター — API マッピング表を使用して変換します(例:
By.id("x")→page.getByRole(...)またはpage.locator('#x'))。 - 待機 — 待機戦略(明示的な待機/自動待機/cy.should)を変換します。
- 操作 — クリック、入力、選択などをマッピングします。
- アサーション — 移行先のアサーションスタイルにマッピングします。
- ライフサイクル — セットアップ/ティアダウンを調整します(driver と page、launch と connect)。
- クラウド(TestMu) — ユーザーがクラウドで実行する場合は、移行後に移行先フレームワークのクラウドドキュメントを案内します。
移行したコードを生成した後、リファレンスの「Gotchas」セクションを確認し、よくある落とし穴を避けてください。
深いパターンに関する相互参照
| 必要な情報 | 参照先 |
|---|---|
| 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 |
検証ワークフロー
移行したコードを生成した後、次の手順に従います。
- すべてのロケーター/操作/アサーションがリファレンスのマッピングを使用して変換されていることを確認します(移行元の API が残っていないこと)。
- ライフサイクル(セットアップ/ティアダウン)が移行先フレームワークに適合していることを確認します。
- 移行先が 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 | その組み合わせのスクリプトを変換する前 |