Временно установите 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