Class: ActionDispatch::SystemTesting::Browser

Inherits:
Object
  • Object
show all
Defined in:
lib/action_dispatch/system_testing/browser.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Browser

Returns a new instance of Browser.



8
9
10
# File 'lib/action_dispatch/system_testing/browser.rb', line 8

def initialize(name)
  @name = name
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



6
7
8
# File 'lib/action_dispatch/system_testing/browser.rb', line 6

def name
  @name
end

Instance Method Details

#capabilitiesObject



32
33
34
35
36
37
38
39
40
# File 'lib/action_dispatch/system_testing/browser.rb', line 32

def capabilities
  @option ||=
    case type
    when :chrome
      ::Selenium::WebDriver::Chrome::Options.new
    when :firefox
      ::Selenium::WebDriver::Firefox::Options.new
    end
end

#optionsObject



23
24
25
26
27
28
29
30
# File 'lib/action_dispatch/system_testing/browser.rb', line 23

def options
  case name
  when :headless_chrome
    headless_chrome_browser_options
  when :headless_firefox
    headless_firefox_browser_options
  end
end

#preloadObject

driver_path can be configured as a proc. The webdrivers gem uses this proc to update web drivers. Running this proc early allows us to only update the webdriver once and avoid race conditions when using parallel tests.



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/action_dispatch/system_testing/browser.rb', line 46

def preload
  case type
  when :chrome
    if ::Selenium::WebDriver::Service.respond_to? :driver_path=
      ::Selenium::WebDriver::Chrome::Service.driver_path.try(:call)
    else
      # Selenium <= v3.141.0
      ::Selenium::WebDriver::Chrome.driver_path
    end
  when :firefox
    if ::Selenium::WebDriver::Service.respond_to? :driver_path=
      ::Selenium::WebDriver::Firefox::Service.driver_path.try(:call)
    else
      # Selenium <= v3.141.0
      ::Selenium::WebDriver::Firefox.driver_path
    end
  end
end

#typeObject



12
13
14
15
16
17
18
19
20
21
# File 'lib/action_dispatch/system_testing/browser.rb', line 12

def type
  case name
  when :headless_chrome
    :chrome
  when :headless_firefox
    :firefox
  else
    name
  end
end