docbrown/spec/support/initializers/capybara.rb
Mac Siri 842e6880b8
Routine rubocop fix on /spec (#19217)
* Softrun rubocop

* Hardrun rubocop (-A)

* Change a rubocop rule

* Add missing cops

* Undo & redo rubocop -A
2023-03-21 09:55:26 -04:00

46 lines
1.3 KiB
Ruby

require "capybara/rails"
require "capybara/rspec"
require "capybara/cuprite"
Capybara.default_max_wait_time = 2
Capybara.register_driver(:better_cuprite) do |app|
Capybara::Cuprite::Driver.new(
app,
window_size: [1200, 800],
# See additional options for Dockerized environment in the respective section of this article
browser_options: {},
# Increase Chrome startup wait time (required for stable CI builds)
process_timeout: 10,
# Enable debugging capabilities
inspector: true,
# Allow running Chrome in a headful mode by setting HEADLESS env
# var to a falsey value
headless: !ENV["HEADLESS"].in?(%w[n 0 no false]),
)
end
RSpec.configure do |config|
config.before(:each, type: :system) do
driven_by :rack_test
end
config.before(:each, js: true, type: :system) do
driven_by :better_cuprite
end
end
# adapted from <https://medium.com/doctolib-engineering/hunting-flaky-tests-2-waiting-for-ajax-bd76d79d9ee9>
def wait_for_javascript
max_time = Capybara::Helpers.monotonic_time + Capybara.default_max_wait_time
finished = false
while Capybara::Helpers.monotonic_time < max_time
finished = page.evaluate_script("typeof initializeBaseApp") != "undefined"
break if finished
sleep 0.1
end
raise "wait_for_javascript timeout" unless finished
end