diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 295ffbb..0c056d7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,9 +30,6 @@ jobs: browser-tests: runs-on: ubuntu-latest - env: - CHROME_PATH: /usr/bin/google-chrome - steps: - uses: actions/checkout@v4 - name: Set up Ruby @@ -42,5 +39,8 @@ jobs: bundler-cache: true - name: Set up Chrome uses: browser-actions/setup-chrome@v1 + id: setup-chrome - name: Browser specs (Cuprite) run: bundle exec rspec --tag browser + env: + CHROME_PATH: ${{ steps.setup-chrome.outputs.chrome-path }} diff --git a/spec/support/rails_test_app.rb b/spec/support/rails_test_app.rb index 0ecf3ca..43d93a9 100644 --- a/spec/support/rails_test_app.rb +++ b/spec/support/rails_test_app.rb @@ -78,7 +78,35 @@ if defined?(Rails) Capybara.server = :webrick Capybara.default_max_wait_time = 5 Capybara.register_driver(:cuprite) do |app| - Capybara::Cuprite::Driver.new(app, headless: true) + browser_options = { + "no-sandbox" => nil, + "disable-dev-shm-usage" => nil, + "disable-gpu" => nil, + "disable-software-rasterizer" => nil, + "disable-setuid-sandbox" => nil + } + + if ENV["CI"] + browser_options.merge!( + "disable-background-timer-throttling" => nil, + "disable-backgrounding-occluded-windows" => nil, + "disable-renderer-backgrounding" => nil, + "disable-ipc-flooding-protection" => nil + ) + end + + options = { + window_size: [1280, 1024], + browser_options: browser_options, + timeout: ENV.fetch("FERRUM_TIMEOUT", 30).to_i, + headless: true, + process_timeout: ENV.fetch("FERRUM_PROCESS_TIMEOUT", ENV["CI"] ? 120 : 30).to_i + } + + chrome_path = ENV.fetch("CHROME_PATH", nil) + options[:browser_path] = chrome_path if chrome_path + + Capybara::Cuprite::Driver.new(app, **options) end RSpec.configure do |config|