From c08826c9271cff34973678737534f0c88c120ce5 Mon Sep 17 00:00:00 2001 From: Mattia Roccoberton Date: Sun, 16 Mar 2025 10:48:10 +0100 Subject: [PATCH] test: Fix ProcessTimeoutError when using Docker - Error details: Ferrum::ProcessTimeoutError: Browser did not produce websocket url within 10 seconds, try to increase `:process_timeout` - Reference issue: https://github.com/rubycdp/cuprite/issues/180 --- spec/support/capybara.rb | 24 ++++++++++++++++++++---- spec/support/capybara_cuprite.rb | 24 ------------------------ 2 files changed, 20 insertions(+), 28 deletions(-) delete mode 100644 spec/support/capybara_cuprite.rb diff --git a/spec/support/capybara.rb b/spec/support/capybara.rb index 400342c..15060c4 100644 --- a/spec/support/capybara.rb +++ b/spec/support/capybara.rb @@ -1,12 +1,28 @@ # frozen_string_literal: true -Capybara.server = :puma -Capybara.default_driver = Capybara.javascript_driver = :cuprite +require 'capybara/cuprite' + +Capybara.register_driver(:capybara_cuprite) do |app| + browser_options = {}.tap do |opts| + opts['no-sandbox'] = nil if ENV['DEVEL'] + end + + Capybara::Cuprite::Driver.new( + app, + window_size: [1600, 1280], + browser_options: browser_options, + process_timeout: 20, + timeout: 20, + inspector: true, + headless: !ENV['CUPRITE_HEADLESS'].in?(%w[n 0 no false]) + ) +end + +# Capybara.server = :puma +Capybara.default_driver = Capybara.javascript_driver = :capybara_cuprite RSpec.configure do |config| - # Make sure this hook runs before others config.prepend_before(:each, type: :system) do - # Use JS driver always driven_by Capybara.javascript_driver end end diff --git a/spec/support/capybara_cuprite.rb b/spec/support/capybara_cuprite.rb deleted file mode 100644 index cfdc076..0000000 --- a/spec/support/capybara_cuprite.rb +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true - -require 'capybara/cuprite' - -Capybara.register_driver(:cuprite) do |app| - browser_options = {}.tap do |opts| - opts['no-sandbox'] = nil if ENV['CI'] - end - - Capybara::Cuprite::Driver.new( - app, - window_size: [1600, 1280], - # See additional options for Dockerized environment in the respective section of this article - browser_options: browser_options, - # Increase Chrome startup wait time (required for stable CI builds) - process_timeout: 20, - # The number of seconds we'll wait for a response when communicating with browser. Default is 5 - timeout: 20, - # Enable debugging capabilities - inspector: true, - # Allow running Chrome in a headful mode by setting HEADLESS env var to a falsey value - headless: !ENV['CUPRITE_HEADLESS'].in?(%w[n 0 no false]) - ) -end