Capybara tests can be run with:
`rails test:system`
+The following environment variables can be used to configure your system tests setup:
+`CAPYBARA_SERVER_HOST`: configure server to run on a custom IP which can be, for example, your remote Selenium IP or 0.0.0.0 to listen an all connections
+`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
+
+One use case of these variables is to run the system tests on a remote Selenium/ChromeDriver (eg: Docker).
+
Running RuboCop, a static code analyzer
=======================================
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
DOWNLOADS_PATH = File.expand_path(File.join(Rails.root, 'tmp', 'downloads'))
+ # 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']
+
+ options = {}
+ # Allow running tests using a remote Selenium hub
+ options.merge!(url: ENV['SELENIUM_REMOTE_URL']) if ENV['SELENIUM_REMOTE_URL']
+ options.merge!(desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome(
+ 'chromeOptions' => {
+ 'prefs' => {
+ 'download.default_directory' => DOWNLOADS_PATH,
+ 'download.prompt_for_download' => false,
+ 'plugins.plugins_disabled' => ["Chrome PDF Viewer"]
+ }
+ }
+ ))
+
driven_by(
:selenium, using: :chrome, screen_size: [1024, 900],
- options: {
- desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome(
- 'chromeOptions' => {
- 'prefs' => {
- 'download.default_directory' => DOWNLOADS_PATH,
- 'download.prompt_for_download' => false,
- 'plugins.plugins_disabled' => ["Chrome PDF Viewer"]
- }
- }
- )
- }
+ options: options
)
setup do
+ # Allow defining a custom app host (useful when using a remote Selenium hub)
+ Capybara.configure do |config|
+ config.app_host = ENV['CAPYBARA_APP_HOST']
+ end if ENV['CAPYBARA_APP_HOST']
+
clear_downloaded_files
Setting.delete_all
Setting.clear_cache