Capybara: Ruby Integration & Acceptance Testing Guide

Capybara ist ein Ruby Acceptance-Testing-Framework — treibt einen echten Browser via Selenium/Cuprite. Mit RSpec/Minitest für End-to-End-Rails-Tests.

Was ist Capybara?

Capybara ist eine Ruby Acceptance- und Integration-Testing-Library, die simuliert, wie ein echter User mit einer Web-Anwendung interagiert. Es bietet ein High-Level-DSL zum Visiten von Seiten, Ausfüllen von Forms, Klicken von Links und Asserten von gerendertem Content. Capybara ist der de-facto Standard für End-to-End-Testing im Ruby/Rails-Ökosystem.

Capybara ist ein Test-Driver, kein Test-Framework — es funktioniert mit RSpec, Minitest oder Cucumber. Es unterstützt mehrere Browser-Driver: rack-test, Selenium, Cuprite.

Warum Capybara?

  • Liest sich wie Englisch.
  • Driver-agnostisch.
  • Smart Waiting.
  • Rails-Integration.
  • Mature Ökosystem.

Basic Capybara-Test (mit 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

Häufige Capybara-DSL-Methoden

AktionMethode
Navigierenvisit '/path'
Link/Button klickenclick_link 'text'
Form-Field ausfüllenfill_in 'Label', with: 'value'
Dropdown auswählenselect 'Option', from: 'Label'
Checkbox checkencheck 'Label'
Radio wählenchoose 'Label'
Datei attachenattach_file 'Label', '/path/file.png'
Element findenfind('.selector')
Content assertenexpect(page).to have_content('text')
Within scopewithin('.sidebar') { ... }

Capybara-Driver verglichen

DriverEchter Browser?GeschwindigkeitJS-Support?
rack-testNeinSchnellsteNein
SeleniumJaLangsamVoll
CupriteJa (Chrome via CDP)MediumVoll

Empfohlen: rack-test für non-JS-Tests, Cuprite für JS-Tests.

Capybara konfigurieren

require 'capybara/rails'
require 'capybara/rspec'

Capybara.default_driver = :rack_test
Capybara.javascript_driver = :cuprite
Capybara.default_max_wait_time = 5

Capybara Best Practices

  • Semantische Selektoren nutzen.
  • Auto-Wait nicht disablen.
  • Assertions scopen.
  • Database-Cleanup.
  • Headless in CI.
  • Screenshots on Failure.
  • Page Objects.
  • Internals nicht testen.

Häufige Fallstricke

  • Flaky Tests.
  • Geteilter State.
  • JS lädt nicht.
  • Selenium hängt in CI.
  • Verschiedenes Verhalten in Dev vs CI.
  • Echten Browser nicht testen.

Capybara vs andere Tools

ToolSpracheAnsatz
CapybaraRubyDSL auf Selenium/CDP-Drivers
CypressJSFull Test-Runner
PlaywrightJS/Python/Java/.NETCross-Browser via CDP
Selenium WebDriverMulti-LanguageLower-Level
WatirRubySelenium-Wrapper

FAQ: Capybara

Wird Capybara noch maintained?

Ja. Aktive Entwicklung; weit genutzt in Rails-Community.

Sollte ich Capybara oder Cypress nutzen?

Capybara wenn Ruby/Rails. Cypress wenn JS-only-Stack.

Was ist der beste Driver für JS-Tests?

Cuprite. Schneller + zuverlässiger als Selenium ChromeDriver.

Wie teste ich JavaScript-driven UIs?

Specs mit js: true taggen.

Warum sind meine Capybara-Tests flaky?

Meist Race-Conditions oder geteilter State.

Kann Capybara headless laufen?

Ja — Cuprite läuft headless by default.

Wie teste ich File-Uploads?

attach_file 'File', Rails.root.join('spec/fixtures/test.png').

Load-Testen Sie Ihre Capybara-getestete App mit LoadFocus

Capybara-Tests verifizieren Verhalten; Load-Tests verifizieren Scale. LoadFocus läuft JMeter- und k6-Scripts gegen Ihre Rails-App aus 25+ Regionen mit bis zu 12.500 VUs. Registrieren bei loadfocus.com/signup.

Wie schnell ist Ihre Website?

Steigern Sie ihre Geschwindigkeit und SEO nahtlos mit unserem kostenlosen Geschwindigkeitstest.

Kostenloser Websitespeed-Test

Analysieren Sie die Ladegeschwindigkeit Ihrer Website und verbessern Sie ihre Leistung mit unserem kostenlosen Seitengeschwindigkeits-Checker.

×