class Selenium::WebDriver::Firefox::Service

def configure_debug_args(args)

def configure_debug_args(args)
  # An explicit geckodriver log setting is more specific than Selenium's
  # generic SE_DEBUG fallback, so preserve it and skip adding `-v`.
  if args.any? { |arg| arg.start_with?('--log') }
    warn_explicit_log_preference unless @log_preference_warned
    @log_preference_warned = true
    args.reject! { |arg| arg.start_with?('-v') }
    return
  end
  args << '-v' unless args.any? { |arg| /\A-v+\z/.match?(arg) }
end

def initialize(args: nil, **)

def initialize(args: nil, **)
  args = Array(args.dup)
  unless args.any? { |arg| arg.include?('--connect-existing') || arg.include?('--websocket-port') }
    args << '--websocket-port'
    args << '0'
  end
  configure_debug_args(args) if ENV.key?('SE_DEBUG')
  super
end

def launch

def launch
  configure_debug_args(args) if ENV.key?('SE_DEBUG')
  super
end

def warn_explicit_log_preference

def warn_explicit_log_preference
  WebDriver.logger.warn('SE_DEBUG is set; preserving user-specified geckodriver --log setting instead of ' \
                        'adding -v', id: :se_debug)
end