class Ferris::Core

Attributes

base_url[RW]
require_url[R]
required_element_list[W]
base_url[R]
browser[R]
root[RW]

Public Class Methods

element(name, required: false, &block) click to toggle source
# File lib/ferris/core.rb, line 119
def element(name, required: false, &block)
  define_method(name) {|*args| self.instance_exec(*args, &block) }
  required_element_list << name.to_sym if required
end
inherited(subclass) click to toggle source
# File lib/ferris/core.rb, line 115
def inherited(subclass)
  subclass.required_element_list = required_element_list.dup
end
new(browser = Browser.browser) click to toggle source
# File lib/ferris/core.rb, line 50
def initialize(browser = Browser.browser)
  @browser = browser
  @base_url = self.class.base_url || ''
end
page_title() { |*args| ... } click to toggle source
# File lib/ferris/core.rb, line 107
def page_title
  define_method('page_title') {|*args| yield(*args) }
end
page_url(required: false) { |*args| ... } click to toggle source
# File lib/ferris/core.rb, line 101
def page_url(required: false)
  @require_url = required
  define_method('page_url') {|*args| base_url + yield(*args) }
end
Also aliased as: partial_url
partial_url(required: false)
Alias for: page_url
required_element_list() click to toggle source
# File lib/ferris/core.rb, line 111
def required_element_list
  @required_element_list ||= []
end

Public Instance Methods

check_required_elements() click to toggle source
# File lib/ferris/core.rb, line 90
def check_required_elements
  browser.wait_until { |_b| self.class.required_element_list.all? { |e| send(e).present? } }
rescue Watir::Wait::TimeoutError
  false
end
check_title() click to toggle source
# File lib/ferris/core.rb, line 86
def check_title
  browser.title == page_title
end
check_url() click to toggle source
# File lib/ferris/core.rb, line 82
def check_url
  page_url[%r{^#{URI.parse(page_url).scheme}://(.*?)/?$}, 1] == browser.url[%r{^#{URI.parse(browser.url).scheme}://(.*?)/?$}, 1]
end
inspect() click to toggle source
# File lib/ferris/core.rb, line 55
def inspect
  '#<%s url=%s title=%s>' % [self.class, url.inspect, title.inspect]
end
Also aliased as: selector_string
loaded?() click to toggle source
# File lib/ferris/core.rb, line 77
def loaded?
  raise Selenium::WebDriver::Error::WebDriverError, 'Cannot verify a page/region without requirements' unless page_verifiable?
  [!self.class.require_url || check_url, !respond_to?(:page_title) || check_title, !self.class.required_element_list.any? || check_required_elements].all?
end
present?() click to toggle source
# File lib/ferris/core.rb, line 60
def present?
  raise 'No root element set.' unless root
  root.present?
end
selector_string()
Alias for: inspect
verifiable?() click to toggle source
# File lib/ferris/core.rb, line 73
def verifiable?
  self.class.require_url || self.respond_to?(:page_title) || self.class.required_element_list.any?
end
visit(*args) click to toggle source
# File lib/ferris/core.rb, line 65
def visit(*args)
  browser.goto page_url(*args)
  exception = Selenium::WebDriver::Error::WebDriverError
  message = "Expected to be on #{self.class}, but conditions not met"
  raise exception, message if verifiable? && !loaded?
  self
end