web-dev-qa-db-fra.com

Poltergeist génère des erreurs JS lorsque js_errors: false

J'ai une grande suite de tests qui utilise poltergeist et capybara. Je continue à avoir l'erreur suivante:

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).

Je suis à peu près sûr d’avoir défini js_errors: false, mais je reçois toujours les erreurs. Je me rends compte que la solution optimale consiste à réparer le JS, mais j'hérite du code hérité et la correction des erreurs est hors de portée pour mon rôle. Mon fichier d'assistance de spécifications ressemble à ceci: 

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

Je suis confus quant à savoir où aller ou si j'ignore correctement les erreurs JS. Faites-moi savoir s'il y a d'autres informations que j'ai peut-être oubliées ou omises d'inclure. Merci pour votre temps. 

17
ruby_newbie

Je ne sais pas pourquoi votre code ne fonctionne pas. Je viens d'avoir une erreur JS similaire et j'ai fait ce qui suit (comme mentionné sur cette page (recherche de js_errors)) - et, en gros, ce que Leonardo Galani a suggéré (j'ai voté en faveur de la réponse de Leonardo: -1 à 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

J'ai aussi testé ce style, et cela a également fonctionné:

Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, {js_errors: false})
end

FWIW: Mon erreur (dans le test du concombre) ressemblait à ceci:

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
27
Jon Kern

@ Leonardo Galani

Selon le guide de style Ruby, votre commentaire de syntaxe n'est pas vrai. Donc, la réponse pourrait être {js_errors: false} aussi.

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

3
LiveNL

J'ai eu le même problème, js_errors: false n'a pas résolu le problème, mais phantomjs_logger: "/dev/null" oui!

1
ubugnu