web-dev-qa-db-ja.com

js_errors:falseの場合、ポルターガイストはJSエラーをスローします

ポルターガイストとカピバラを使用している大規模なテストスイートがあります。次のエラーが発生し続けます。

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

私はjs_errors:falseを設定したと確信していますが、それでもエラーが発生します。最適な解決策はJSを修正することですが、レガシーコードを継承しており、エラーの修正は私の役割の範囲外です。私のスペックヘルパーファイルは次のようになります。

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

どこに行けばよいのか、JSエラーを適切に無視しているのかと混乱しています。見落としたり、無視したりしている可能性のある他の情報がある場合は、お知らせください。御時間ありがとうございます。

19
ruby_newbie

コードが機能しない理由はわかりません。私はちょうど同様のJSエラーが発生し、次のように( このページ (js_errorsを検索)で述べたように)-そして基本的にLeonardo Galaniが示唆したこと(私はそれを-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

私もこのスタイルをテストしましたが、同様に機能しました:

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

FWIW:(キュウリのテストでの)私のエラーは次のようになりました:

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

@レオナルドガラニ

Rubyスタイルガイドによると、構文コメントは真ではありません。したがって、答えは{js_errors:false}になる可能性があります。

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

3
LiveNL

同じ問題が発生しました、js_errors: falseは問題を解決しませんでしたが、phantomjs_logger: "/dev/null" はい!

3
ubugnu