- Page d'accueil
- /
- Cypress vs Selenium
Cypress vs Selenium
Cypress et Selenium adoptent des approches opposées des tests de navigateur : l'un s'exécute à l'intérieur du navigateur, l'autre le pilote depuis l'extérieur. Ce guide les compare directement sur l'architecture, les langages, la couverture des navigateurs, la parallélisation et le débogage, avec des exemples de code et une conclusion exploitable en cinq minutes.
- Navigateurs et appareils
- 6100+
- Parallélisme du cloud
- 100×
- SLA de disponibilité
- 99.99%
Aimé par ces entreprises
Lequel choisir ?
Votre équipe écrit en JavaScript ou TypeScript, vous testez une application web moderne sur Chrome, Edge ou Firefox, et vous souhaitez la meilleure expérience développeur avec des relances intégrées, un débogage par voyage dans le temps et un lanceur de tests inclus.
Votre équipe programme en Java, C# ou Ruby, vous avez besoin de la prise en charge des navigateurs anciens (Internet Explorer, Safari), de véritables appareils mobiles via Appium, ou de flux multi-onglets et inter-origines que Cypress ne peut pas gérer.
Vous souhaitez Cypress pour des tests rapides de composants et front-end, et Selenium pour une large couverture multi-navigateurs et mobile. TestingBot exécute les deux sur la même grille, en parallèle, dans un seul tableau de bord.
Que sont Cypress et Selenium ?
Deux frameworks, deux architectures. Le même objectif : piloter un navigateur pour automatiser les tests de bout en bout.
Cypress
Publié en 2017 · Cypress.io · MIT
Cypress est un framework de test de bout en bout JavaScript qui exécute vos tests à l'intérieur du navigateur, dans la même boucle d'exécution que votre application. Cette architecture lui donne un accès direct au DOM, une attente automatique et des instantanés de voyage dans le temps prêts à l'emploi.
Comme il vit dans le navigateur, Cypress offre une excellente expérience développeur : un lanceur de tests intégré, des rechargements en temps réel et un débogueur visuel. Cette même architecture le limite aussi à JavaScript et TypeScript, à un ensemble fixe de navigateurs et aux flux à onglet unique.
- JavaScript et TypeScript uniquement
- Relances automatiques, débogage par voyage dans le temps, cy.intercept
- Chrome, Edge, Firefox, Electron · pas d'IE / Safari
Selenium
Sorti en 2004 · Logiciel libre · Apache 2.0
Selenium est le framework d'automatisation de navigateur d'origine et la base de la norme WebDriver du W3C. Selenium WebDriver pilote n'importe quel navigateur depuis l'extérieur via un pilote fourni par l'éditeur (chromedriver, geckodriver, safaridriver, edgedriver) en utilisant le même protocole de communication.
Vingt ans de maturité de l'écosystème se traduisent par des liaisons pour tous les principaux langages, une intégration poussée avec les IDE, des modèles Page Object éprouvés et des tests sur de véritables appareils mobiles via Appium, qui repose sur le même protocole.
- Java / Python / C# / Ruby / JavaScript / Kotlin
- Norme WebDriver du W3C, fonctionne avec tous les navigateurs
- Chrome, Firefox, Safari, Edge, IE 11 · mobile réel via Appium
Cypress vs Selenium : comparaison côte à côte
À travers les dimensions qui comptent pour la sélection, la migration ou l'exécution des deux dans l'intégration continue.
| Dimension |
|
|
|---|---|---|
| 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 | ✓ | ✓ |
Les notes sur les fonctionnalités reflètent Cypress 13.x et Selenium 4.x en 2026. Les deux frameworks s'exécutent sur le cloud de TestingBot, Cypress via le testingbot-cypress-cli et Selenium via le hub WebDriver.
Se connecter, affirmer le résultat
Un flux de connexion avec relances intégrées (Cypress) face à une attente explicite (Selenium). Les deux s'exécutent sur la même grille 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'); }); });
# 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
Le spec Cypress passe par le testingbot-cypress-cli ; le test Selenium se connecte au hub WebDriver. Les deux apparaissent dans le même tableau de bord TestingBot.
Quand choisir lequel
Choisir Cypress quand
- Votre pile technologique est principalement axée sur JavaScript ou TypeScript et vous souhaitez que le lanceur de tests, les assertions et les relances soient fournis avec le framework.
- Vous testez une application web moderne sur Chrome, Edge ou Firefox, sans exigence d'Internet Explorer ni de Safari.
- Vous accordez de l'importance à l'expérience développeur : débogage par voyage dans le temps, rechargements en temps réel et instantanés d'échec lisibles.
- Vous souhaitez une simulation réseau de premier ordre avec cy.intercept, sans ajouter de proxy.
- Vos flux restent dans un seul onglet et principalement sur une seule origine (cy.origin aide, dans certaines limites).
Choisissez Selenium lorsque
- Votre équipe écrit en Java, C#, Ruby ou Python et vous souhaitez une parité complète des liaisons, et non une API privilégiant JavaScript.
- Vous devez effectuer des tests sur Internet Explorer 11, Safari, ou des versions de navigateur que Cypress ne prend pas en charge.
- Vous testez de véritables appareils iOS et Android, où Appium réutilise le protocole WebDriver sur lequel repose Selenium.
- Vos tests ouvrent plusieurs onglets ou fenêtres, ou traversent plusieurs origines, ce que Cypress ne gère que partiellement.
- Vous disposez d'une bibliothèque Page Object mature ou d'un framework BDD (Cucumber, SpecFlow) que vous ne souhaitez pas réécrire.
Arrêtez de choisir, exécutez les deux sur la même grille
Exécutez Cypress via le testingbot-cypress-cli et pointez Selenium vers le hub WebDriver. Vos tests partagent les mêmes navigateurs et appareils 6100+, le même tableau de bord, les mêmes emplacements parallèles et la même résidence des données dans l'UE, sans abonnement Cypress Cloud requis.
- Parallélisation de Cypress sans forfait Cypress Cloud
- Historique des tests côte à côte pour les deux frameworks
- Gratuit pour les logiciels libres, pour les deux frameworks
command_executor='https://hub.testingbot.com/wd/hub'
)
Foire aux questions
Les questions que se posent les équipes avant de choisir ces frameworks, ou de passer de l'un à l'autre.
Cypress est-il meilleur que Selenium ?
Aucun n'est universellement meilleur ; ils conviennent à des équipes différentes. Cypress l'emporte sur l'expérience développeur pour les équipes JavaScript et TypeScript qui testent des applications web modernes : relances intégrées, débogage par voyage dans le temps et lanceur de tests inclus. Selenium l'emporte sur l'étendue : plus de langages, tous les navigateurs y compris Internet Explorer et Safari, mobile réel via Appium, et flux multi-onglets et inter-origines. Choisissez Cypress pour l'ergonomie dans ses limites ; choisissez Selenium pour la couverture et la flexibilité.
Devrais-je migrer de Selenium vers Cypress ?
Uniquement si vos besoins s'inscrivent dans les limites de Cypress. Si votre suite est basée sur JavaScript, cible Chrome, Edge ou Firefox, et reste dans un seul onglet, les relances et le débogage de Cypress justifient souvent le changement. Si vous dépendez de Java, C# ou Ruby, testez Internet Explorer ou Safari, pilotez de véritables appareils mobiles, ou avez besoin de flux multi-onglets et inter-origines, la migration vous coûtera des fonctionnalités. De nombreuses équipes conservent les deux : Cypress pour les tests front-end, Selenium pour une large couverture multi-navigateurs et mobile.
Cypress prend-il en charge tous les navigateurs gérés par Selenium ?
Non. Cypress s'exécute sur les navigateurs basés sur Chromium (Chrome, Edge, Electron) et Firefox, avec une prise en charge expérimentale de WebKit. Il ne peut pas piloter Internet Explorer ni le véritable Safari. Selenium pilote les binaires réels des navigateurs via les pilotes fournis par les éditeurs, y compris Internet Explorer 11 et Safari. Si vous avez besoin d'une couverture IE ou Safari, Selenium est la seule option des deux.
Cypress peut-il tester des applications mobiles ?
Pas nativement. Cypress propose le redimensionnement de la fenêtre d'affichage pour émuler un écran mobile, mais il ne peut pas piloter d'applications iOS ou Android natives. Pour de véritables tests mobiles, vous avez besoin d'Appium, XCUITest, Espresso ou Maestro. Appium réutilise le protocole WebDriver sur lequel repose Selenium. TestingBot exécute toutes ces solutions sur de véritables appareils iOS et Android.
Ai-je besoin de Cypress Cloud pour exécuter Cypress en parallèle ?
Non. La parallélisation et l'enregistrement propres à Cypress passent par Cypress Cloud, un abonnement payant. TestingBot est une alternative : le testingbot-cypress-cli compresse vos specs, les téléverse et les exécute en parallèle sur Chrome, Edge et Firefox sur la grille cloud, avec journaux en direct et vidéo, et sans forfait Cypress Cloud. Vous définissez le nombre d'exécutions parallèles dans testingbot.json.
Cypress et Selenium peuvent-ils partager le même pipeline CI ?
Oui. Les deux s'exécutent dans la CI/CD et renvoient les résultats au même endroit sur TestingBot. Une configuration courante exécute Cypress pour des specs front-end rapides et Selenium pour une large couverture multi-navigateurs et mobile dans le même pipeline, les deux pointés vers la grille TestingBot avec les mêmes identifiants et le même nom de build.
Puis-je exécuter Cypress et Selenium sur TestingBot ?
Oui, les deux s'exécutent sur le même cloud TestingBot. Cypress s'exécute via le paquet npm testingbot-cypress-cli, configuré avec un fichier testingbot.json et lancé avec testingbot-cypress run. Selenium se connecte à https://hub.testingbot.com/wd/hub via webdriver.Remote. Les tests des deux apparaissent dans le même tableau de bord, partagent des emplacements parallèles et bénéficient de la même résidence des données dans l'UE, de l'enregistrement vidéo et des intégrations CI/CD. Les deux sont gratuits pour les projets open source.
Vous souhaitez aller plus loin ? Consultez les pages dédiées à Cypress et Selenium.
Related comparisons
Inscrivez-vous pour un essai gratuit
Exécutez Cypress, Selenium, ou les deux, sur le cloud de TestingBot. Aucun abonnement Cypress Cloud requis.
Essai gratuit