Qu'est-ce que Capybara ?
Capybara est une library Ruby d'acceptance et integration testing qui simule comment un vrai utilisateur interagit avec une application web. Elle fournit un DSL high-level pour visiter des pages, remplir des forms, cliquer des liens et assertation de contenu rendu. Capybara est le standard de facto pour end-to-end testing dans l'écosystème Ruby/Rails.
Capybara est un test driver, pas un test framework — il fonctionne avec RSpec, Minitest ou Cucumber. Il supporte plusieurs browser drivers : rack-test, Selenium, Cuprite.
Pourquoi Capybara ?
- Se lit comme l'anglais.
- Driver-agnostique.
- Smart waiting.
- Intégration Rails.
- Écosystème mature.
Test Capybara basique (avec RSpec)
require 'rails_helper'
RSpec.feature 'User signup', type: :feature do
scenario 'user signs up successfully' do
visit '/signup'
fill_in 'Email', with: 'alice@example.com'
fill_in 'Password', with: 'secret123'
click_button 'Create account'
expect(page).to have_content 'Welcome, alice'
end
endMéthodes DSL Capybara courantes
| Action | Méthode |
|---|---|
| Naviguer | visit '/path' |
| Cliquer link/button | click_link 'text' |
| Remplir champ form | fill_in 'Label', with: 'value' |
| Sélectionner dropdown | select 'Option', from: 'Label' |
| Cocher checkbox | check 'Label' |
| Choisir radio | choose 'Label' |
| Attacher fichier | attach_file 'Label', '/path/file.png' |
| Trouver élément | find('.selector') |
| Asserter contenu | expect(page).to have_content('text') |
| Within scope | within('.sidebar') { ... } |
Drivers Capybara comparés
| Driver | Vrai navigateur ? | Vitesse | JS support ? |
|---|---|---|---|
| rack-test | Non | Plus rapide | Non |
| Selenium | Oui | Lent | Complet |
| Cuprite | Oui (Chrome via CDP) | Moyen | Complet |
Recommandé : rack-test pour tests non-JS, Cuprite pour tests JS.
Configurer Capybara
require 'capybara/rails'
require 'capybara/rspec'
Capybara.default_driver = :rack_test
Capybara.javascript_driver = :cuprite
Capybara.default_max_wait_time = 5Best practices Capybara
- Utiliser sélecteurs sémantiques.
- Ne pas désactiver auto-wait.
- Scoper les assertions.
- Cleanup base de données.
- Headless en CI.
- Screenshots on failure.
- Page Objects.
- Ne pas tester internals.
Pièges courants
- Tests flaky.
- État partagé.
- JS ne charge pas.
- Selenium qui se hang en CI.
- Comportement différent en dev vs CI.
- Ne pas tester un vrai navigateur.
Capybara vs autres outils
| Outil | Langage | Approach |
|---|---|---|
| Capybara | Ruby | DSL au-dessus drivers Selenium/CDP |
| Cypress | JS | Test runner complet |
| Playwright | JS/Python/Java/.NET | Cross-navigateur via CDP |
| Selenium WebDriver | Multi-langage | Lower-level |
| Watir | Ruby | Wrapper Selenium |
FAQ : Capybara
Capybara est-il toujours maintenu ?
Oui. Développement actif ; largement utilisé dans la communauté Rails.
Devrais-je utiliser Capybara ou Cypress ?
Capybara si Ruby/Rails. Cypress si stack JS-only.
Quel est le meilleur driver pour tests JS ?
Cuprite. Plus rapide + fiable que Selenium ChromeDriver.
Comment je teste des UIs JavaScript-driven ?
Tagger specs avec js: true.
Pourquoi mes tests Capybara sont flaky ?
Habituellement race conditions ou état partagé.
Capybara peut-il tourner headless ?
Oui — Cuprite tourne headless par défaut.
Comment je teste les file uploads ?
attach_file 'File', Rails.root.join('spec/fixtures/test.png').
Load-testez votre app testée Capybara avec LoadFocus
Les tests Capybara vérifient le comportement ; les load tests vérifient le scale. LoadFocus exécute des scripts JMeter et k6 contre votre app Rails depuis 25+ régions avec jusqu'à 12 500 VUs. Inscrivez-vous sur loadfocus.com/signup.
Outils LoadFocus connexes
Mettez ce concept en pratique avec LoadFocus — la plateforme même qui propulse tout ce que vous venez de lire.