Class: Simulacrum::Browserstack::Runner

Inherits:
Runner
  • Object
show all
Defined in:
lib/simulacrum/browserstack/runner.rb

Overview

A Runner Class for Browserstack that handles creating a Browserstack tunnel, closing it when done. Also handles running the suite in parallel.

Defined Under Namespace

Classes: NoRemoteSessionsAvailable

Instance Method Summary collapse

Constructor Details

#initializeRunner

Returns a new instance of Runner.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/simulacrum/browserstack/runner.rb', line 25

def initialize
  start_timer

  @username = Simulacrum.runner_options.username
  @apikey = Simulacrum.runner_options.apikey
  @app_ports = app_ports
  @api = Simulacrum::Browserstack::API.new(@username, @apikey)
  @tunnel = Simulacrum::Browserstack::Tunnel.new(@username, @apikey, @app_ports)

  set_global_env
  execute
  summarize_results
  summarize_exit_codes
ensure
  @tunnel.close if @tunnel
end

Instance Method Details

#executeObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/simulacrum/browserstack/runner.rb', line 42

def execute
  Simulacrum.logger.info('BrowserStack') { "Using runner with #{processes} remote workers" }
  @process_exit_codes, @process_results = Parallel.map_with_index(browsers, in_processes: processes) do |(name, caps), index|
    begin
      ensure_available_remote_runner
      configure_app_port(index)
      configure_environment(name, caps)
      configure_browser_setting(name)
      exit_code = run
      [exit_code, { results: dump_results }]
    rescue SystemExit
      exit 1
    ensure
      quit_browser
    end
  end.transpose
ensure
  stop_timer
end