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.