Top Level Namespace

Defined Under Namespace

Modules: Crossbrowsify, Selenium Classes: CrossBrowsifyTasks

Instance Method Summary collapse

Instance Method Details

#remote_browser?Boolean

Returns:

  • (Boolean)


3
4
5
# File 'lib/crossbrowsify/browser_setup.rb', line 3

def remote_browser?
  ENV.has_key? 'BROWSER_TASK_NAME'
end

#setup_remote_browserObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 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
  capabilities['browserstack.local'] = true
  

  if ENV['CIRCLECI']
    capabilities['browserstack.localIdentifier'] = "#{ENV['CIRCLE_PROJECT_REPONAME']}-node-#{ENV['CIRCLE_NODE_INDEX']}"
  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