class Selenium::WebDriver::SeleniumManager

def run(*command)

def run(*command)
  WebDriver.logger.debug("Executing Process #{command}", id: :selenium_manager)
  begin
    stdout, stderr, status = Open3.capture3(*command)
  rescue StandardError => e
    raise Error::WebDriverError, "Unsuccessful command executed: #{command}; #{e.message}"
  end
  json_output = stdout.empty? ? {'logs' => [], 'result' => {}} : JSON.parse(stdout)
  json_output['logs'].each do |log|
    level = log['level'].casecmp('info').zero? ? 'debug' : log['level'].downcase
    WebDriver.logger.send(level, log['message'], id: :selenium_manager)
  end
  result = json_output['result']
  return result unless status.exitstatus.positive? || result.nil?
  raise Error::WebDriverError,
        "Unsuccessful command executed: #{command} - Code #{status.exitstatus}\n#{result}\n#{stderr}"
end