Временно установите js_errors в false в Poltergeist

У меня есть набор тестов, которые приводят к странице Facebook, на которой пользователь входит в систему. К сожалению, на этой странице есть некоторые ошибки JavaScript, на которые я не могу повлиять, поэтому мои тесты никогда не закончились.

Есть ли способ временно отключить проверку ошибок JS? Я думал о чем-то вроде: Capybara.javascript_driver.js_errors = false, а затем устанавливал его на true позже, но, к сожалению, это не работает. Я пробовал варианты этого безрезультатно.

Любые идеи о том, как моя проблема может быть решена?

Ответ 1

Благодаря замечанию Романа Поминова я смог найти решение. Это было довольно просто:

Я только что добавил rescue Capybara::Poltergeist::JavascriptError после рассматриваемого заявления, а затем он работал как шарм. Моя первоначальная идея была слишком сложной;)

Ответ 2

Это делает трюк:

page.driver.browser.js_errors = false

Вы также можете добавить обратный вызов:

# spec_helpers.rb
config.around(:each) do |example|
  original_value = page.driver.browser.instance_variable_get(:@js_errors)
  if example.metadata.has_key?(:js_errors)
    page.driver.browser.js_errors = example.metadata[:js_errors]
  end

  example.run

  page.driver.browser.js_errors = original_value
end

В ваших тестах:

# my_feature_spec.rb
it "should ignore errors", js_errors: false do
  ...
end