Class: DriverManager

Inherits:
Object
  • Object
show all
Defined in:
lib/acceptance_test/driver_manager.rb

Instance Method Summary collapse

Constructor Details

#initializeDriverManager

Returns a new instance of DriverManager.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/acceptance_test/driver_manager.rb', line 5

def initialize
  # try to load capybara-related rspec library
  begin
    require 'capybara/rspec'

    RSpec.configure do |conf|
      conf.filter_run_excluding :exclude => true
    end

    RSpec.configure do |conf|
      conf.include Capybara::DSL
    end

    RSpec::Core::ExampleGroup.send :include, Capybara::DSL
  rescue
    ;
  end
end

Instance Method Details

#register_driver(driver, browser = :firefox, selenium_url = nil, capabilities = nil) ⇒ Object



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
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
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/acceptance_test/driver_manager.rb', line 32

def register_driver(driver, browser=:firefox, selenium_url=nil, capabilities=nil)
  driver_name = build_driver_name(driver, browser, selenium_url)

  case driver
    when :poltergeist
      require 'capybara/poltergeist'

    when :webkit
      require "capybara-webkit"

    when :firefox_with_firebug
      require 'capybara/firebug'

    else
      ;
  end

  if driver == :poltergeist
    properties = {}
    properties[:debug] = false

    Capybara.register_driver :poltergeist do |app|
      Capybara::Poltergeist::Driver.new(app, properties)
    end
  elsif driver == :webkit
    ;
  else
    properties = {}

    if selenium_url
      properties[:browser] = :remote
      properties[:url] = selenium_url

      case browser
        when :firefox
      # profile = Selenium::WebDriver::Firefox::Profile.new
      # profile.enable_firebug
          # capabilities = Selenium::WebDriver::Remote::Capabilities.firefox(:firefox_profile => profile)

          caps = Selenium::WebDriver::Remote::Capabilities.firefox
        when :chrome
          caps = Selenium::WebDriver::Remote::Capabilities.chrome
        else
          ;
      end

      desired_capabilities =
        if caps
          capabilities.each do |key, value|
            caps[key] = value
          end if capabilities

          caps
        elsif capabilities
          capabilities
        end

      properties[:desired_capabilities] = desired_capabilities if desired_capabilities
    else
      properties[:browser] = browser
    end

    Capybara.register_driver driver_name do |app|
      Capybara::Selenium::Driver.new(app, properties)
    end
  end

  driver_name
end

#setup_browser_binary(driver_name, browser_binaries) ⇒ Object



111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/acceptance_test/driver_manager.rb', line 111

def setup_browser_binary driver_name, browser_binaries
  if browser_binaries && browser_binaries[driver_name]
    case driver_name
      when :firefox
        Selenium::WebDriver::Firefox::Binary.path = browser_binaries[driver_name]
      when :chrome
        Selenium::WebDriver::Chrome::Service.Service.executable_path = browser_binaries[driver_name]
      else
        ;
    end
  end
end

#supported_browsersObject



28
29
30
# File 'lib/acceptance_test/driver_manager.rb', line 28

def supported_browsers
  [:firefox, :chrome]
end

#supported_driversObject



24
25
26
# File 'lib/acceptance_test/driver_manager.rb', line 24

def supported_drivers
  [:selenium, :webkit, :poltergeist]
end

#use_driver(driver, page = nil) ⇒ Object



102
103
104
105
106
107
108
109
# File 'lib/acceptance_test/driver_manager.rb', line 102

def use_driver driver, page=nil
  if driver and Capybara.drivers[driver]
    Capybara.current_driver = driver
    Capybara.javascript_driver = driver

    page.instance_variable_set(:@mode, driver) if page
  end
end