1
0
Fork 0
mirror of https://github.com/teampoltergeist/poltergeist.git synced 2022-11-09 12:05:00 -05:00
teampoltergeist--poltergeist/lib/capybara/poltergeist/driver.rb

105 lines
1.9 KiB
Ruby
Raw Normal View History

2011-10-27 23:34:14 +01:00
module Capybara::Poltergeist
class Driver < Capybara::Driver::Base
attr_reader :app, :server, :browser, :options
def initialize(app, options = {})
@app = app
@options = options
@server = Capybara::Server.new(app)
@browser = nil
@server.boot if Capybara.run_server
end
def browser
@browser ||= Browser.new(
:logger => logger,
2012-02-25 12:47:18 +00:00
:phantomjs => options[:phantomjs],
:inspector => inspector
2011-10-27 23:34:14 +01:00
)
end
def inspector
@inspector ||= options[:inspector] && Inspector.new(options[:inspector])
end
2011-10-27 23:34:14 +01:00
def restart
browser.restart
end
# logger should be an object that responds to puts, or nil
def logger
options[:logger] || (options[:debug] && STDERR)
end
def visit(path, attributes = {})
browser.visit(url(path), attributes)
end
def current_url
browser.current_url
end
def body
browser.body
end
def source
2012-01-10 00:25:30 +00:00
browser.source.to_s
2011-10-27 23:34:14 +01:00
end
def find(selector)
browser.find(selector).map { |node| Capybara::Poltergeist::Node.new(self, node) }
end
def evaluate_script(script)
browser.evaluate(script)
end
def execute_script(script)
browser.execute(script)
nil
end
def within_frame(id, &block)
browser.within_frame(id, &block)
end
def reset!
browser.reset
end
def render(path, options = {})
browser.render(path, options)
2011-10-27 23:34:14 +01:00
end
def resize(width, height)
browser.resize(width, height)
end
def debug
inspector.open
pause
end
def pause
STDERR.puts "Poltergeist execution paused. Press enter to continue."
STDIN.gets
end
2011-10-27 23:34:14 +01:00
def wait?
true
end
def invalid_element_errors
[Capybara::Poltergeist::ObsoleteNode]
end
private
def url(path)
server.url(path)
end
end
end