- 家
- /
- Cypress vs Playwright
Cypress vs Playwright
CypressとPlaywrightは、現代の主要なJavaScriptエンドツーエンドテストフレームワークの2強です。このガイドでは、アーキテクチャ、ブラウザカバレッジ、対応言語、並列実行、デバッグの各観点で両者を徹底的に比較し、コードサンプルと5分で実践できる結論を交えてお届けします。
- ブラウザとデバイス
- 6100+
- クラウド並列処理
- 100×
- 稼働時間SLA
- 99.99%
世界で最も革新的な企業のいくつかから信頼されています
どちらを選ぶべきでしょうか?
最も洗練された開発者体験を求めている場合:ブラウザ内のテストランナー、タイムトラベルデバッグ、自動リトライ、付属の一流コンポーネントテストを備え、対象がChrome、Edge、Firefoxである場合。
WebKit(Safariエンジン)のカバレッジ、複数の言語(TypeScript、Python、Java、C#)、マルチタブやマルチオリジンのフロー、あるいは有料ダッシュボードなしの無料の組み込み並列実行が必要な場合。
気に入っている既存のCypressスイートがあり、新しいクロスブラウザやマルチタブのシナリオにはPlaywrightを使いたい場合。TestingBotは両方を同じグリッド上で、並列に、1つのダッシュボードで実行します。
CypressとPlaywrightとは何ですか?
2つの現代的なJavaScriptテストフレームワーク、異なるアーキテクチャ。しかし、目標は同じ。ブラウザを操作してエンドツーエンドテストを自動化することだ。
Cypress
リリース日:2017年 · Cypress.io · MIT
Cypressは、テストをブラウザの内部で、アプリケーションと同じ実行ループ内で実行するJavaScriptのエンドツーエンドテストフレームワークです。このアーキテクチャにより、DOMへの直接アクセス、自動リトライ、タイムトラベルスナップショットがデフォルトで利用できます。
Cypressは、その開発者体験で知られています。組み込みのテストランナー、リアルタイムリロード、ビジュアルデバッガ、強力なコンポーネントテストなどです。ブラウザ内部で動作するモデルは、JavaScriptとTypeScript、ChromiumベースのブラウザにFirefoxを加えた固定されたセット、シングルタブのフローに制限されるという制約ももたらします。
- JavaScriptとTypeScriptのみ
- 自動リトライ、タイムトラベルデバッグ、コンポーネントテスト
- Chrome、Edge、Firefox、Electron · WebKit/Safariは非対応
Playwright
リリース日:2020年 · Microsoft · Apache 2.0
Playwrightは、Microsoftが開発したエンドツーエンドのテストフレームワークで、単一のAPIを通じてChromium、Firefox、WebKitを制御できます。DevToolsプロトコル(およびFirefoxとWebKit用の独自のブリッジ)を介して、ブラウザを外部から操作します。
Playwrightはスケールを念頭に設計されました。5つの言語のバインディング、ブラウザコンテキストを介したネイティブのマルチタブとマルチオリジンのサポート、組み込みの並列ワーカー、ネットワーク傍受、豊富なTrace Viewer、これらすべてが含まれています。
- TypeScript、JavaScript、Python、Java、C#
- 自動待機、ブラウザコンテキスト、Trace Viewer、無料の並列実行
- Chromium、Firefox、WebKit · IE / 旧Safariは非対応
Cypress vs Playwright:並べて比較
CI での選択、移行、または両方の実行において重要なあらゆる側面において。
| 項目 |
|
|
|---|---|---|
| First release | 2017 | 2020 |
| Maintained by | Cypress.io | Microsoft |
| Languages | JavaScript / TypeScript only | TS, JS, Python, Java, C# |
| Architecture | Runs inside the browser | Drives browser out-of-process |
| Browsers | Chrome, Edge, Firefox, Electron | Chromium, Firefox, WebKit |
| WebKit / Safari engine | Experimental | Supported |
| Auto-waiting | Built-in retries | Built-in auto-wait |
| Multiple tabs / windows | Not supported | Native (browser contexts) |
| Cross-origin | cy.origin() (constrained) | Native |
| Network interception | First-class (cy.intercept) | First-class (route) |
| Test runner | Built in | Built in (@playwright/test) |
| Component testing | First-class | Experimental |
| Parallel execution | Cypress Cloud (paid) or a grid | Built-in workers (free) |
| Debugging | Time-travel runner | Trace Viewer + UI mode |
| Mobile testing | Viewport emulation only | Viewport emulation only |
| Ecosystem maturity | Since 2017 | Since 2020, growing fast |
| Free for open source on TestingBot | ✓ | ✓ |
機能に関する注記は、2026年時点のCypress 13.xおよびPlaywright 1.xを反映しています。両フレームワークはTestingBotのクラウド上で動作し、Cypressはtestingbot-cypress-cli経由で、PlaywrightはwsEndpoint接続経由で実行されます。
ログインし、結果を検証する
組み込みのリトライ(Cypress)と自動待機(Playwright)を使用したログインフローです。どちらも同じTestingBotグリッド上で実行されます。
// run via: testingbot-cypress run describe('login', () => { it('redirects to the dashboard', () => { cy.visit('https://app.example.com/login'); // auto-retries until actionable cy.get('#username').type('jane@example.com'); cy.get('#password').type('••••••••'); cy.contains('button', 'Sign in').click(); cy.url().should('include', '/dashboard'); cy.contains('h1', /welcome, jane/i).should('be.visible'); }); });
// playwright.config.ts → set TestingBot wsEndpoint import { test, expect } from '@playwright/test'; test('login redirects to dashboard', async ({ page }) => { await page.goto('https://app.example.com/login'); // auto-wait, no explicit wait needed await page.getByLabel('Username').fill('jane@example.com'); await page.getByLabel('Password').fill('••••••••'); await page.getByRole('button', { name: 'Sign in' }).click(); await expect(page).toHaveURL(/\/dashboard/); });
Cypressのスペックはtestingbot-cypress-cli経由で実行され、PlaywrightのテストはwsEndpointに接続します。どちらも同じTestingBotダッシュボードに表示されます。
どちらを選ぶかは
Cypressを選ぶとき
- 最高クラスの開発者体験を求めている場合:ブラウザ内ランナー、タイムトラベルスナップショット、読みやすい失敗時の表示。
- エンドツーエンドテストと並行してコンポーネントテストを行っており、両方に1つのツールを使いたい場合。
- 対象がChrome、Edge、Firefoxであり、WebKitやSafariエンジンの要件がない場合。
- チームが完全にJavaScriptまたはTypeScriptであり、緩やかな学習曲線を重視する場合。
- フローがシングルタブ内に収まり、ほぼ単一のオリジンで完結する場合(cy.originは制約の範囲内で役立ちます)。
Playwrightを選ぶとき
- Cypressが操作できないWebKitのカバレッジが必要で、Safariを近似したい場合。
- チームがJavaScriptに加えてPython、Java、C#を書いており、それらすべてにわたって1つのフレームワークを使いたい場合。
- テストが複数のタブ、ウィンドウ、オリジンを開く場合。Playwrightはブラウザコンテキストを介してこれらをネイティブに扱います。
- 有料ダッシュボードのサブスクリプションなしで、無料の組み込み並列実行が必要な場合。
- 最速のCI実行と、Playwright Trace Viewerによるトレースベースのデバッグを求めている場合。
どちらかを選ぶのはやめて、両方を同じグリッドで実行しよう
Cypressをtestingbot-cypress-cli経由で実行し、PlaywrightをそのwsEndpoint経由で接続します。テストは同じ6100+ブラウザとデバイス、同じダッシュボード、同じ並列スロット、同じEUデータ所在地を共有し、Cypress Cloudのサブスクリプションは不要です。
- Cypress CloudプランなしでのCypress並列化
- 両フレームワークのテスト履歴を並べて表示
- オープンソースであれば無料、両方のフレームワーク
よくある質問
チームがこれらのフレームワークを選択する前、あるいはフレームワーク間を移行する前に自問する質問。
PlaywrightはCypressより優れていますか?
どちらかが普遍的に優れているわけではなく、それぞれ異なるチームに適しています。Playwrightはより柔軟です。Chromium、Firefox、WebKitを操作し、5つの言語をサポートし、複数のタブやオリジンをネイティブに扱い、無料で並列化します。Cypressはその開発者体験で愛されています。ブラウザ内ランナー、タイムトラベルデバッグ、一流のコンポーネントテストなどです。幅広さとスケールを求めるならPlaywrightを、その制約の範囲内での使いやすさを求めるならCypressを選びましょう。
CypressからPlaywrightに移行すべきでしょうか?
Cypressの限界に達している場合に限ります。WebKit(Safari)のカバレッジ、複数の言語、マルチタブやマルチオリジンのフロー、あるいは無料の並列実行が必要な場合、Playwrightはそれらの制約を取り除きます。Cypressスイートが安定していて、JavaScriptのみで、シングルタブ内に収まる場合は、移行に労力をかける価値はめったにありません。多くのチームはCypressスイートを維持しつつ、新しいクロスブラウザの作業にはPlaywrightを追加します。
CypressとPlaywrightのどちらがより多くのブラウザをサポートしていますか?
Playwrightはより多くのレンダリングエンジンをサポートしています。Chromium(Chrome、Edge)、Firefox、そしてSafariを近似するWebKitを操作します。Cypressは、Chromiumベースのブラウザ(Chrome、Edge、Electron)とFirefoxで動作し、WebKitは実験的にサポートしています。どちらも実際のSafariバイナリやInternet Explorerは操作できません。それらにはSeleniumが必要です。TestingBotは両方のフレームワークをそのブラウザグリッド全体で実行します。
CypressとPlaywrightのどちらが速いですか?
Playwrightは通常、フルスイートでは高速です。主な理由は、デフォルトで無料でワーカー全体に並列化し、ブラウザを外部から操作するためです。Cypressは各スペックを単一のブラウザインスタンスで実行し、並列化するにはCypress Cloudまたはクラウドグリッドが必要です。単一のスペックでは差はわずかですが、大規模なスイート全体では並列化が決定的な要因となります。どちらをTestingBotのグリッド上で実行しても、ブラウザ全体で並列化されます。
CypressやPlaywrightはモバイルアプリのテストを行うことができますか?
どちらもネイティブのモバイルアプリのテストは行いません。両方ともChromiumでのモバイルビューポートエミュレーションを提供していますが、ネイティブのiOSアプリやAndroidアプリを操作することはできません。実際のモバイルテストには、Appium、XCUITest、Espresso、またはMaestroが必要です。TestingBotは、実際のiOSおよびAndroidデバイス上でこれらのすべてを実行します。
Cypress Cloudが必要ですか、それとも無料で並列化できますか?
Playwrightは組み込みのワーカープールで無料で並列化します。Cypress独自の並列化と録画はCypress Cloud(有料サブスクリプション)経由で実行されます。TestingBotはCypressの代替手段です。testingbot-cypress-cliが、クラウドグリッド上のChrome、Edge、Firefoxにわたってスペックを並列に実行します。ライブログとビデオが利用でき、Cypress Cloudプランは不要です。並列数はtestingbot.jsonで設定します。
TestingBot上でCypressとPlaywrightを実行できますか?
はい、どちらも同じTestingBotクラウド上で動作します。Cypressはtestingbot-cypress-cliのnpmパッケージ経由で実行され、testingbot.jsonファイルで構成し、testingbot-cypress runで起動します。PlaywrightはwsEndpointを介してwss://cloud.testingbot.com/playwrightに接続します。どちらのテストも同じダッシュボードに表示され、並列スロットを共有し、同じEUデータ所在地、ビデオ録画、CI/CD統合のメリットを享受できます。どちらもオープンソースプロジェクトでは無料で利用できます。
さらに詳しく知りたい方は、専用のCypressページとPlaywrightページをご覧ください。
Related comparisons
無料トライアルにサインアップ
TestingBotのクラウド上で、Cypress、Playwright、またはその両方を実行できます。Cypress Cloudのサブスクリプションは不要です。
無料トライアルを開始する