Class: JasmineSeleniumRunner::ConfigureJasmine

Inherits:
Object
  • Object
show all
Defined in:
lib/jasmine_selenium_runner/configure_jasmine.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(formatter, jasmine_server_url, runner_config) ⇒ ConfigureJasmine

Returns a new instance of ConfigureJasmine.



35
36
37
38
39
40
# File 'lib/jasmine_selenium_runner/configure_jasmine.rb', line 35

def initialize(formatter, jasmine_server_url, runner_config)
  @formatter = formatter
  @jasmine_server_url = jasmine_server_url
  @runner_config = runner_config
  @browser = runner_config['browser'] || 'firefox'
end

Class Method Details

.install_selenium_runnerObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/jasmine_selenium_runner/configure_jasmine.rb', line 8

def self.install_selenium_runner
  Jasmine.configure do |config|
    runner_config = load_config
    config.ci_port = 5555 if runner_config['use_sauce'] #Sauce only proxies certain ports

    config.runner = lambda { |formatter, jasmine_server_url|
      configuration_class = if runner_config['configuration_class']
                              const_get(runner_config['configuration_class'])
                            else
                              self
                            end
      configuration_class.new(formatter, jasmine_server_url, runner_config).make_runner
    }
  end
end

.load_configObject



24
25
26
27
28
29
30
31
32
33
# File 'lib/jasmine_selenium_runner/configure_jasmine.rb', line 24

def self.load_config
  filepath = ENV['JASMINE_SELENIUM_CONFIG_PATH']
  filepath ||= File.join(Dir.pwd, 'spec', 'javascripts', 'support', 'jasmine_selenium_runner.yml')

  if File.exist?(filepath)
    YAML::load(ERB.new(File.read(filepath)).result(binding))
  else
    {}
  end
end

Instance Method Details

#batch_sizeObject



55
56
57
# File 'lib/jasmine_selenium_runner/configure_jasmine.rb', line 55

def batch_size
  runner_config['batch_config_size'] || 50
end

#local_webdriverObject



81
82
83
# File 'lib/jasmine_selenium_runner/configure_jasmine.rb', line 81

def local_webdriver
  Selenium::WebDriver.for(browser.to_sym, selenium_options)
end

#make_runnerObject



42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/jasmine_selenium_runner/configure_jasmine.rb', line 42

def make_runner
  webdriver = nil
  if runner_config['use_sauce']
    webdriver = sauce_webdriver(runner_config['sauce'])
  elsif runner_config['selenium_server']
    webdriver = remote_webdriver(runner_config['selenium_server'])
  else
    webdriver = local_webdriver
  end

  Jasmine::Runners::Selenium.new(formatter, jasmine_server_url, webdriver, batch_size)
end

#remote_webdriver(server_url) ⇒ Object



77
78
79
# File 'lib/jasmine_selenium_runner/configure_jasmine.rb', line 77

def remote_webdriver(server_url)
  Selenium::WebDriver.for :remote, :url => server_url, :desired_capabilities => browser.to_sym
end

#sauce_webdriver(sauce_config) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/jasmine_selenium_runner/configure_jasmine.rb', line 59

def sauce_webdriver(sauce_config)
  username = sauce_config.fetch('username')
  key = sauce_config.fetch('access_key')
  driver_url = "http://#{username}:#{key}@localhost:4445/wd/hub"

  capabilities = {
    :name => sauce_config['name'],
    :platform => sauce_config['os'],
    :version => sauce_config['browser_version'],
    :build => sauce_config['build'],
    :tags => sauce_config['tags'],
    :browserName => browser,
    'tunnel-identifier' => sauce_config['tunnel_identifier']
  }

  Selenium::WebDriver.for :remote, :url => driver_url, :desired_capabilities => capabilities
end

#selenium_optionsObject



85
86
87
88
89
90
91
92
93
94
# File 'lib/jasmine_selenium_runner/configure_jasmine.rb', line 85

def selenium_options
  if browser == 'firefox-firebug'
    require File.join(File.dirname(__FILE__), 'firebug/firebug')
    profile = Selenium::WebDriver::Firefox::Profile.new
    profile.enable_firebug
    { :profile => profile }
  else
    {}
  end
end