* Softrun rubocop * Hardrun rubocop (-A) * Change a rubocop rule * Add missing cops * Undo & redo rubocop -A
46 lines
1.3 KiB
Ruby
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
|