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 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