
Playwright は2024年半ば頃に週間のnpmダウンロード数で Cypress を上回り、2026年初頭にはその差が約3,000万対650万の週間ダウンロード数にまで広がっています。この変化は偶然ではありません。Google検索結果の1ページ目に表示される他の比較記事のほとんどは、QAツールベンダーやテストSaaS企業によって書かれています。この記事は、製品を宣伝するためではなく、実際のプロジェクトのために本番環境のWebアプリを構築し、テスト自動化フレームワークを選定しているチームによって執筆されています。
ここで Selenium の位置づけを確認しましょう。Seleniumは今でも世界中で最も広く導入されているE2Eフレームワークであり、特にJavaやPythonを採用している組織で重用されています。Seleniumが消滅することはありません。しかし、2026年の新しいJavaScript/TypeScriptプロジェクトにおいて、真の問いは「Playwright対Cypress」であり、Seleniumはレガシーな fallback(代替案)としての地位にあります。
概要:クイックサマリー
2026年に最適な総合テストフレームワークを求めるなら Playwright を選んでください:最速の実行速度、無料の並列化、マルチ言語サポート、そして優れたTypeScript DXを提供します。インタラクティブなデバッグとコンポーネントテストを何よりも重視するチームなら Cypress を選んでください。既存のSeleniumインフラを持つJava/Pythonのエンタープライズ環境にいるなら Selenium を選んでください。
| 機能 | Playwright | Cypress | Selenium |
|---|---|---|---|
| 開発元 | Microsoft | Cypress.io | Seleniumコミュニティ |
| 初回リリース | 2020年 | 2014年 | 2004年 |
| アーキテクチャ | WebSocket (CDP) | ブラウザ内実行 | WebDriverプロトコル |
| 対応言語 | JS/TS, Python, Java, C# | JS/TSのみ | JS, Python, Java, C#, Ruby, PHP, Kotlin |
| ブラウザサポート | Chromium, Firefox, WebKit | Chrome, Firefox, Edge, Electron, WebKit (実験的) | Chrome, Firefox, Safari, Edge, IE |
| 実行速度 | 最速 (~4.5秒) | 中程度 (~9.4秒) | 最遅 (~14.5秒) |
| 並列化 | 組み込み、無料 (シャーディング) | 有料 (Cypress Cloud) またはコミュニティツール | Selenium Grid (セルフホスト) |
| クラウド/ダッシュボードコスト | $0 | $67-$267/月 (年払い) | $0 (+ インフラコスト) |
| TypeScript DX | ファーストクラス | 良い (いくつかの癖あり) | コミュニティ努力 |
| コンポーネントテスト | 実験的 | 成熟 (ファーストクラス) | なし |
| 学習曲線 | 中程度 | 低い (JS開発者向け) | 急峻 |
| 適した用途 | ほとんどの新規プロジェクト | インタラクティブなDXを求めるフロントエンドチーム | エンタープライズのJava/Python組織 |
これが要約です。記事の残り部分では、コード、ベンチマーク、そして率直な意見とともに、各行の背後にある根拠を説明します。
アーキテクチャ:各ツールがブラウザと通信する方法
アーキテクチャは、この比較で見られるほぼすべての違いの根本原因です。こう考えてみてください:Playwright は、俳優(ブラウザ)に直接指示をささやく舞台監督のようにブラウザと対話します。Cypress は俳優と一緒に舞台上に立ち、同じ部屋で動作します。Selenium は、廊下に立つ仲介人を通じて指示を送ります。
<!-- IMAGE: Architecture comparison showing Playwright WebSocket connection, Cypress in-browser execution, and Selenium WebDriver intermediary layer -->Playwright: WebSocket経由の直接ブラウザ制御
Playwrightは、Chromiumには Chrome DevTools Protocol (CDP) を、FirefoxやWebKitには同等のプロトコルを使用し、WebSocket 接続を通じてブラウザと通信します。仲介者が存在せず、テストコードがブラウザエンジンに直接コマンドを送信します。これにより、レイテンシが低く、マルチタブ、マルチオリジン、ネットワークインターセプトなどの機能が利用可能になり、故障しやすい可動部分が少なくなります。
Cypress: ブラウザ内実行
Cypressは根本的に異なるアプローチを取ります。Cypressは自身を ブラウザ内に注入 し、アプリケーションと同じJavaScriptイベントループ内でテストコードを実行します。これが、シンプルなテストにおいてCypressが非常に高速に感じられる理由です。テストとアプリの間にはネットワークオーバーヘッドがゼロだからです。しかし、このアーキテクチャはCypressの限界も説明しています:マルチタブサポートなし、クロスオリジンテストの制限、そして JavaScript/TypeScriptのみ (テストがブラウザコンテキストで実行される必要があるため)です。
Selenium: WebDriver仲介層
Seleniumは WebDriver プロトコルを使用します。テストコードはブラウザドライバーバイナリ(chromedriver, geckodriverなど)にHTTPリクエストを送信し、それがリクエストをブラウザコマンドに変換します。すべてのコマンドは往復処理となります:テストからドライバーへ、ドライバーからブラウザへ、そして戻りへ。この間接性がレイテンシを追加し、より多くの失敗ポイントを生み出します。Seleniumはこのオーバーヘッドを減らすために BiDi protocol の採用を進めていますが、まだ完全には実装されていません。
結論:アーキテクチャではPlaywrightが勝利。 直接のWebSocket通信により、実行速度が速く、機能が豊富で、不安定な失敗が少なくなります。Cypressのブラウザ内モデルは単純な単一オリジンのテストにおいては確かに巧妙ですが、Playwrightにはない硬い天井を作り出しています。Seleniumのアーキテクチャは古さを感じさせます。
言語およびブラウザサポート
これは多くの場合、最初のフィルタになります。もしあなたのチームがJavaScriptを書いていないなら、Cypressは即座に選択肢から外れます。
| カテゴリ | Playwright | Cypress | Selenium |
|---|---|---|---|
| JavaScript / TypeScript | はい | はい | はい |
| Python | はい (公式) | いいえ | はい (公式) |
| Java | はい (公式) | いいえ | はい (公式) |
| C# / .NET | はい (公式) | いいえ | はい (公式) |
| Ruby | いいえ | いいえ | はい (公式) |
| PHP | いいえ | いいえ | はい (コミュニティ) |
| Kotlin | いいえ | いいえ | はい (コミュニティ) |
| Chromium / Chrome | はい (バンドル済み) | はい | はい (chromedriver経由) |
| Firefox | はい (バンドル済み) | はい | はい (geckodriver経由) |
| WebKit / Safari | はい (バンドル済み、クロスプラットフォーム) | 実験的 | はい (macOSのみ、SafariDriver経由) |
| Edge | はい (Chromiumベース) | はい | はい |
| IE | いいえ | いいえ | はい |
これは実際には何を意味するのでしょうか?もしあなたが20人のQAエンジニアを抱えるJava組織なら、Cypressは選択肢になりません。クロスブラウザテスト、特にSafariが含まれる場合(Safariは世界のブラウザシェアの約18%を占めているため重要です)、PlaywrightはどのOSでも开箱即用で対応しますが、CypressはまだWebKitサポートを「実験的」とラベル付けしています。
Seleniumは純粋な広さにおいて勝利します。どちらの代替案よりも多くの言語とブラウザをサポートしています。しかし、2026年に最も重要な言語とブラウザ、つまりJavaScript/TypeScript、Python、そしてChromium/Firefox/WebKitのトリオに関しては、Playwrightはゼロ設定とバンドルされたブラウザバイナリですべてをカバーします。
結論:広さではSeleniumが勝利 (最も多くの言語、最も多くのブラウザ、IEを含む)。実用的なカバレッジではPlaywrightが勝利 、2026年に重要なブラウザと言語をバンドルし、ゼロコンフィグで提供。Cypressは最も狭いオプションです。
テスト作成:サイドバイサイドのコード比較
理論は十分です。ここでは、3つのフレームワークすべてで同じテストを書いた場合を示します。ここでDXの違いを実感できます。
ログインフローテスト
標準的なログインテスト:ページに移動し、認証情報を入力し、送信して、リダイレクトを検証します。
// Playwright
import { test, expect } from '@playwright/test';
test('user can log in', async ({ page }) => {
await page.goto('/login');
await page.locator('#email').fill('[email protected]');
await page.locator('#password').fill('s3cureP@ss');
await page.locator('button[type="submit"]').click();
await expect(page).toHaveURL('/dashboard');
await expect(page.locator('h1')).toContainText('Welcome');
});// Cypress
describe('Login', () => {
it('user can log in', () => {
cy.visit('/login');
cy.get('#email').type('[email protected]');
cy.get('#password').type('s3cureP@ss');
cy.get('button[type="submit"]').click();
cy.url().should('include', '/dashboard');
cy.get('h1').should('contain', 'Welcome');
});
});// Selenium (with WebDriver)
const { Builder, By, until } = require('selenium-webdriver');
describe('Login', function () {
let driver;
before(async () => {
driver = await new Builder().forBrowser('chrome').build();
});
after(async () => {
await driver.quit();
});
it('user can log in', async () => {
await driver.get('http://localhost:3000/login');
await driver.findElement(By.id('email')).sendKeys('[email protected]');
await driver.findElement(By.id('password')).sendKeys('s3cureP@ss');
await driver.findElement(By.css('button[type="submit"]')).click();
await driver.wait(until.urlContains('/dashboard'), 5000);
const heading = await driver.findElement(By.css('h1')).getText();
expect(heading).to.include('Welcome');
});
});違いに注目してください。Playwrightの async/await と page.locator() は読みやすく、操作する前に要素が操作可能になるのを自動的に待機します。CypressのチェーンAPI(cy.get().type().click())は簡潔で、単純なフローにおいて本当に快適です。Seleniumは明示的な待機(driver.wait(until.urlContains(...)))、手動のブラウザライフサイクル管理、そしてより多くのボイラープレートコードを必要とします。
APIモックとネットワークインターセプト
このシナリオでは、より大きなギャップが明らかになります。APIコールをインターセプトし、モックデータを返し、UIが正しくレンダリングされることを検証します。
// Playwright -- native network interception
test('shows mocked user list', async ({ page }) => {
await page.route('**/api/users', (route) => {
route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify([{ id: 1, name: 'Alice' }]),
});
});
await page.goto('/users');
await expect(page.locator('.user-card')).toHaveCount(1);
await expect(page.locator('.user-card')).toContainText('Alice');
});// Cypress -- native network interception
it('shows mocked user list', () => {
cy.intercept('GET', '/api/users', {
statusCode: 200,
body: [{ id: 1, name: 'Alice' }],
}).as('getUsers');
cy.visit('/users');
cy.wait('@getUsers');
cy.get('.user-card').should('have.length', 1);
cy.get('.user-card').should('contain', 'Alice');
});// Selenium -- no native network interception
// You need a separate proxy tool like BrowserMob Proxy
// or mock your API server directly. There is no built-in
// equivalent to page.route() or cy.intercept().
// Typical workaround: start a mock server before the test
const mockServer = require('./helpers/mock-server');
before(async () => {
await mockServer.start({ port: 4000 });
mockServer.stub('GET', '/api/users', [{ id: 1, name: 'Alice' }]);
});
it('shows mocked user list', async () => {
await driver.get('http://localhost:3000/users');
// ... assert using findElement
});これは大きな問題です。APIモックは信頼性の高いE2Eテストに不可欠であり、PlaywrightとCypressの両方がこれをネイティブに処理します。Seleniumは別のモックサーバーやプロキシツールを必要とし、インフラストラクチャ、複雑さ、そして壊れる可能性のある要素が増えます。
結論:コードの明確性と機能性ではPlaywrightが勝利。 その async/await 構文は複雑なシナリオにおいてCypressのチェーンよりもクリーンであり、APIモック、マルチタブ、マルチオリジンをネイティブに処理します。Cypressは単純なシングルページのフローにおいて簡潔さで勝利し、チェーンAPIは本当に快適です。Seleniumは最も冗長で、最も多くのボイラープレートコードを必要とします。
Playwright vs Cypress vs Selenium:速度ベンチマーク
「どちらが速いか?」はこの比較で最も検索される質問の一つです。以下は Checklyのベンチマーク研究 および BetterStackの測定値 からの実際の数値であり、整合性のために相互参照されています。
"Test Suite Execution Time (seconds)"
データテーブル
| "Framework" | "Execution Time" |
|---|---|
| "Playwright" | 4.5 |
| "Cypress" | 9.4 |
| "Selenium" | 14.5 |
Playwrightは同等のテストスイートを約 4.5秒 で完了させ、Cypressは 9.4秒、Seleniumは 14.5秒 かかります。これは微々たる差ではなく、2倍および3倍のギャップです。
なぜPlaywrightは速いのでしょうか?理由は3つあります。WebSocket通信により、Seleniumが抱えるHTTPオーバーヘッドを排除します。Playwrightの ブラウザコンテキスト モデルは、ブラウザプロセス全体を起動することなく隔離されたテスト環境を作成します。そして、その並列実行はフレームワークレベルで行われ、外部ツールを必要としません。
テストスイートが大きくなるにつれて、速度の差は広がります。Playwrightのブラウザコンテキストは単一のブラウザプロセスを共有するため効率的にスケールします。Seleniumは並列ワーカーごとに新しいブラウザインスタンスを生成します。Cypressのオープンソース版ではテストを直列に実行するため、スイートが大きくなると実行時間が線形に増加し、Cypress Cloudを利用しない限り回避できません。
ある移行事例では数値化されています。BigBinaryはCypressからPlaywrightに切り替えた後、テスト実行時間の89%削減を報告しました。Playwrightのシャーディングを使用することで、フルスイートが2時間27分から16分に短縮されました。
結論:速度ではPlaywrightが決勝的に勝利。 テストスイートをCypressより2倍、Seleniumより3倍高速に実行します。Playwrightのブラウザコンテキストモデルは新しいブラウザインスタンスを生成するよりもスケーラビリティが高いため、この差は大きなスイートでさらに広がります。
デバッグと開発者体験 (DX)
ここで物事は微妙になります。Playwrightは技術的に優れていますが、Cypressにはチームのロイヤルティを保つ本当のDX上の利点があります。
インタラクティブなデバッグ
Cypress Test Runner は依然としてインタラクティブなデバッグのゴールドスタンダードです。リアルタイムで実際のブラウザ内でテストの実行状況を確認でき、タイムトラベルデバッグにより、コマンドログ内の任意のステップをクリックして、その瞬間の正確なDOM状態を確認できます。視覚的な回帰やレイアウトの問題をデバッグするフロントエンド開発者にとって、これは競合し難いものです。正直なところ、これはCypressのツールキット全体の中で単一で最高の機能です。
Playwright Trace Viewer は異なるアプローチを取ります。テスト実行中にトレース、スクリーンショット、DOMスナップショット、ネットワークリクエスト、および各ステップでのコンソールログを記録します。これらのトレースは事後にブラウザベースのビューアで開きます。CIデバッグ(ヘッドレスパイプラインでテストが失敗した理由を特定する)において、Trace Viewerは実際にCypressのインタラクティブランナーよりも有用です。ローカルで再現する必要なく、完全なコンテキストを得られるからです。
Playwrightの --ui モードは最近のバージョンでCypressのTest Runnerに近いインタラクティブな体験を追加しましたが、それほど洗練されていません。機能的ではありますが、 delights(喜び)を与えるものではありません。
Selenium IDE は存在しますが限定的です。ほとんどのSeleniumデバッグは console.log とスクリーンショットに頼ります。動作はしますが、2012年の感覚が残っています。
TypeScriptファーストの開発
Playwrightは TypeScriptファースト です。自動生成された型が付属しており、設定ファイルはデフォルトで playwright.config.ts であり、VS Codeのオートコンプリートは完璧に動作します。page. と入力してオートコンプリートを押すと、完全な型シグネチャ付きのすべてのメソッドが表示されます。
CypressはTypeScriptをサポートしていますが、摩擦ポイントがあります。カスタムコマンドには手動の型宣言(Cypress.Chainable インターフェースの拡張)が必要であり、チェーンAPIは時折TypeScriptの推論を混乱させます。cypress.config.ts ファイルは動作しますが、DXはそれほどスムーズではありません。
SeleniumのTypeScriptサポートはコミュニティの努力によるもので、Playwrightのネイティブな体験と比較すると付加的な印象を受けます。
結論:インタラクティブなDXではCypressが勝利 、そのTest Runnerは視覚的テストをデバッグするフロントエンド開発者にとって本当に魅力的です。CIデバッグとTypeScriptではPlaywrightが勝利 、Trace ViewerはヘッドレスCI環境での障害診断のために特別に設計されており、そのTypeScriptサポートは最高水準です。Seleniumのデバッグストーリーは最も弱いです。
CI/CD統合と並列化
ここで真価が問われます。テストスイートはラップトップ上ではなく、CI上で一日に数百回実行されます。以下は各フレームワーク用のコピー&ペースト可能なGitHub Actions設定です。これはGoogleの1ページ目にある競合他社の誰一人として提供していないものです。
GitHub Actions設定
# Playwright -- built-in parallelization, zero cost
name: Playwright Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
shard: [1/4, 2/4, 3/4, 4/4]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npx playwright install --with-deps
- run: npx playwright test --shard=${{ matrix.shard }}
- uses: actions/upload-artifact@v4
if: failure()
with:
name: playwright-report-${{ matrix.shard }}
path: playwright-report/# Cypress -- parallel requires Cypress Cloud (paid)
name: Cypress Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
containers: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v4
- uses: cypress-io/github-action@v6
with:
record: true
parallel: true
group: 'CI'
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}# Selenium -- requires browser service container
name: Selenium Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
services:
selenium:
image: selenium/standalone-chrome:latest
ports:
- 4444:4444
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npm test
env:
SELENIUM_REMOTE_URL: http://localhost:4444/wd/hub並列化:無料 vs 有料
上記のPlaywright設定は、--shard=1/4 を使用してテストスイートを4つの並列シャードに分割します。10分のスイートが2.5分で実行されます。コストはゼロです。クラウドサービスは不要です。
Cypressの無料Starterプランには現在並列化が含まれていますが、月間500テスト結果のキャップがあり、ほとんどのチームは活発な開発の中で1日または2日でこれを使い果たします。本格的なCI利用のためには、Cypress Cloud (年間契約でTeamプランは $67/月 から、年間120K結果)または sorry-cypress などのコミュニティ代替案が必要です。上記YAML内の record: true および parallel: true フラグにはCypress Cloudへの接続が必要です。
Seleniumの並列化には Selenium Grid (セルフホスト、運用オーバーヘッド)またはBrowserStackなどのクラウドプロバイダーが必要です。これは3つの中で最も複雑なセットアップです。
結論:CI/CDではPlaywrightが勝利。 ゼロインフラで無料かつ無制限の並列化を実現できるのは競合し難いです。Cypressの無料ティアには並列化が含まれていますが、月間500結果に制限されており、実際のチームには有料プランが必要です。Seleniumは最も運用作業を必要とします。
コストと価格分析
これはこのキーワードに関するSERP全体で最大のコンテンツギャップです。すべての競合他社がこれをスキップしていますが、特に大規模展開においてコストは重要です。
ライセンスと価格ティア
| 機能 | Playwright | Cypress (無料) | Cypress Cloud Team | Cypress Cloud Business | Selenium + Grid |
|---|---|---|---|---|---|
| ライセンス | MIT (無料) | MIT (無料) | $67/月 (年払い) | $267/月 (年払い) | Apache 2.0 (無料) |
| 並列実行 | 組み込み | はい (月間500結果キャップ) | はい (年間120K結果) | はい (無制限) | セルフホストGrid |
| テスト結果ダッシュボード | HTMLレポーター (無料) | なし | はい (年間120K結果) | はい (無制限) | サードパーティツール |
| Flake検出 | 組み込みリトライ | 基本的なリトライ | はい | はい | なし |
| テストアナリティクス | 組み込みレポート | なし | 限定 | 完全 | サードパーティツール |
| スペック優先順位付け | なし | なし | なし | はい | なし |
チーム規模別の実質コスト
| チーム規模 | Playwright | Cypress (Cloud Team含む) | Selenium (BrowserStack含む) |
|---|---|---|---|
| ソロ開発者 | $0 | $0 (無料ティア) | $0 (ローカル) |
| 5名チーム | $0 | $67/月 ($804/年) | ~$150/月 ($1,800/年) |
| 20名QAチーム | $0 | $267/月 ($3,204/年) | ~$600/月 ($7,200/年) |
| エンタープライズ (50名以上) | $0 | カスタム (Enterprise) | カスタム (BrowserStack/Sauce Labs) |
PlaywrightはCypressが課金するすべての機能について無料です。 並列化、HTMLレポーターによるテストアナリティクス、デバッグ用トレースビューア、テストスキャフォールディング用コードジェネレーション、すべてがゼロコストで含まれています。Playwrightが提供していない唯一のものは、チームコラボレーション機能を備えたホスト型クラウドダッシュボードですが、多くのチームにとっては組み込みのHTMLレポートとCIアーティファクトで十分です。
Seleniumも無料ですが、大規模なSelenium Gridを実行するためのインフラコストは無視できません。チームの誰かがそれらのGridノードを維持し、ブラウザバージョンの更新を処理し、インフラの失敗をデバッグする必要があります。
結論:コストではPlaywrightが勝利、比較になりません。 Cypressがペイウォールの背後に隠しているすべての機能(並列化、テストアナリティクス、Flake検出)を、Playwrightは無料で含んでいます。Seleniumはツールレベルでは無料ですが、インフラ請求書は積み上がっていきます。
コンポーネントテスト
コンポーネントテスト は、単一のReact、Vue、またはAngularコンポーネントを分離してマウントし、アプリケーション全体を起動せずにテストすることを可能にします。Cypressはこのアプローチを開拓し、それは今日Cypressを選ぶ最強の理由の一つです。
Cypress はReact (18-19)、Vue 3、Angular (18-21)、およびSvelte 5に対してファーストクラスのコンポーネントテストを持っています。E2Eテストですでに知っている同じ cy.mount() APIと同じTest Runnerを使用します。ドキュメントは成熟しており、エコシステムは堅固で、確実に動作します。コンポーネントテストとE2Eテストの両方に単一のツールを求めるチームにとって、Cypressのコンポーネントテストは真の差別化要因です。
Playwright は最近のバージョンで実験的なコンポーネントテストを追加し、React、Vue、およびSvelteをサポートしています。機能的ですが、Cypressの実装ほど洗練されていません。コンポーネントテストが初日から優先事項である場合、Cypressに分があります。しかし、Playwrightの迅速なリリースサイクル(月次)意味着このギャップは縮小しています。
Selenium にはコンポーネントテストのサポートがありません。これはブラウザレベルで動作し、コンポーネントレベルでは動作しません。Selenium E2Eテスト alongside にコンポーネントテストが必要な場合、React Testing LibraryやVitestなどの別のツールを使用することになります。
結論:コンポーネントテストではCypressが勝利 、このアプローチを開拓し、最も成熟した実装を持ち、 widest range of frameworks をカバーしています。Playwrightは強力な第二位です。Seleniumはここでは競合しません。
コミュニティ、エコシステム、および採用トレンド
数字が物語を語っています。Playwrightは2024年半ば頃にnpmダウンロード数でCypressを上回り 、2026年2月までに、その差は substantial です。Playwrightは約 3,000万の週間ダウンロード を記録しており、Cypressの650万およびSelenium WebDriverの180万 against です。
"Weekly npm Downloads (thousands)"
データテーブル
| "Quarter" | "Playwright" | "Cypress" | "Selenium WebDriver" |
|---|---|---|---|
| "Q1 2024" | 8000 | 6500 | 2200 |
| "Q3 2024" | 14000 | 6600 | 2100 |
| "Q1 2025" | 19000 | 6500 | 2000 |
| "Q3 2025" | 25000 | 6400 | 1900 |
| "Q1 2026" | 30000 | 6500 | 1800 |
GitHubスターも同様のパターンに従います。2026年2月現在、Playwrightは約 82,800、Cypressは 49,461、Seleniumは 33,769 です。State of JavaScript survey は一貫してPlaywrightを開発者の満足度と関心において最高ランクに位置付けています。
しかし、npmはJavaScriptの物語だけを語ります。Seleniumの真のインストールベースは、npmダウンロードが適用されないJava、Python、C#、およびRubyのエコシステムにまたがっています。Javaエンタープライズの世界では、Seleniumは依然として圧倒的な多数派で支配的なフレームワークです。
なぜPlaywrightはこれほど急速に成長しているのでしょうか?Microsoftの支援により、一貫した月次リリースと長期的な安定性が保証されています。TypeScriptファーストの設計は、フロントエンド開発が進む方向性と一致しています。無料の並列化は、Cypress Cloudの価格設定が生み出す摩擦を取り除きます。そして、マルチ言語サポート意味着PythonおよびJavaチームは言語を切り替えることなくSeleniumから移行できます。
Cypressは絶対数では減少しておらず、ダウンロード数は週間600〜700万で横ばいになっています。しかし、Playwrightが新規プロジェクトとCypress/Seleniumからの移行の両方を吸収するにつれて、その相対的なシェアは縮小しています。
結論:勢いではPlaywrightが勝利。 最速の成長、最高の開発者満足度、そして strongest trajectory を持っています。Seleniumはインストールベースで勝利します。Cypressは忠実なコミュニティを維持していますが、その成長は横ばいになっています。
移行ガイド:フレームワークの切り替え
切り替えを検討している場合、ここには実用的な翻訳ガイドがあります。
CypressからPlaywrightへ:API翻訳
// BEFORE: Cypress login test
describe('Login', () => {
it('logs in successfully', () => {
cy.visit('/login');
cy.get('#email').type('[email protected]');
cy.get('#password').type('password123');
cy.get('form').submit();
cy.url().should('include', '/dashboard');
});
});// AFTER: Same test in Playwright
import { test, expect } from '@playwright/test';
test('logs in successfully', async ({ page }) => {
await page.goto('/login');
await page.locator('#email').fill('[email protected]');
await page.locator('#password').fill('password123');
await page.locator('form').evaluate(form => form.submit());
await expect(page).toHaveURL(/dashboard/);
});主な翻訳:cy.visit() は page.goto() になります。cy.get() は page.locator() になります。cy.intercept() は page.route() になります。cy.wait('@alias') は page.waitForResponse() になります。Cypressの暗黙的なチェーンは明示的な async/await になります。
SeleniumからPlaywrightへ:API翻訳
// BEFORE: Selenium login test
const { Builder, By, until } = require('selenium-webdriver');
async function loginTest() {
const driver = await new Builder().forBrowser('chrome').build();
try {
await driver.get('http://localhost:3000/login');
await driver.findElement(By.id('email')).sendKeys('[email protected]');
await driver.findElement(By.id('password')).sendKeys('password123');
await driver.findElement(By.css('form')).submit();
await driver.wait(until.urlContains('/dashboard'), 10000);
} finally {
await driver.quit();
}
}// AFTER: Same test in Playwright
import { test, expect } from '@playwright/test';
test('logs in successfully', async ({ page }) => {
await page.goto('/login');
await page.locator('#email').fill('[email protected]');
await page.locator('#password').fill('password123');
await page.locator('form').evaluate(form => form.submit());
await expect(page).toHaveURL(/dashboard/);
});最大の違いは?Playwrightはブラウザのライフサイクルと要素の自動待機を処理します。finally ブロック内の driver.quit() は不要です。driver.wait(until.urlContains(...), 10000) も不要です。Playwrightはナビゲーションを自動待機します。すべての暗黙的および明示的な待機を削除してください。Playwrightの自動待機がそれらを置き換えます。
移行チェックリスト
- 既存のテストスイートを監査し 、テスト数をカウントし、カスタムコマンド(Cypress)または複雑な待機ロジック(Selenium)を特定します
- 現在のフレームワーク alongside にPlaywrightをインストールし 、移行期間中はCIで両方を実行します
- テストを段階的に翻訳し 、最も単純で価値の高いテストから始めます
- カスタムコマンドをページオブジェクトまたはフィクスチャに置き換えます 。Cypressのカスタムコマンドには1対1のPlaywright相当物はありません
- CI設定を更新し 、Playwrightのシャーディング設定を追加し、該当する場合はCypress Cloudキーを削除します
- 回帰を捕捉するために1〜2スプリント間、両方のフレームワークを並行して実行します
- すべてのテストが移行され安定したら、古いフレームワークを廃止します
典型的な200テストのCypressスイートは、1人のエンジニアによって1〜2スプリントで移行できます。 SeleniumからPlaywrightへの移行は、Seleniumテストには再考を必要とするより複雑な待機ロジックがある傾向があるため、やや時間がかかります。移行する場合、Playwrightは2026年にチームの90%が選択している目的地です。 移行自体は簡単で、最も難しい部分は通常、カスタムのCypressコマンドまたは複雑なSelenium待機ロジックです。
スタック固有の推奨事項:React、Next.js、その他
一般的な「場合による」というアドバイスは役に立ちません。これらのフレームワークを使用して本番アプリを構築した経験に基づき、特定の技術スタックに対して私たちが選ぶものを示します。
| スタック | 最佳選択 | 次点 | 理由 |
|---|---|---|---|
| React / Next.js | Playwright | Cypress | Next.jsには 公式のPlaywright統合 があります。APIルートテスト、サーバーコンポーネントテスト、および無料の並列化使得Playwrightが明確な適合となります。 |
| Vue / Nuxt | Playwright または Cypress | , | 真の toss-up です。Cypressには成熟したVueコンポーネントテストがあります。PlaywrightはE2Eで優れています。間違った選択はありません。 |
| Angular | Playwright | Selenium | Protractorの廃止後、Angularの公式推奨事項には現在、現代の代替案としてPlaywrightが含まれています。 |
| Java / Python バックエンド | Playwright または Selenium | , | チームにSeleniumの専門知識がある場合は、それを維持してください。そうでない場合、Playwrightのマルチ言語バインディングは自然な代替案となります。 |
| レガシーエンタープライズ (IEサポート) | Selenium | , | 唯一のオプションです。PlaywrightはIEをドロップしました。Cypressは決して持っていませんでした。 |
如果你的团队正在使用 Next.js 构建并评估框架,我们的 Next.js vs Remix 比较 涵盖了框架架构如何影响您的测试策略。Playwright 原生测试 API 路由和服务器组件的能力使其在 Next.js 生态系统中尤其强大。
2026年のAI支援テスト
AI支援テスト はもはや仮説ではなく、GitHub Copilot、Cursor、Claude Codeなどのツールは毎日数千人の開発者に対してテストコードを生成しています。フレームワークの選択は、これらのツールの動作に影響を与えます。
Playwright は最高のAI互換性を持っています。強力な型定義を持つTypeScriptファーストのAPI意味着AIアシスタントはより正確なテストコードを生成します。構造化された async/await パターンは、LLMがCypressのチェーンよりも推論しやすいです。そして、Playwright独自の npx playwright codegen ツールはブラウザの相互作用を記録し、インテリジェントなロケーター選択により完全なテストファイルを生成します。AIサブスクリプションは不要です。
Cypress はAIツールと reasonably well に動作します。その宣言的なチェーンAPIは簡潔で、トレーニングデータによく表現されています。しかし、cy. ネームスペースとカスタムコマンドパターンはコード生成を混乱させる可能性があり、Cypress特有の癖により正しく見えるが失敗するテストを生み出す可能性があります。
Selenium はAI支援テストにとって weakest match です。冗長なボイラープレート、異なるAPIを持つ複数の言語バインディング、およびJava/Python/JS間の一貫性のないパターン意味着AI生成されたSeleniumコードは最も多くの手動クリーンアップを必要とします。
ここでAIの役割を過大評価しないでください。それは生産性の乗数であり、テスト設計の代替ではありません。しかし、如果你的团队使用 AI 编码助手(在 2026 年大多数团队都这样做),Playwright 能生成最可靠的测试代码。
結論:AI支援テスト生成ではPlaywrightが勝利。 その型付きAPIと構造化されたパターンは、現代のAIコーディングアシスタントで最高の結果を生み出します。
意思決定フレームワーク:どのツールを選ぶべきか?
ここがあなたが求めていたセクションです。具体的なシナリオ、具体的な推奨事項。
| プロジェクトが必要なもの... | 選択 | 理由 | 代替案 |
|---|---|---|---|
| 最佳 overall E2Eフレームワーク | Playwright | 最速、最も有能、無料、強力なコミュニティ | Cypress (DXが重要な場合) |
| フロントエンド用インタラクティブデバッグ | Cypress | Test Runnerのタイムトラベルデバッグは比類ない | Playwright (UIモードは改善中) |
| マルチ言語チーム (Java/Python/C#) | Playwright | 4言語用の公式バインディング | Selenium (最も広い言語サポート) |
| 予算意識の高いチーム | Playwright | 並列化を含めすべて$0 | Selenium (無料だがインフラコストあり) |
| コンポーネントテスト優先 | Cypress | 最も成熟したコンポーネントテスト実装 | Playwright (実験的) |
| エンタープライズJava/Python組織 | Selenium または Playwright | 既存の投資が重要;移行するならPlaywright | , |
| ソロフロントエンド開発者 | Cypress または Playwright | 最速のオンボーディングならCypress;パワーならPlaywright | , |
| Safari/WebKitテスト必須 | Playwright | ファーストクラスのWebKitサポート、クロスプラットフォーム | Selenium (macOSのみのSafari) |
| レガシーIEサポート必須 | Selenium | 唯一のオプション | , |
| 最速のCI/CDパイプライン | Playwright | 無料のシャーディング、最速の実行 | , |
| Seleniumから移行するチーム | Playwright | 最も簡単な移行パス、ほとんどのチームの目的地 | , |
| 20名以上のQAチーム | Playwright | 有料サービスなしでスケール | Selenium (すでに投資している場合) |
各ツールを使用すべきでない場合
- Playwrightを選ばないでください もしあなたのチーム全体がCypressを深く理解しており、広範なカスタムコマンドを持ち、痛みポイントがない場合。移行コストは存在し、「新しい」ことが「あなたの状況にとってより良い」ことを意味するわけではありません。
- Cypressを選ばないでください マルチ言語サポート、マルチタブテスト、または大規模な無料並列実行が必要な場合。これらはアーキテクチャ上の制限であり、ロードマップ上の機能ではありません。
- 新しいJavaScript/TypeScriptプロジェクトのためにSeleniumを選ばないでください 。PlaywrightとCypressの両方が、JSチームにとって劇的に優れたDX、速度、および信頼性を提供します。
Techsyがテスト自動化にアプローチする方法
Techsy では、数十の本番WebアプリケーションでE2Eテストを実装してきました。これが私たちの実際のプロセスです:
-
新規プロジェクトではPlaywrightをデフォルトとする 。その速度、無料の並列化、およびTypeScriptファーストのDXは、私たちのNext.js/Reactスタックと一致します。私たちはスプリントの後や「時間があるとき」ではなく、定義完了の一部として、機能 alongside にE2Eテストを書きます。
-
クライアントチームに既存のCypressインフラがあり、移行が正当化されない場合、Cypressを使用する 。私たちはチームに移行を強要しません。Cypressが動作しており、チームが生産的であれば、私たちは彼らがそこからより多くを得るのを助けます。
-
メンテナンス負担が移行コストを超える場合、チームがSeleniumから移行するのを助ける 。これはあなたが考えるよりも頻繁に起こります。Seleniumスイートは長年にわたり複雑な待機ロジックと脆いセレクターを蓄積する傾向があります。
私たちの典型的なテストスタック:E2E用Playwright、コンポーネントレベルテスト用React Testing Library、CI用GitHub Actions。この組み合わせは、最小限のツール複雑さでテストピラミッド全体をカバーします。
Webアプリの自動化テストの設定にお困りですか?私たちのチームは、React、Next.js、およびNode.jsプロジェクト全体でPlaywrightおよびCypressテストを実装しています。無料のテスト相談を受ける。
最終結論
| カテゴリ | 勝者 | 備考 |
|---|---|---|
| 速度 | Playwright | Cypressより2倍高速、Seleniumより3倍高速 |
| ブラウザサポート | Playwright | Chromium、Firefox、WebKitをクロスプラットフォームでバンドル |
| 言語サポート | Selenium | 最も多くの言語(6+公式バインディング) |
| DX / デバッグ | Cypress | インタラクティブなTest Runnerは依然として最高のデバッグ体験 |
| CI/CD統合 | Playwright | シャーディングによる無料並列化、ゼロインフラ |
| コスト | Playwright | すべて$0。Cypress Cloudは$67/月から |
| コンポーネントテスト | Cypress | React、Vue、Angular、Svelteに対するファーストクラスサポート |
| コミュニティ成長 | Playwright | 週間約3,000万npmダウンロード、約82.8K GitHubスター |
| TypeScript DX | Playwright | TypeScriptファースト設計、最高のオートコンプリートと型安全性 |
| 移行先 | Playwright | 2026年に移行チームの90%が到達する場所 |
| AI互換性 | Playwright | 型付きAPIは最も信頼性の高いAI生成テストを生み出す |
| 全体 (2026) | Playwright | 速度、機能、コスト、コミュニティの最佳バランス |
2026年に新規プロジェクトを開始するほとんどのチームにとって、Playwrightはデフォルトの選択です。 それは最速で、最も有能で、完全に無料です。上記の表の12カテゴリ中9つで勝利しています。
しかし、デフォルトは普遍的ではありません。Cypressは、インタラクティブなデバッグとコンポーネントテストを優先し、そのアーキテクチャ上の制約内で生活できるフロントエンドチームにとって正しい選択のままです。Seleniumは、既存のテストインフラを持つJava/Pythonエンタープライズ環境、およびIEサポートが重要な increasingly rare なケースにとって不可欠のままです。
最悪の決定は分析麻痺です。チームの言語、ブラウザ要件、CI予算、およびデバッグの好みを評価してください。一つを選んでください。テスト書き始めてください。後でいつでも移行できます、そして上記で示したように、移行パスはよく文書化されています。
ソース
- Playwright ドキュメント
- Cypress Cloud 価格
- npm Trends, Playwright vs Cypress vs Selenium
- Checkly, 速度比較ベンチマーク
- Next.js, Playwrightでのテスト
- State of JavaScript 2024 -- テストライブラリ
- BigBinary, なぜCypressからPlaywrightに切り替えたか
Playwright vs Cypress vs Selenium: FAQ
PlaywrightはCypressより優れていますか?
2026年のほとんどのチームにとって、はい。Playwrightはより高速(ベンチマークで2倍)、より多くのブラウザと言語をサポートし、無料の並列化、より良いTypeScriptサポートを持っています。CypressはインタラクティブなデバッグDXとコンポーネントテストの成熟度で勝利します。もしこれら2つがあなたの最優先事項なら、Cypressは依然として強力な選択です。
PlaywrightはSeleniumを置き換えていますか?
JavaScript/TypeScriptエコシステムでは、 largely yes です。Playwrightのnpmダウンロード数はCypressの約4.5倍、Selenium WebDriverの17倍です。しかし、Seleniumはそのマルチ言語サポートと数十年のエコシステムツールが不可欠なJavaおよびPythonエンタープライズ環境で支配的ままです。Seleniumは死んでいません、ニッチへと狭まっています。
どちらが速いですか、PlaywrightかCypress?
Playwrightはテストスイートを約2倍高速に実行します。 comparable benchmarks で 4.5秒 対 9.4秒 です。PlaywrightのブラウザコンテキストモデルはCypressのプロセスモデルよりも効率的であるため、この差は大きなスイートで広がります。あるチームは移行後、総CI時間の89%削減を報告しました。
CypressはSafariをサポートしていますか?
Cypressには実験的なWebKitサポートがありますが、本番環境対応とは見なされていません。PlaywrightはWebKit(Safariのレンダリングエンジン)を、どのOSでも実行されるファーストクラスで完全にサポートされたブラウザとして含んでいます。もしSafariテストがあなたのユーザーにとって重要なら、Playwrightはより安全な選択です。
2026年にSeleniumは死んでいますか?
いいえ。Seleniumは依然として世界中で最も広く導入されているE2Eフレームワークであり、特にJavaおよびPythonエコシステムでそうです。それはIE/レガシーブラウザテストのための唯一のオプションです。しかし、新しいJavaScript/TypeScriptプロジェクトにとって、PlaywrightとCypressはあらゆる実用的な指標においてより良い選択です。
Playwrightはモバイルアプリをテストできますか?
Playwrightは正確なビューポート、タッチ、およびユーザーエージェントシミュレーションにより、モバイルブラウザ(Android用Chrome、WebKit経由のiOS用Safari)をエミュレートできます。ネイティブモバイルアプリを自動化することはできません。ネイティブアプリテストのためには、Appium(SeleniumのWebDriverプロトコルを使用)またはDetoxのような専用モバイルテストフレームワークが必要です。
まずPlaywrightとCypressのどちらを学ぶべきですか?
2026年にE2Eテスト初心者なら、Playwrightから始めてください。それは strongest growth trajectory、最も包括的な機能セットを持ち、スキルはあらゆるJavaScript/TypeScriptプロジェクトに移行可能です。如果你的团队已经使用 Cypress 或者交互式调试是你的主要关注点,那么学习 Cypress 是值得的。
Playwrightの欠点は何ですか?
Playwrightのインタラクティブなデバッグ体験はCypressのTest Runnerほど洗練されていません(ただしPlaywright UIモードはギャップを縮めています)。そのコンポーネントテストはCypressのものほど成熟していません。そして、その迅速な月次リリースサイクル意味着API表面が頻繁に変化するため、アップデートに追随する必要があります。
Cypress Cloudはいくらですか?
Cypress Cloudは、年間120,000テスト結果を持つTeamプランで $67/月 (年払い)から始まり、無制限の結果を持つBusinessプランでは $267/月 になります。エンタープライズ価格はカスタムです。Playwrightは同等の機能、並列化、HTMLレポーターによるテストアナリティクス、およびリトライによるFlake検出を無料で提供します。
GitHub Actionsと最も相性の良いE2Eフレームワークはどれですか?
3つすべてがGitHub Actionsで動作しますが、Playwrightは最少の設定を必要とします。Playwrightの公式Dockerイメージと組み込みのシャーディング(--shard=1/4)使得CI設定は単一のYAMLファイルになります。Cypressはその公式GitHub Actionと並列化のためのCypress Cloudサブスクリプションを必要とします。Seleniumはブラウザドライバー用のサービスコンテナを必要とします。
PlaywrightはJavaまたはPythonで動作しますか?
はい。PlaywrightにはMicrosoftによって維持されている公式のJava、Python、C#、およびJavaScript/TypeScriptバインディングがあります。CypressはJavaScript/TypeScriptのみです。これ使得Playwrightは、言語を切り替えることなく現代のツールを求める非JSチームにとって魅力的なSelenium代替案となります。
SeleniumからPlaywrightに移行するにはどうすればよいですか?
Selenium alongside にPlaywrightをインストールすることから始めます。テストを段階的に翻訳します:page.locator() が driver.findElement() を置き換え、page.goto() が driver.get() を置き換え、Playwrightは自動待機するためすべての明示的な待機を削除できます。CI設定を更新し、移行期間中は両方のフレームワークを並行して実行し、すべてのテストがグリーンになったらSeleniumを廃止します。典型的な200テストスイートは1人のエンジニアで1〜2スプリントかかります。