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