summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Balteanu <marius.balteanu@zitec.com>2023-10-29 11:52:29 +0000
committerMarius Balteanu <marius.balteanu@zitec.com>2023-10-29 11:52:29 +0000
commitcf3ae915eb8beba652055d534b7fe221cd0eb31b (patch)
treec319698e62603a5bdb3a49102af955617b09cedb
parent36a7932003e21c25269317d8eeb03681033c8119 (diff)
downloadredmine-cf3ae915eb8beba652055d534b7fe221cd0eb31b.tar.gz
redmine-cf3ae915eb8beba652055d534b7fe221cd0eb31b.zip
Update webdrivers gem (#37558).
Patch by Takashi Kato. git-svn-id: https://svn.redmine.org/redmine/trunk@22397 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--Gemfile10
-rw-r--r--test/application_system_test_case.rb36
2 files changed, 24 insertions, 22 deletions
diff --git a/Gemfile b/Gemfile
index 405797510..1285ed49b 100644
--- a/Gemfile
+++ b/Gemfile
@@ -99,9 +99,13 @@ group :test do
gem "ffi", platforms: [:mingw, :x64_mingw, :mswin]
# For running system tests
gem 'puma'
- gem 'capybara', '~> 3.38.0'
- gem "selenium-webdriver", "~> 3.142.7"
- gem 'webdrivers', '4.6.1', require: false
+ gem "capybara", ">= 3.39"
+ if Gem.ruby_version < Gem::Version.new('3.0')
+ gem "selenium-webdriver", "<= 4.9.0"
+ gem "webdrivers", require: false
+ else
+ gem "selenium-webdriver", ">= 4.11.0"
+ end
# RuboCop
gem 'rubocop', '~> 1.57.0', require: false
gem 'rubocop-performance', '~> 1.19.0', require: false
diff --git a/test/application_system_test_case.rb b/test/application_system_test_case.rb
index 52dd2fc45..2a41db11d 100644
--- a/test/application_system_test_case.rb
+++ b/test/application_system_test_case.rb
@@ -18,39 +18,37 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require_relative 'test_helper'
-require 'webdrivers/chromedriver'
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
DOWNLOADS_PATH = File.expand_path(File.join(Rails.root, 'tmp', 'downloads'))
- GOOGLE_CHROME_OPTS_ARGS = []
# Allow running Capybara default server on custom IP address and/or port
Capybara.server_host = ENV['CAPYBARA_SERVER_HOST'] if ENV['CAPYBARA_SERVER_HOST']
Capybara.server_port = ENV['CAPYBARA_SERVER_PORT'] if ENV['CAPYBARA_SERVER_PORT']
# Allow defining Google Chrome options arguments based on a comma-delimited string environment variable
- GOOGLE_CHROME_OPTS_ARGS = ENV['GOOGLE_CHROME_OPTS_ARGS'].split(",") if ENV['GOOGLE_CHROME_OPTS_ARGS']
+ GOOGLE_CHROME_OPTS_ARGS = ENV['GOOGLE_CHROME_OPTS_ARGS'].present? ? ENV['GOOGLE_CHROME_OPTS_ARGS'].split(",") : []
options = {}
+ if ENV['SELENIUM_REMOTE_URL']
+ options[:url] = ENV['SELENIUM_REMOTE_URL']
+ options[:browser] = :remote
+ elsif Gem.ruby_version < Gem::Version.new('3.0')
+ require 'webdrivers/chromedriver'
+ end
+
# Allow running tests using a remote Selenium hub
- options[:url] = ENV['SELENIUM_REMOTE_URL'] if ENV['SELENIUM_REMOTE_URL']
- options[:desired_capabilities] = Selenium::WebDriver::Remote::Capabilities.chrome(
- 'goog:chromeOptions' => {
- 'args' => GOOGLE_CHROME_OPTS_ARGS,
- 'prefs' => {
- 'download.default_directory' => DOWNLOADS_PATH.gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR),
- 'download.prompt_for_download' => false,
- 'plugins.plugins_disabled' => ["Chrome PDF Viewer"]
- }
- }
- )
-
- driven_by(
- :selenium, using: :chrome, screen_size: [1024, 900],
- options: options
- )
+ driven_by :selenium, using: :chrome, screen_size: [1024, 900], options: options do |driver_option|
+ GOOGLE_CHROME_OPTS_ARGS.each do |arg|
+ driver_option.add_argument arg
+ end
+ driver_option.add_preference 'download.default_directory', DOWNLOADS_PATH.gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
+ driver_option.add_preference 'download.prompt_for_download', false
+ driver_option.add_preference 'plugins.plugins_disabled', ["Chrome PDF Viewer"]
+ end
setup do
+ Capybara.app_host = "http://#{Capybara.server_host}:#{Capybara.server_port}"
# Allow defining a custom app host (useful when using a remote Selenium hub)
if ENV['CAPYBARA_APP_HOST']
Capybara.configure do |config|