diff --git a/Gemfile b/Gemfile index 385673c90f0..b5fd15753e3 100644 --- a/Gemfile +++ b/Gemfile @@ -220,8 +220,8 @@ group :test do gem 'capybara', '~> 3.35.0' gem 'capybara-screenshot', '~> 1.0.17' - gem 'selenium-webdriver', '~> 3.14' - gem 'webdrivers', '~> 4.6.0' + gem 'selenium-webdriver', '~> 4.0' + gem 'webdrivers', '~> 5.0.0' gem 'fuubar', '~> 2.5.0' gem 'timecop', '~> 0.9.0' diff --git a/Gemfile.lock b/Gemfile.lock index 614d73e652c..9a2c9c81187 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -336,7 +336,7 @@ GEM cells-rails (0.0.9) actionpack (>= 3.0) cells (>= 4.1.6, < 5.0.0) - childprocess (3.0.0) + childprocess (4.1.0) claide (1.0.3) claide-plugins (0.9.2) cork @@ -868,8 +868,9 @@ GEM addressable (>= 2.3.5) faraday (> 0.8, < 2.0) secure_headers (6.3.3) - selenium-webdriver (3.142.7) - childprocess (>= 0.5, < 4.0) + selenium-webdriver (4.0.3) + childprocess (>= 0.5, < 5.0) + rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2) semantic (1.6.1) sentry-delayed_job (4.7.3) @@ -942,10 +943,10 @@ GEM rack (>= 2.0.9) warden-basic_auth (0.2.1) warden (~> 1.2) - webdrivers (4.6.1) + webdrivers (5.0.0) nokogiri (~> 1.6) rubyzip (>= 1.3.0) - selenium-webdriver (>= 3.0, < 4.0) + selenium-webdriver (~> 4.0) webfinger (1.2.0) activesupport httpclient (>= 2.4) @@ -1107,7 +1108,7 @@ DEPENDENCIES sanitize (~> 6.0.0) sassc-rails secure_headers (~> 6.3.0) - selenium-webdriver (~> 3.14) + selenium-webdriver (~> 4.0) semantic (~> 1.6.1) sentry-delayed_job (~> 4.7.0) sentry-rails (~> 4.7.0) @@ -1129,7 +1130,7 @@ DEPENDENCIES tzinfo-data (~> 1.2021.1) warden (~> 1.2) warden-basic_auth (~> 0.2.1) - webdrivers (~> 4.6.0) + webdrivers (~> 5.0.0) webmock (~> 3.12) will_paginate (~> 3.3.0) with_advisory_lock (~> 4.6.0) diff --git a/spec/support/browsers/chrome.rb b/spec/support/browsers/chrome.rb index ee84a82c3a3..882d696d415 100644 --- a/spec/support/browsers/chrome.rb +++ b/spec/support/browsers/chrome.rb @@ -33,7 +33,7 @@ def register_chrome(language, name: :"chrome_#{language}") options.add_preference(:browser, set_download_behavior: { behavior: 'allow' }) capabilities = Selenium::WebDriver::Remote::Capabilities.chrome( - loggingPrefs: { browser: 'ALL' } + 'goog:loggingPrefs': { browser: 'ALL' } ) yield(options, capabilities) if block_given? @@ -46,9 +46,8 @@ def register_chrome(language, name: :"chrome_#{language}") driver_opts = { browser: is_grid ? :remote : :chrome, - desired_capabilities: capabilities, - http_client: client, - options: options, + capabilities: [capabilities, options], + http_client: client } if is_grid diff --git a/spec/support/browsers/firefox.rb b/spec/support/browsers/firefox.rb index 9f37b334781..f39ad3deaf9 100644 --- a/spec/support/browsers/firefox.rb +++ b/spec/support/browsers/firefox.rb @@ -6,10 +6,10 @@ def register_firefox(language, name: :"firefox_#{language}") require 'selenium/webdriver' Capybara.register_driver name do |app| - if ENV['CI'] - client = Selenium::WebDriver::Remote::Http::Default.new - client.timeout = 180 - end + client = if ENV['CI'] + Selenium::WebDriver::Remote::Http::Default.new(open_timeout: 180, + read_timeout: 180) + end profile = Selenium::WebDriver::Firefox::Profile.new profile['intl.accept_languages'] = language @@ -24,16 +24,8 @@ def register_firefox(language, name: :"firefox_#{language}") # only one FF process profile['dom.ipc.processCount'] = 1 - # use native instead of synthetic events - # https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities - profile.native_events = true - options = Selenium::WebDriver::Firefox::Options.new(profile: profile) - capabilities = Selenium::WebDriver::Remote::Capabilities.firefox( - loggingPrefs: { browser: 'ALL' } - ) - yield(profile, options, capabilities) if block_given? unless ActiveRecord::Type::Boolean.new.cast(ENV['OPENPROJECT_TESTING_NO_HEADLESS']) @@ -45,9 +37,8 @@ def register_firefox(language, name: :"firefox_#{language}") driver_opts = { browser: is_grid ? :remote : :firefox, url: ENV['SELENIUM_GRID_URL'], - desired_capabilities: capabilities, http_client: client, - options: options, + capabilities: options } if is_grid