From 668ccbc2103eada213ee4c6843a203f09711ade2 Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Sat, 9 Jan 2021 12:24:13 +0200 Subject: [PATCH] Adds GOOGLE_CHROME_OPTS_ARGS environment variable to define Google Chrome options arguments --- doc/RUNNING_TESTS | 2 ++ test/application_system_test_case.rb | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/doc/RUNNING_TESTS b/doc/RUNNING_TESTS index 5dec68c23..38c4389eb 100644 --- a/doc/RUNNING_TESTS +++ b/doc/RUNNING_TESTS @@ -77,6 +77,8 @@ The following environment variables can be used to configure your system tests s `CAPYBARA_SERVER_PORT`: configure server port `SELENIUM_REMOTE_URL`: remote Selenium URL `CAPYBARA_APP_HOST`: by default, the tests expect to have the application running on your localhost. Using this variable, you can set a custom URL +`GOOGLE_CHROME_OPTS_ARGS`: configure Google Chrome Options arguments as a comma-delimited string. For example, it can be used to run the tests in headless mode: + `export GOOGLE_CHROME_OPTS_ARGS="headless,disable-gpu,no-sandbox,disable-dev-shm-usage"` One use case of these variables is to run the system tests on a remote Selenium/ChromeDriver (eg: Docker). diff --git a/test/application_system_test_case.rb b/test/application_system_test_case.rb index 7a4e04348..1a1e0cb4a 100644 --- a/test/application_system_test_case.rb +++ b/test/application_system_test_case.rb @@ -21,16 +21,21 @@ require File.expand_path('../test_helper', __FILE__) 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'] + options = {} # 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, 'download.prompt_for_download' => false, -- 2.22.0