Module: TestCentricity::WebDriverConnect

Includes:
Capybara::DSL
Defined in:
lib/testcentricity_web/webdriver_helper.rb

Class Method Summary collapse

Class Method Details

.initialize_web_driver(app_host = nil) ⇒ Object



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
# File 'lib/testcentricity_web/webdriver_helper.rb', line 9

def self.initialize_web_driver(app_host = nil)
  Capybara.app_host = app_host unless app_host.nil?
  browser = ENV['WEB_BROWSER']

  # assume that we're testing within a local desktop web browser
  Environ.platform    = :desktop
  Environ.browser     = browser
  Environ.device      = false
  Environ.device_type = 'browser'

  case browser.downcase.to_sym
  when :appium
    initialize_appium
    context = 'mobile device emulator'
  when :browserstack
    initialize_browserstack
    context = 'Browserstack cloud service'
  when :crossbrowser
    initialize_crossbrowser
    context = 'CrossBrowserTesting cloud service'
  when :poltergeist
    initialize_poltergeist
    context = 'PhantomJS'
  when :saucelabs
    initialize_saucelabs
    context = 'Sauce Labs cloud service'
  when :testingbot
    initialize_testingbot
    context = 'TestingBot cloud service'
  else
    if ENV['SELENIUM'] == 'remote'
      initialize_remote
      context = 'Selenium Grid2'
    else
      initialize_local_browser
      context = 'local instance'
    end
  end

  # set browser window size only if testing with a desktop web browser
  unless Environ.is_device? || Capybara.current_driver == :poltergeist
    initialize_browser_size
  end

  puts "Using #{Environ.browser} browser via #{context}"
end

.set_domain(url) ⇒ Object



56
57
58
# File 'lib/testcentricity_web/webdriver_helper.rb', line 56

def self.set_domain(url)
  Capybara.app_host = url
end

.set_webdriver_path(project_path) ⇒ Object

Set the WebDriver path for Chrome, IE, or Edge browsers



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/testcentricity_web/webdriver_helper.rb', line 61

def self.set_webdriver_path(project_path)
  path_to_driver = nil
  # check for existence of /webdrivers or /features/support/drivers folders
  base_path = 'features/support/drivers'
  unless File.directory?(File.join(project_path, base_path))
    base_path = 'webdrivers'
    unless File.directory?(File.join(project_path, base_path))
      raise 'Could not find WebDriver files in /webdrivers or /features/support/drivers folders'
    end
  end
  # set WebDriver path based on browser and operating system
  case ENV['WEB_BROWSER'].downcase.to_sym
  when :chrome
    if OS.osx?
      path_to_driver = 'mac/chromedriver'
    elsif OS.windows?
      path_to_driver = 'windows/chromedriver.exe'
    end
    Selenium::WebDriver::Chrome.driver_path = File.join(project_path, base_path, path_to_driver)
  when :ie
    path_to_driver = 'windows/IEDriverServer.exe'
    Selenium::WebDriver::IE.driver_path = File.join(project_path, base_path, path_to_driver)
  when :edge
    path_to_driver = 'windows/MicrosoftWebDriver.exe'
    Selenium::WebDriver::Edge.driver_path = File.join(project_path, base_path, path_to_driver)
  end
  puts "The webdriver path is: #{File.join(project_path, base_path, path_to_driver)}" unless path_to_driver.nil?
end