class ActionDispatch::SystemTesting::Browser

:nodoc:

def configure

def configure
  yield options if block_given?
end

def default_chrome_options

def default_chrome_options
  options = ::Selenium::WebDriver::Chrome::Options.new
  options.add_argument("--disable-search-engine-choice-screen")
  options.add_argument("--headless") if name == :headless_chrome
  options.add_argument("--disable-gpu") if Gem.win_platform?
  options
end

def default_firefox_options

def default_firefox_options
  options = ::Selenium::WebDriver::Firefox::Options.new
  options.add_argument("-headless") if name == :headless_firefox
  options
end

def initialize(name)

def initialize(name)
  @name = name
end

def options

def options
  @options ||=
    case type
    when :chrome
      default_chrome_options
    when :firefox
      default_firefox_options
    end
end

def preload

conditions when using parallel tests.
driver_path is lazily initialized by default. Eagerly set it to avoid race
def preload
  case type
  when :chrome
    resolve_driver_path(::Selenium::WebDriver::Chrome)
  when :firefox
    resolve_driver_path(::Selenium::WebDriver::Firefox)
  end
end

def resolve_driver_path(namespace)

def resolve_driver_path(namespace)
  # The path method has been deprecated in 4.20.0
  if Gem::Version.new(::Selenium::WebDriver::VERSION) >= Gem::Version.new("4.20.0")
    namespace::Service.driver_path = ::Selenium::WebDriver::DriverFinder.new(options, namespace::Service.new).driver_path
  else
    namespace::Service.driver_path = ::Selenium::WebDriver::DriverFinder.path(options, namespace::Service)
  end
end

def type

def type
  case name
  when :headless_chrome
    :chrome
  when :headless_firefox
    :firefox
  else
    name
  end
end