Class: PageMagic::Drivers

Inherits:
Object show all
Defined in:
lib/page_magic/drivers.rb

Overview

class Drivers - creates an object that can be used to hold driver definitions These PageMagic gets the user's chosen driver from this object.

Constant Summary collapse

Selenium =
PageMagic::Driver.new(:chrome, :firefox) do |app, options, browser|
  require 'capybara/selenium/driver'
  Capybara::Selenium::Driver.new(app, **options.dup.merge(browser: browser))
end
RackTest =
PageMagic::Driver.new(:rack_test) do |app, options|
  Capybara::RackTest::Driver.new(app, **options)
end
Poltergeist =
PageMagic::Driver.new(:poltergeist) do |app, options|
  require 'capybara/poltergeist'
  Capybara::Poltergeist::Driver.new(app, options)
end

Instance Method Summary collapse

Instance Method Details

#==(other) ⇒ Boolean

returns true if this driver instance is equal to the supplied object

Parameters:

  • other (Object)

    subject of equality check

Returns:

  • (Boolean)

    true if the object is a match



38
39
40
# File 'lib/page_magic/drivers.rb', line 38

def ==(other)
  other.respond_to?(:all) && all == other.all
end

#allObject



9
10
11
# File 'lib/page_magic/drivers.rb', line 9

def all
  @all ||= []
end

#find(browser) ⇒ Object

Find a driver definition based on its registered name

Parameters:

  • browser (Symbol)

    registered name of the required browser



15
16
17
# File 'lib/page_magic/drivers.rb', line 15

def find(browser)
  all.find { |driver| driver.support?(browser) }
end

#load(path = "#{__dir__}/drivers") ⇒ Object

Loads drivers defined in files at the given path

Parameters:

  • path (String) (defaults to: "#{__dir__}/drivers")

    where the drivers are located



21
22
23
24
25
26
27
# File 'lib/page_magic/drivers.rb', line 21

def load(path = "#{__dir__}/drivers")
  Dir["#{path}/*.rb"].sort.each do |driver_file|
    require driver_file
    driver_name = File.basename(driver_file)[/(.*)\.rb$/, 1]
    register self.class.const_get(Utils::String.classify(driver_name))
  end
end

#register(driver) ⇒ Object

Make a driver available for selection when creating calling PageMagic.session

Parameters:

  • driver (Driver)

    driver definition



31
32
33
# File 'lib/page_magic/drivers.rb', line 31

def register(driver)
  all << driver
end