class CloudTest::CLI

Public Instance Methods

each(*commands) click to toggle source
# File lib/cloud_test/cli.rb, line 72
def each(*commands)
  require 'open3'
  config = Core.load_config
  config['browsers'].keys.each { |browser_config_name|
    Open3.popen2e({'CLOUD_TEST' =>browser_config_name.to_s}, commands.join(" ")) do |stdin, stdout_err, wait_thr|
      unless options[:q]
        while line = stdout_err.gets
          puts line
        end
      end
      exit_status = wait_thr.value
      if exit_status == 0
        puts "Test on browser: #{browser_config_name} was successful!"
      else
        puts "Error on browser: #{browser_config_name}!"
        puts stdout_err.read
        puts "Error on browser: #{browser_config_name}!"
      end
    end
  }
end
generate() click to toggle source
# File lib/cloud_test/cli.rb, line 31
def generate()
  case options[:provider].to_s.downcase
  when 'lambdatest', 'lt', 'l'
    provider = 'lambdatest'
  when 'crossbrowsertesting', 'cbs', 'ct', 'cbt', 'c'
    provider = 'crossbrowsertesting'
  when 'saucelabs', 'sauce', 'sc', 'sl', 's'
    provider = 'saucelabs'
  else
    provider = 'browserstack'
  end
  CloudTest::Generators::Config.start([provider])
  CloudTest::Generators::Support.start()
end
generate_config(config) click to toggle source
# File lib/cloud_test/cli.rb, line 25
def generate_config(config)
  CloudTest::Generators::Config.start([config])
end
list_caps(provider) click to toggle source
# File lib/cloud_test/cli.rb, line 13
def list_caps(provider)
  hash = {"provider" => provider}
  Core.get_provider_class(hash).get_all_caps
end
list_default_caps(provider) click to toggle source
# File lib/cloud_test/cli.rb, line 19
def list_default_caps(provider)
  hash = {"provider" => provider}
  Core.get_provider_class(hash).list_caps
end
start() click to toggle source
# File lib/cloud_test/cli.rb, line 48
def start()
  require 'open3'
  config = Core.load_config
  config['browsers'].keys.each { |browser_config_name|
    Open3.popen2e({'CLOUD_TEST' =>browser_config_name.to_s}, "bundle" ,"exec", "cucumber", "-t","#{config['cucumber_tag'].to_s}") do |stdin, stdout_err, wait_thr|
      unless options[:q]
        while line = stdout_err.gets
          puts line
        end
      end
      exit_status = wait_thr.value
      if exit_status == 0
        puts "Test on browser: #{browser_config_name} was successful!"
      else
        puts "Test on browser: #{browser_config_name} was not successful!"
        puts stdout_err
        raise "did not work"
      end
    end
  }
end
test_connection() click to toggle source
# File lib/cloud_test/cli.rb, line 95
def test_connection()
  require 'net/http'
  require 'uri'
  config = CloudTest::Core.load_config
  request, uri, request, server = Hash.new
  if config.has_key?('provider') && config.has_key?('user') && config.has_key?('key')
    case config.delete 'provider'.to_s.downcase
      when 'browserstack', 'bs', 'b'
        server = "https://www.browserstack.com/local/v1/list?auth_token=#{config['key']}&last=1"
      when 'lambdatest', 'lt', 'l'
        server = "https://api.lambdatest.com/automation/api/v1/tunnels"
        uri = URI.parse(server)
        request = Net::HTTP::Get.new(uri)
        request.basic_auth(config['user'], config['key'])
      when 'crossbrowsertesting', 'cbs', 'ct', 'cbt', 'c'
        server = "https://crossbrowsertesting.com/api/v3/tunnels"
        uri = URI.parse(server)
        request = Net::HTTP::Get.new(uri)
        request.basic_auth(config['user'].sub("@", "%40"), config['key'])
      when 'saucelabs', 'sauce', 'sc', 'sl', 's'
        server = "https://saucelabs.com/rest/v1/#{config['user']}/tunnels"
        uri = URI.parse(server)
        request = Net::HTTP::Get.new(uri)
        request.basic_auth(config['user'], config['key'])
    else
      puts "Unknown provider!"
      return
    end
    uri ||= URI.parse(server)
    request ||= Net::HTTP::Get.new(uri)
    request["Accept"] = "application/json"
    req_options = {
        use_ssl: uri.scheme == "https",
    }
    response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
      http.request(request)
    end
    if response.code == '200'
      puts "Connection successful!"
    else
      puts "Connection was not successful! :("
      puts response.code
    end
  else
    puts "You have not all necessary keys in your config file. `provider`, `user`, `key` are necessary"
  end
end
version() click to toggle source
# File lib/cloud_test/cli.rb, line 145
def version
  say "cloud_test version: #{CloudTest::VERSION}"
end