class Object

Public Instance Methods

remote_browser?() click to toggle source
# File lib/crossbrowsify/browser_setup.rb, line 3
def remote_browser?
        ENV.has_key? 'BROWSER_TASK_NAME'
end
setup_remote_browser() click to toggle source
# File lib/crossbrowsify/browser_setup.rb, line 7
def setup_remote_browser

        raise 'Please ensure you supply ENV variables BS_USERNAME and BS_AUTHKEY from browser stack' if !ENV['BS_USERNAME'] || !ENV['BS_AUTHKEY']

        url = "http://#{ENV['BS_USERNAME']}:#{ENV['BS_AUTHKEY']}@hub.browserstack.com/wd/hub"

  # load browser configuration
  browser_data = JSON.load(open('browsers.json'))
  browser_name = ENV['BROWSER_TASK_NAME']

  browser = browser_data[browser_name]

  puts "Testing in #{browser['human']} (#{ENV['BROWSER_TASK_NAME']})... "

  # translate into Selenium Capabilities
  capabilities = Selenium::WebDriver::Remote::Capabilities.new
  capabilities["os"] = browser["os"]
  capabilities["browser"] = browser["browser"]

  if browser["browser_version"]
        capabilities["browser_version"] = browser["browser_version"]
        capabilities["os_version"] = browser["os_version"]
  end
  if browser["device"]
        capabilities["device"] = browser["device"]
    capabilities[:javascript_enabled] = true
  end

  capabilities['browserstack.debug'] = true
  
  unless ENV['BS_LOCAL'] =~ /false/i 
    capabilities['browserstack.local'] = true
  
    if ENV['CIRCLECI']
      capabilities['browserstack.localIdentifier'] = "#{ENV['CIRCLE_PROJECT_REPONAME']}-node-#{ENV['CIRCLE_NODE_INDEX']}"
    end
  end   

  capabilities['takesScreenshot'] = true

  capabilities['project'] = ENV['CIRCLE_PROJECT_REPONAME'] if ENV['CIRCLE_PROJECT_REPONAME']
  capabilities['build'] = ENV['CIRCLE_BUILD_NUM'] if ENV['CIRCLE_BUILD_NUM']

  # register a driver
  driver_name = "#{browser['browser']}_#{browser['browser_version']}_#{browser['os']}_#{browser['os_version']}"

  driver = Capybara.register_driver(driver_name) do |app|
        Capybara::Selenium::Driver.new(app, :browser => :remote, :url => url, :desired_capabilities => capabilities)
  end

  # use the registered driver
  Capybara.default_driver = driver_name
  Capybara.current_driver = driver_name
  Capybara.javascript_driver = driver_name

  puts "Driver: #{Capybara.default_driver}"

end