フレームワーク比較 · 2026

Cypress vs Selenium

CypressとSeleniumは、ブラウザテストに対して正反対のアプローチを取ります。一方はブラウザの内部で実行され、もう一方は外部からブラウザを操作します。このガイドでは、アーキテクチャ、対応言語、ブラウザカバレッジ、並列化、デバッグの各観点で両者を徹底的に比較し、コードサンプルと5分で実践できる結論を交えてお届けします。

ブラウザとデバイス
6100+
クラウド並列処理
100×
稼働時間SLA
99.99%

世界で最も革新的な企業のいくつかから信頼されています

30秒で答える

どちらを選ぶべきでしょうか?

Cypress Cypressを選ぶべき理由は…

チームがJavaScriptまたはTypeScriptでコーディングを行い、Chrome、Edge、またはFirefoxで最新のWebアプリをテストし、組み込みのリトライ、タイムトラベルデバッグ、付属のテストランナーを備えた最高の開発者体験を求めている場合。

Selenium Seleniumを選ぶべきなのは…

チームがJava、C#、またはRubyで開発を行っている場合、レガシーブラウザ(Internet Explorer、Safari)のサポート、Appium経由での実際のモバイルデバイス、またはCypressでは扱えないマルチタブやクロスオリジンのフローが必要な場合。

両方選ぶべき場合…

高速なコンポーネントテストやフロントエンドテストにはCypressを、幅広いクロスブラウザおよびモバイルカバレッジにはSeleniumを使いたい場合。TestingBotは両方を同じグリッド上で、並列に、1つのダッシュボードで実行します。

背景

CypressとSeleniumとは何ですか?

2つのフレームワーク、2つのアーキテクチャ。しかし、目標は同じ。ブラウザを操作してエンドツーエンドテストを自動化することだ。

Cypress

Cypress

リリース日:2017年 · Cypress.io · MIT

Cypressは、テストをブラウザの内部で、アプリケーションと同じ実行ループ内で実行するJavaScriptのエンドツーエンドテストフレームワークです。このアーキテクチャにより、DOMへの直接アクセス、自動待機、タイムトラベルスナップショットがデフォルトで利用できます。

ブラウザ内部で動作するため、Cypressは優れた開発者体験を備えています。組み込みのテストランナー、リアルタイムリロード、ビジュアルデバッガなどです。同じアーキテクチャは、JavaScriptとTypeScript、固定されたブラウザセット、シングルタブのフローに制限されるという制約ももたらします。

  • JavaScriptとTypeScriptのみ
  • 自動リトライ、タイムトラベルデバッグ、cy.intercept
  • Chrome、Edge、Firefox、Electron · IE / Safariは非対応
Selenium

Selenium

2004年リリース · オープンソース · Apache 2.0

Seleniumは、元祖ブラウザ自動化フレームワークであり、W3C WebDriver標準の基盤となっています。Selenium WebDriverは、ベンダー提供のドライバ(chromedriver、geckodriver、safaridriver、edgedriver)を介して、同一のワイヤプロトコルを使用してあらゆるブラウザを外部から操作します。

20年にわたるエコシステムの成熟により、主要なすべての言語に対応したバインディング、IDEとの高度な統合、成熟したPage Objectパターン、そして同じプロトコル上に構築されたAppiumを介した実際のモバイルデバイステストが実現しました。

  • Java / Python / C# / Ruby / JavaScript / Kotlin
  • W3C WebDriver標準、すべてのブラウザで動作します
  • Chrome、Firefox、Safari、Edge、IE 11 · Appium経由での実際のモバイル
直接対決

Cypress vs Selenium:並べて比較

CI での選択、移行、または両方の実行において重要なあらゆる側面において。

Cypress versus Selenium feature comparison
項目 Cypress Selenium
First release 2017 2004
Maintained by Cypress.io Open-source community + W3C
Languages JavaScript / TypeScript only Java, Python, C#, Ruby, JS, Kotlin
Architecture Runs inside the browser Drives the browser via WebDriver
Browsers Chrome, Edge, Firefox, Electron Chrome, Firefox, Safari, Edge, IE 11
Mobile testing Viewport emulation only Real iOS + Android via Appium
Auto-waiting Built-in retries Manual waits or WebDriverWait
Network stubbing First-class (cy.intercept) BiDi (Selenium 4) or proxy
Multiple tabs / windows Not supported Window switching API
Cross-origin cy.origin() (constrained) Native
Test runner Built in Bring your own (JUnit, pytest, Mocha…)
Debugging Time-travel snapshots + runner IDE + driver logs
Parallel execution Cypress Cloud (paid) or a grid Selenium Grid
Developer experience Real-time reload, in-browser Functional, IDE-based
Ecosystem maturity Growing fast since 2017 20 years of integrations
Free for open source on TestingBot

機能に関する注記は、2026年時点のCypress 13.xおよびSelenium 4.xを反映しています。両フレームワークはTestingBotのクラウド上で動作し、Cypressはtestingbot-cypress-cli経由で、SeleniumはWebDriverハブ経由で実行されます。

両方で同じテストを実施

ログインし、結果を検証する

組み込みのリトライ(Cypress)を使用したログインフローと、明示的な待機(Selenium)を使用したログインフローを比較します。どちらも同じTestingBotグリッド上で実行されます。

Cypress + TypeScript login.cy.ts
// 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');
  });
});
Selenium + Python test_login.py
# Driver points at TestingBot remote URL
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def test_login_redirects_to_dashboard(driver):
    driver.get('https://app.example.com/login')

    driver.find_element(By.NAME, 'username').send_keys('jane@example.com')
    driver.find_element(By.NAME, 'password').send_keys('••••••••')
    driver.find_element(By.CSS_SELECTOR, 'button[type=submit]').click()

    # explicit wait
    WebDriverWait(driver, 10).until(EC.url_contains('/dashboard'))
    welcome = driver.find_element(By.TAG_NAME, 'h1')
    assert 'Welcome, Jane' in welcome.text

Cypressのスペックはtestingbot-cypress-cli経由で実行され、SeleniumのテストはWebDriverハブに接続します。どちらも同じTestingBotダッシュボードに表示されます。

意思決定マトリックス

どちらを選ぶかは

Cypressを選ぶとき

  • 技術スタックがJavaScriptまたはTypeScriptを主体としており、テストランナー、アサーション、リトライがフレームワークに付属していてほしい場合。
  • Chrome、Edge、またはFirefoxで最新のWebアプリをテストしており、Internet ExplorerやSafariの要件がない場合。
  • 開発者体験を重視している場合:タイムトラベルデバッグ、リアルタイムリロード、読みやすい失敗時のスナップショット。
  • プロキシを追加することなく、cy.interceptによる一流のネットワークスタブ機能が必要な場合。
  • フローがシングルタブ内に収まり、ほぼ単一のオリジンで完結する場合(cy.originは制約の範囲内で役立ちます)。
TestingBotでCypressを実行する

Seleniumを選択する場合

  • チームがJava、C#、Ruby、またはPythonで開発を行っており、JavaScript優先のAPIではなく、完全なバインディングの互換性を求めている場合。
  • Internet Explorer 11、Safari、またはCypressがサポートしていないブラウザビルドでテストする必要がある場合。
  • 実際のiOSおよびAndroidデバイスをテストする場合。Appiumは、Seleniumの基盤となっているWebDriverプロトコルを再利用します。
  • テストが複数のタブやウィンドウを開いたり、複数のオリジンにまたがったりする場合。これらはCypressでは部分的にしか扱えません。
  • 書き直したくない成熟したPage ObjectライブラリやBDDフレームワーク(Cucumber、SpecFlow)をお持ちの場合。
TestingBotでSeleniumを実行する
TestingBotは両方をサポートしています

どちらかを選ぶのはやめて、両方を同じグリッドで実行しよう

Cypressをtestingbot-cypress-cli経由で実行し、SeleniumをWebDriverハブに指定します。テストは同じ6100+ブラウザとデバイス、同じダッシュボード、同じ並列スロット、同じEUデータ所在地を共有し、Cypress Cloudのサブスクリプションは不要です。

  • Cypress CloudプランなしでのCypress並列化
  • 両フレームワークのテスト履歴を並べて表示
  • オープンソースであれば無料、両方のフレームワーク
testingbot.com / run both
// Cypress
$ npm i -D testingbot-cypress-cli
$ testingbot-cypress run # reads testingbot.json
# Selenium
webdriver.Remote(
command_executor='https://hub.testingbot.com/wd/hub'
)
よくある質問

よくある質問

チームがこれらのフレームワークを選択する前、あるいはフレームワーク間を移行する前に自問する質問。

CypressはSeleniumより優れていますか?

どちらかが普遍的に優れているわけではなく、それぞれ異なるチームに適しています。Cypressは、最新のWebアプリをテストするJavaScriptおよびTypeScriptチームにとって、開発者体験で勝ります。組み込みのリトライ、タイムトラベルデバッグ、付属のテストランナーなどです。Seleniumは幅広さで勝ります。より多くの言語、Internet ExplorerやSafariを含むすべてのブラウザ、Appium経由での実際のモバイル、マルチタブやクロスオリジンのフローに対応します。制約の範囲内での使いやすさを求めるならCypressを、カバレッジと柔軟性を求めるならSeleniumを選びましょう。

SeleniumからCypressに移行すべきでしょうか?

あなたのニーズがCypressの制約の範囲内に収まる場合に限ります。スイートがJavaScriptベースで、Chrome、Edge、またはFirefoxを対象としており、シングルタブ内に収まる場合は、Cypressのリトライとデバッグ機能が移行を正当化することがよくあります。Java、C#、またはRubyに依存している場合、Internet ExplorerやSafariをテストする場合、実際のモバイルデバイスを操作する場合、あるいはマルチタブやクロスオリジンのフローが必要な場合は、移行によって機能を失うことになります。多くのチームは両方を維持します。フロントエンドテストにはCypressを、幅広いクロスブラウザおよびモバイルカバレッジにはSeleniumを使用します。

CypressはSeleniumがサポートするすべてのブラウザをサポートしていますか?

いいえ。CypressはChromiumベースのブラウザ(Chrome、Edge、Electron)とFirefoxで動作し、WebKitは実験的にサポートしています。Internet Explorerや実際のSafariは操作できません。Seleniumは、ベンダー提供のドライバを介して、Internet Explorer 11やSafariを含む実際のブラウザバイナリを操作します。IEまたはSafariのカバレッジが必要な場合は、この2つのうちSeleniumが唯一の選択肢となります。

Cypressはモバイルアプリのテストを行うことができますか?

ネイティブでは対応していません。Cypressはモバイル画面をエミュレートするためのビューポートのリサイズ機能を提供していますが、ネイティブのiOSアプリやAndroidアプリを操作することはできません。実際のモバイルテストには、AppiumXCUITestEspresso、またはMaestroが必要です。Appiumは、Seleniumの基盤となっているWebDriverプロトコルを再利用します。TestingBotは、実際のiOSおよびAndroidデバイス上でこれらのすべてをサポートしています。

Cypressを並列で実行するにはCypress Cloudが必要ですか?

いいえ。Cypress独自の並列化と録画はCypress Cloud(有料サブスクリプション)経由で実行されます。TestingBotは代替手段です。testingbot-cypress-cliがスペックを圧縮してアップロードし、クラウドグリッド上のChrome、Edge、Firefoxにわたって並列に実行します。ライブログとビデオが利用でき、Cypress Cloudプランは不要です。並列数はtestingbot.jsonで設定します。

CypressとSeleniumは同じCIパイプラインを共有できますか?

はい。どちらもCI/CDで実行され、TestingBot上の同じ場所に結果を報告します。一般的な構成では、高速なフロントエンドスペックにはCypressを、幅広いクロスブラウザおよびモバイルカバレッジにはSeleniumを同じパイプライン内で実行し、どちらも同じ認証情報とビルド名でTestingBotグリッドを対象とします。

TestingBot上でCypressとSeleniumを実行できますか?

はい、どちらも同じTestingBotクラウド上で動作します。Cypressはtestingbot-cypress-cliのnpmパッケージ経由で実行され、testingbot.jsonファイルで構成し、testingbot-cypress runで起動します。Seleniumはwebdriver.Remoteを介してhttps://hub.testingbot.com/wd/hubに接続します。どちらのテストも同じダッシュボードに表示され、並列スロットを共有し、同じEUデータ所在地、ビデオ録画、CI/CD統合のメリットを享受できます。どちらもオープンソースプロジェクトでは無料で利用できます。

さらに詳しく知りたい方は、専用のCypressページとSeleniumページをご覧ください。

無料トライアルにサインアップ

TestingBotのクラウド上で、Cypress、Selenium、またはその両方を実行できます。Cypress Cloudのサブスクリプションは不要です。

無料トライアルを開始する