lib/capybara/driver/terminus.rb in terminus-0.4.0 vs lib/capybara/driver/terminus.rb in terminus-0.5.0
- old
+ new
@@ -1,56 +1,67 @@
class Capybara::Driver::Terminus < Capybara::Driver::Base
attr_reader :options
-
+
NULL_APP = lambda do |env|
[200, {'Content-Type' => 'text/html'}, ['']]
end
-
+
def initialize(app = nil, options = {})
@app = Terminus::Proxy[app || NULL_APP]
@options = options
@rack_server = Capybara::Server.new(@app)
-
+
@rack_server.boot
sleep(0.1) until Terminus.server_running?(@rack_server)
+ Terminus.register_local_port(@rack_server.port)
end
-
+
def find(xpath)
browser.find(xpath, self)
end
-
+
def invalid_element_errors
[::Terminus::ObsoleteElementError]
end
-
+
+ def needs_server?
+ true
+ end
+
def visit(path)
- browser.visit(@rack_server.url(path))
+ h, s = Capybara.app_host, @rack_server
+ path = "#{h || "http://#{s.host}:#{s.port}"}#{path}" unless path =~ /^https?:\/\//
+ browser.visit(path)
end
-
+
def wait?
true
end
-
+
extend Forwardable
def_delegators :browser, :body,
:current_url,
+ :debugger,
:evaluate_script,
:execute_script,
+ :html,
:reset!,
:response_headers,
+ :save_screenshot,
:source,
:status_code
-
+
def within_window(name)
current_browser = browser
Terminus.browser = browser.id + '/' + name
- yield
+ result = yield
Terminus.browser = current_browser
+ result
end
alias :within_frame :within_window
-
+
private
-
+
def browser
Terminus.ensure_browsers
Terminus.browser
end
end