class DriverManager

Public Class Methods

new() click to toggle source
# 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

Public Instance Methods

register_driver(driver, browser=:firefox, selenium_url=nil, capabilities=nil) click to toggle source
# 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) click to toggle source
# 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_browsers() click to toggle source
# File lib/acceptance_test/driver_manager.rb, line 28
def supported_browsers
  [:firefox, :chrome]
end
supported_drivers() click to toggle source
# File lib/acceptance_test/driver_manager.rb, line 24
def supported_drivers
  [:selenium, :webkit, :poltergeist]
end
use_driver(driver, page=nil) click to toggle source
# 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

Private Instance Methods

build_driver_name(driver, browser, selenium_url=nil) click to toggle source
# File lib/acceptance_test/driver_manager.rb, line 126
def build_driver_name driver, browser, selenium_url=nil
  case driver
    when :webkit
      :webkit
    when :poltergeist
      :poltergeist
    when :selenium
      name = ""
      name += driver ? "#{driver}_" : "#{Capybara.default_driver}_"

      name += "#{browser}_" if browser
      name += "remote" if selenium_url
      name = name[0..name.size-2] if name[name.size-1] == "_"

      name.to_sym
    else
      :unsupported
    end
end