capybara 設計 js_errors:falseのときにポーテジトリがJSエラーをスローする




try catch (4)

私はポルターガイストとカピバラを使用している大きなテストスイートを持っています。 私は次のエラーが発生し続ける:

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エラーを適切に無視しているのか混乱しています。 見過ごされたり、無視されたりする可能性のある情報が他にもある場合はお知らせください。 御時間ありがとうございます。


なぜあなたのコードがうまくいかないのか分かりません。 私はちょうど似たようなJSエラーがあり、次のように( このページ (js_errorsの検索)で述べたように) - そして、Leonardo Galaniが何を提案したか(私は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

私もこのスタイルをテストし、それもうまくいった:

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

私は同じ問題を抱えていた、 js_errors: falseは問題を解決しなかったが、 js_errors: false phantomjs_logger: "/dev/null"はい!



register_driverに1つのオプションしか使用していない場合、ハッシュは必要ありません。

また、 js_errors:false :js_errors => falseまた、必要に応じてオプションを追加できるように、ハッシュを外に設定することもできます。

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