what rails ruby-on-rails-3 rspec capybara rspec2 poltergeist

ruby-on-rails-3 - what - rails 5 rspec



¿Cómo configuro Capybara para que funcione con Poltergeist? (1)

Tengo una prueba de integración de RSpec que necesita ejecutar JavaScript. He incluido Poltergeist e instalado PhantomJS, pero cada vez que ejecuto el ejemplo, aparece este error:

Failure/Error: page.execute_script("$(''form'')[0].submit();") Capybara::NotSupportedByDriverError: Capybara::Driver::Base#execute_script

La especificación es:

require ''spec_helper'' describe "Signup", :type => :feature do describe "workflow" do it "ensures entry of contact information" do visit ''signup/action'' # snip - use Capybara to fill out form elements page.execute_script("$(''form'')[0].submit();") page.should have_content("Name can''t be blank") page.should have_content("Email can''t be blank") # snip - use Capybara to fill out more form elements page.execute_script("$(''form'')[0].submit();") page.should have_content("Next page") end end end

Creo que el problema es que no estoy seguro de cómo indicar que Capibara debería usar Poltergeist como su controlador de JavaScript. La documentación de Poltergeist dice:

Instalación

Agregue poltergeist a su Gemfile, y en su configuración de prueba agregue:

require ''capybara/poltergeist'' Capybara.javascript_driver = :poltergeist

Pero no dice qué archivo específicamente debería entrar. También dice :

Personalización

Puede personalizar la manera en que Capibara configura Poltegeist a través del siguiente código en su configuración de prueba:

Capybara.register_driver :poltergeist do |app| Capybara::Poltergeist::Driver.new(app, options) end

Pero no tengo claro si necesitaría incluir esto en mis pruebas o cuándo. Y nuevamente, no estoy seguro de dónde ponerlo si es necesario.

¿Qué me estoy perdiendo?

  • ¿Dónde debo poner la configuración para Capybara y Poltergiest, y qué es exactamente lo que necesita decir (o cómo puedo determinarlo por mí mismo)?
  • ¿Hay algún paso o pieza de configuración que me perdí?

Intenta poner js: true en tu línea de descripción. Sé que tenía que hacer eso para las características en una aplicación en el trabajo:

describe "Signup", :type => :feature, :js => true do

No veo ninguna otra configuración para eso. Fue hace un tiempo cuando lo configuré :)

Puede llamar a los métodos de configuración del controlador de Capybara una vez antes de su bloque RSpec.configure:

Capybara.default_selector = :css Capybara.register_driver :poltergeist do |app| Capybara::Poltergeist::Driver.new(app, :window_size => [1920, 1080], :phantomjs_logger => nil) end Capybara.javascript_driver = :poltergeist RSpec.configure do |config|

También asegúrese de usar truncamiento, no transacción con limpiador de base de datos. Poltergeist se ejecuta en un hilo separado, por lo que es probable que tengas problemas de db extraños si usas transaccional.

Editar

Ah, la verdadera cosa se menciona aquí: https://github.com/jnicklas/capybara#using-capybara-with-rspec en el archivo ready de capybara.