class RUTL::Interface::Base
I might need to consider renaming these. The *interface classes lie between Application
and the webdriver-level classes.
Attributes
camera[RW]
driver[RW]
RUTL::Driver
views[RW]
Array of all RUTL::View
classes
Public Class Methods
new()
click to toggle source
# File lib/rutl/interface/base.rb, line 25 def initialize raise 'Child interface class must set @driver.' if @driver.nil? # base_name avoids collisions when unning the same tests with # different applications name = self.class.to_s.sub('RUTL::Interface', '') @camera = Camera.new(@driver, base_name: name) end
Public Instance Methods
current_view()
click to toggle source
Should define in children; raises here. Should return the current view class.
# File lib/rutl/interface/base.rb, line 43 def current_view raise 'define in child classes' end
find_state(target_states)
click to toggle source
TODO: Is this needed? I not only find the view but also make sure the urls match. Even though that's what finding views means?
# File lib/rutl/interface/base.rb, line 57 def find_state(target_states) target_states.each do |state| next unless state.url == current_view.url view = find_view(state) return view if view.loaded? end false end
find_view(view)
click to toggle source
Attempts to find view by class or url.
# File lib/rutl/interface/base.rb, line 67 def find_view(view) @views.each do |p| return p if view?(view) && p.class == view return p if String == view.class && view == p.url end raise "View \"#{view}\" not found in views #{@views}" end
goto(view)
click to toggle source
Attempts to navigate to the view. Takes screenshot if successful.
# File lib/rutl/interface/base.rb, line 35 def goto(view) raise 'expect View class' unless view?(view) find_view(view).go_to_here @camera.screenshot end
method_missing(method, *args, &block)
click to toggle source
# File lib/rutl/interface/base.rb, line 47 def method_missing(method, *args, &block) if args.empty? current_view.send(method) else current_view.send(method, *args, &block) end end
quit()
click to toggle source
# File lib/rutl/interface/base.rb, line 90 def quit @driver.quit end
respond_to_missing?(*args)
click to toggle source
# File lib/rutl/interface/base.rb, line 85 def respond_to_missing?(*args) # This can't be right. Figure it out later. current_view.respond_to?(*args) end
wait_for_transition(target_states)
click to toggle source
Calls the polling utility mathod await() with a lambda trying to find the next state, probably a View
class.
# File lib/rutl/interface/base.rb, line 77 def wait_for_transition(target_states) # # TODO: Should also see if there are other things to wait for. # I don't think this is doing view load time. # await -> { find_state target_states } end