lib/rutl/browser.rb in rutl-0.1.3 vs lib/rutl/browser.rb in rutl-0.1.4
- old
+ new
@@ -7,56 +7,53 @@
# rethink this naming convention.
#
class Browser
include Utilities
- def initialize(interface_type: :none, page_object_dir: 'spec/pages')
- @pages = load_pages(page_object_dir: page_object_dir)
- load_interface(type: interface_type)
+ attr_reader :interface
+
+ def initialize(interface_type:, page_object_dir: 'spec/pages')
+ # This is kind of evil. Figure out how to ditch the $ variable.
+ $browser = self
+ @interface = nil
+ @interface = load_interface(interface_type)
+ @interface.pages = load_pages(dir: page_object_dir)
end
- def load_interface(type: :none)
- pages = @pages
+ def load_interface(type)
require "rutl/interface/#{type}_interface"
klass = "#{type.to_s.capitalize}Interface"
- @interface = Object.const_get(klass).new(pages: pages)
- @interface.interface = @interface
+ Object.const_get(klass).new
end
# Ugly. Requires files for page objects. Returns array of class names to load.
- def require_pages(page_object_dir: 'spec/pages')
+ def require_pages(dir: 'spec/pages')
names = []
- Dir["#{page_object_dir}/*"].each do |file|
+ Dir["#{dir}/*"].each do |file|
require "rutl/../../#{file}"
File.open(file).each do |line|
- names << $1 if line =~ /class (.*) < BasePage/
+ bingo = line.match(/class (.*) < BasePage/)
+ names << bingo[1] if bingo && bingo[1]
end
end
names
end
def load_pages(*)
pages = []
- names = require_pages
- names.each do |klass|
+ require_pages.each do |klass|
# Don't have @interface set yet.
# That would have been the param to new, :interface.
- pages << Object.const_get(klass).new
+ pages << Object.const_get(klass).new(@interface)
end
pages
end
def method_missing(method, *args, &block)
- result = if args.empty?
- @interface.send(method)
- else
- @interface.send(method, *args, &block)
- end
- if result.class == Array && (result[0].class.ancestors.include?(BasePage) ||
- result[0].class == Exception)
- wait_for_transition(result)
+ if args.empty?
+ @interface.send(method)
else
- result
+ @interface.send(method, *args, &block)
end
end
def respond_to_missing?(*args)
@interface.respond_to?(*args)