page - capybara test rails
Poltergeist lanza errores JS cuando js_errors: false (4)
@Leonardo Galani
De acuerdo con la guía de estilo ruby, tu comentario de sintaxis no es cierto. Entonces la respuesta podría ser {js_errors: false} también.
Tengo una gran suite de pruebas que usa poltergeist y capybara. Sigo recibiendo el siguiente error:
One or more errors were raised in the Javascript code on the page. If you don''t care about
these errors, you can ignore them by setting js_errors: false in your Poltergeist
configuration (see documentation for details).
Estoy bastante seguro de que he configurado js_errors: falso, pero todavía estoy recibiendo los errores. Me doy cuenta de que la solución óptima es reparar el JS, pero heredaré un código heredado y corregir los errores está fuera del alcance de mi función. Mi archivo de ayuda de especificaciones se ve así:
ENV["RAILS_ENV"] ||= ''test''
require File.expand_path("../../config/environment", __FILE__)
require ''rspec/rails''
require ''rspec/autorun''
require ''capybara/poltergeist''
Capybara.javascript_driver = :poltergeist
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, {js_errors: false})
end
Capybara.current_driver = :poltergeist
Capybara.configure do |config|
config.match = :one
config.exact_options = true
config.ignore_hidden_elements = true
config.visible_text_only = true
end
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
config.infer_base_class_for_anonymous_controllers = false
config.order = "random"
end
Estoy confundido en cuanto a dónde ir o si estoy ignorando los errores JS adecuadamente. Avíseme si hay alguna otra información que pueda haber pasado por alto o que haya omitido incluir. Gracias por tu tiempo.
No estoy seguro de por qué su código no funciona. Acabo de tener un error de JS similar e hice lo siguiente (como se menciona en esta página (búsqueda de js_errors)), y básicamente lo que sugirió Leonardo Galani (he subestimado la respuesta de Leonardo para tomarla de -1 a 0):
require ''capybara/poltergeist''
Capybara.javascript_driver = :poltergeist
options = {js_errors: false}
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, options)
end
También probé este estilo, y también funcionó:
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, {js_errors: false})
end
FWIW: Mi error (en la prueba de pepino) tenía este aspecto:
Capybara::Poltergeist::JavascriptError: One or more errors were raised in the
Javascript code on the page. If you don''t care about these errors, you can ignore
them by setting js_errors: false in your Poltergeist configuration (see
documentation for details).
TypeError: Unable to delete property.
TypeError: Unable to delete property.
at :84
at http://maps.gstatic.com/cat_js/maps-api-v3/api/js/17/20/%7Bmain,geometry%7D.js:19 in Ke
at http://maps.gstatic.com/cat_js/maps-api-v3/api/js/17/20/%7Bmain,geometry%7D.js:19 in Ke
at http://maps.gstatic.com/cat_js/maps-api-v3/api/js/17/20/%7Bmain,geometry%7D.js:18
No necesita un hash si solo está usando una opción para el register_driver.
Además, no es js_errors:false
sino :js_errors => false
O puede establecer el hash para que pueda agregar más opciones si lo necesita en el futuro.
options = {:js_errors => false}
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, options)
end
Tuve el mismo problema, js_errors: false
no resolvió el problema, pero phantomjs_logger: "/dev/null"
¡sí!