Capybara: Guía Testing Integración & Aceptación Ruby

Capybara es un framework Ruby de acceptance testing — maneja un browser real vía Selenium/Cuprite. Con RSpec/Minitest para tests end-to-end Rails.

¿Qué es Capybara?

Capybara es una librería Ruby de acceptance e integration testing que simula cómo un usuario real interactúa con una aplicación web. Provee un DSL high-level para visitar páginas, llenar forms, hacer click en links y assertar contenido renderizado. Capybara es el estándar de facto para end-to-end testing en el ecosistema Ruby/Rails.

Capybara es un test driver, no un test framework — funciona con RSpec, Minitest o Cucumber. Soporta múltiples browser drivers: rack-test, Selenium, Cuprite.

¿Por qué Capybara?

  • Se lee como inglés.
  • Driver-agnóstico.
  • Smart waiting.
  • Integración Rails.
  • Ecosistema maduro.

Test Capybara básico (con 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étodos DSL Capybara comunes

AcciónMétodo
Navegarvisit '/path'
Click link/buttonclick_link 'text'
Llenar campo formfill_in 'Label', with: 'value'
Seleccionar dropdownselect 'Option', from: 'Label'
Checkear checkboxcheck 'Label'
Elegir radiochoose 'Label'
Adjuntar archivoattach_file 'Label', '/path/file.png'
Encontrar elementofind('.selector')
Assertar contenidoexpect(page).to have_content('text')
Within scopewithin('.sidebar') { ... }

Drivers Capybara comparados

Driver¿Browser real?Velocidad¿JS support?
rack-testNoMás rápidoNo
SeleniumLentoCompleto
CupriteSí (Chrome vía CDP)MedioCompleto

Recomendado: rack-test para tests non-JS, Cuprite para tests JS.

Configurando Capybara

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

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

Mejores prácticas Capybara

  • Usar selectores semánticos.
  • No disable auto-wait.
  • Scope assertions.
  • Cleanup base datos.
  • Headless en CI.
  • Screenshots on failure.
  • Page Objects.
  • No testear internals.

Pitfalls comunes

  • Tests flaky.
  • Estado compartido.
  • JS no carga.
  • Selenium colgándose en CI.
  • Comportamiento distinto en dev vs CI.
  • No testear browser real.

Capybara vs otras herramientas

HerramientaLenguajeApproach
CapybaraRubyDSL sobre drivers Selenium/CDP
CypressJSTest runner completo
PlaywrightJS/Python/Java/.NETCross-browser vía CDP
Selenium WebDriverMulti-lenguajeLower-level
WatirRubyWrapper Selenium

FAQ: Capybara

¿Sigue siendo mantenido Capybara?

Sí. Desarrollo activo; ampliamente usado en comunidad Rails.

¿Debería usar Capybara o Cypress?

Capybara si Ruby/Rails. Cypress si stack JS-only.

¿Cuál es el mejor driver para tests JS?

Cuprite. Más rápido + confiable que Selenium ChromeDriver.

¿Cómo testeo UIs JavaScript-driven?

Tagear specs con js: true.

¿Por qué mis tests Capybara son flaky?

Usualmente race conditions o estado compartido.

¿Puede Capybara correr headless?

Sí — Cuprite corre headless por default.

¿Cómo testeo file uploads?

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

Load-testea tu app testeada con Capybara con LoadFocus

Tests Capybara verifican comportamiento; load tests verifican escala. LoadFocus corre scripts JMeter y k6 contra tu app Rails desde 25+ regiones con hasta 12.500 VUs. Regístrate en loadfocus.com/signup.

¿Qué tan rápido es tu sitio web?

Mejora su velocidad y SEO sin problemas con nuestra Prueba de Velocidad gratuita.

Prueba de velocidad de sitio web gratis

Analice la velocidad de carga de su sitio web y mejore su rendimiento con nuestro comprobador de velocidad de página gratuito.

×