trabajo-afectivo/spec/support/capybara/selenium_driver.rb
2022-03-16 09:23:58 +01:00

80 lines
2.4 KiB
Ruby

# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
# This file registers the custom Zammad chrome and firefox drivers.
# The options check if a REMOTE_URL ENV is given and change the
# configurations accordingly.
Capybara.register_driver(:zammad_chrome) do |app|
# Turn on browser logs
chrome_options = Selenium::WebDriver::Chrome::Options.new(
logging_prefs: {
browser: 'ALL'
},
prefs: {
'intl.accept_languages' => 'en-US',
'profile.default_content_setting_values.notifications' => 1, # ALLOW notifications
},
# Disable the "Chrome is controlled by automation software" info bar.
excludeSwitches: ['enable-automation'],
)
options = {
browser: :chrome,
options: chrome_options
}
if ENV['REMOTE_URL'].present?
options[:browser] = :remote
options[:url] = ENV['REMOTE_URL']
options[:http_client] = Selenium::WebDriver::Remote::Http::Default.new(
open_timeout: 120,
read_timeout: 120
)
end
if ENV['BROWSER_HEADLESS'].present?
options[:options].headless!
end
ENV['FAKE_SELENIUM_LOGIN_USER_ID'] = nil
Capybara::Selenium::Driver.new(app, **options).tap do |driver|
# Selenium 4 installs a default file_detector which finds wrong files/directories such as zammad/test.
driver.browser.file_detector = nil if ENV['REMOTE_URL'].present?
end
end
Capybara.register_driver(:zammad_firefox) do |app|
profile = Selenium::WebDriver::Firefox::Profile.new
profile['intl.locale.matchOS'] = false
profile['intl.accept_languages'] = 'en-US'
profile['general.useragent.locale'] = 'en-US'
profile['permissions.default.desktop-notification'] = 1 # ALLOW notifications
options = {
browser: :firefox,
options: Selenium::WebDriver::Firefox::Options.new(profile: profile),
}
if ENV['REMOTE_URL'].present?
options[:browser] = :remote
options[:url] = ENV['REMOTE_URL']
options[:http_client] = Selenium::WebDriver::Remote::Http::Default.new(
open_timeout: 120,
read_timeout: 120
)
end
if ENV['BROWSER_HEADLESS'].present?
options[:options].headless!
end
ENV['FAKE_SELENIUM_LOGIN_USER_ID'] = nil
Capybara::Selenium::Driver.new(app, **options).tap do |driver|
# Selenium 4 installs a default file_detector which finds wrong files/directories such as zammad/test.
driver.browser.file_detector = nil if ENV['REMOTE_URL'].present?
end
end