Capybara : Guide Testing Intégration & Acceptance Ruby

Capybara est un framework Ruby d'acceptance testing — pilote un vrai navigateur via Selenium/Cuprite. Avec RSpec/Minitest pour tests end-to-end Rails.

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
end

Méthodes DSL Capybara courantes

ActionMéthode
Naviguervisit '/path'
Cliquer link/buttonclick_link 'text'
Remplir champ formfill_in 'Label', with: 'value'
Sélectionner dropdownselect 'Option', from: 'Label'
Cocher checkboxcheck 'Label'
Choisir radiochoose 'Label'
Attacher fichierattach_file 'Label', '/path/file.png'
Trouver élémentfind('.selector')
Asserter contenuexpect(page).to have_content('text')
Within scopewithin('.sidebar') { ... }

Drivers Capybara comparés

DriverVrai navigateur ?VitesseJS support ?
rack-testNonPlus rapideNon
SeleniumOuiLentComplet
CupriteOui (Chrome via CDP)MoyenComplet

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 = 5

Best 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

OutilLangageApproach
CapybaraRubyDSL au-dessus drivers Selenium/CDP
CypressJSTest runner complet
PlaywrightJS/Python/Java/.NETCross-navigateur via CDP
Selenium WebDriverMulti-langageLower-level
WatirRubyWrapper 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.

Quelle est la vitesse de votre site web?

Augmentez sa vitesse et son référencement naturel de manière transparente avec notre Test de Vitesse gratuit.

Test gratuit de vitesse du site Web

Analyser la vitesse de chargement de votre site Web et améliorer ses performances avec notre outil gratuit de vérification de la vitesse de la page.

×