class JasmineSeleniumRunner::ConfigureJasmine

Attributes

browser[R]
formatter[R]
jasmine_server_url[R]
runner_config[R]

Public Class Methods

install_selenium_runner() click to toggle source
# 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_config() click to toggle source
# 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
new(formatter, jasmine_server_url, runner_config) click to toggle source
# 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

Public Instance Methods

batch_size() click to toggle source
# File lib/jasmine_selenium_runner/configure_jasmine.rb, line 55
def batch_size
  runner_config['batch_config_size'] || 50
end
local_webdriver() click to toggle source
# File lib/jasmine_selenium_runner/configure_jasmine.rb, line 81
def local_webdriver
  Selenium::WebDriver.for(browser.to_sym, selenium_options)
end
make_runner() click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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_options() click to toggle source
# 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