Raise server errors on visit and synchronize

This should hopefully make them appear earlier and be more helpful.
This commit is contained in:
Jonas Nicklas 2014-03-02 15:49:00 +01:00
parent 595cd4a89b
commit a94dfbc4d0
4 changed files with 27 additions and 2 deletions

View File

@ -80,6 +80,7 @@ module Capybara
begin
yield
rescue => e
session.raise_server_error!
raise e unless driver.wait?
raise e unless catch_error?(e)
raise e if (Time.now - start_time) >= seconds

View File

@ -81,12 +81,20 @@ module Capybara
assert_no_selector :xpath, "/html/body/*"
@touched = false
end
raise_server_error!
end
alias_method :cleanup!, :reset!
alias_method :reset_session!, :reset!
##
#
# Raise errors encountered in the server
#
def raise_server_error!
raise @server.error if Capybara.raise_server_errors and @server and @server.error
ensure
@server.reset_error! if @server
end
alias_method :cleanup!, :reset!
alias_method :reset_session!, :reset!
##
#
@ -179,6 +187,8 @@ module Capybara
# @param [String] url The URL to navigate to
#
def visit(url)
raise_server_error!
@touched = true
if url !~ /^http/ and Capybara.app_host

View File

@ -14,6 +14,13 @@ Capybara::SpecHelper.spec '#click_link' do
@session.should have_content('Another World')
end
it "raises any errors caught inside the server", :requires => [:server] do
quietly { @session.visit("/error") }
expect do
@session.click_link('foo')
end.to raise_error(TestApp::TestAppError)
end
context "with id given" do
it "should take user to the linked page" do
@session.click_link('foo')

View File

@ -26,6 +26,13 @@ Capybara::SpecHelper.spec '#visit' do
@session.should have_content('Hello world!')
end
it "raises any errors caught inside the server", :requires => [:server] do
quietly { @session.visit("/error") }
expect do
@session.visit("/")
end.to raise_error(TestApp::TestAppError)
end
context "when Capybara.always_include_port is true" do
let(:root_uri) do