test rails page example and capybara phantomjs poltergeist

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.

https://github.com/bbatsov/ruby-style-guide#hash-literals

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í!