Raise server errors on visit and synchronize
This should hopefully make them appear earlier and be more helpful.
This commit is contained in:
parent
595cd4a89b
commit
a94dfbc4d0
|
@ -80,6 +80,7 @@ module Capybara
|
||||||
begin
|
begin
|
||||||
yield
|
yield
|
||||||
rescue => e
|
rescue => e
|
||||||
|
session.raise_server_error!
|
||||||
raise e unless driver.wait?
|
raise e unless driver.wait?
|
||||||
raise e unless catch_error?(e)
|
raise e unless catch_error?(e)
|
||||||
raise e if (Time.now - start_time) >= seconds
|
raise e if (Time.now - start_time) >= seconds
|
||||||
|
|
|
@ -81,12 +81,20 @@ module Capybara
|
||||||
assert_no_selector :xpath, "/html/body/*"
|
assert_no_selector :xpath, "/html/body/*"
|
||||||
@touched = false
|
@touched = false
|
||||||
end
|
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
|
raise @server.error if Capybara.raise_server_errors and @server and @server.error
|
||||||
ensure
|
ensure
|
||||||
@server.reset_error! if @server
|
@server.reset_error! if @server
|
||||||
end
|
end
|
||||||
alias_method :cleanup!, :reset!
|
|
||||||
alias_method :reset_session!, :reset!
|
|
||||||
|
|
||||||
##
|
##
|
||||||
#
|
#
|
||||||
|
@ -179,6 +187,8 @@ module Capybara
|
||||||
# @param [String] url The URL to navigate to
|
# @param [String] url The URL to navigate to
|
||||||
#
|
#
|
||||||
def visit(url)
|
def visit(url)
|
||||||
|
raise_server_error!
|
||||||
|
|
||||||
@touched = true
|
@touched = true
|
||||||
|
|
||||||
if url !~ /^http/ and Capybara.app_host
|
if url !~ /^http/ and Capybara.app_host
|
||||||
|
|
|
@ -14,6 +14,13 @@ Capybara::SpecHelper.spec '#click_link' do
|
||||||
@session.should have_content('Another World')
|
@session.should have_content('Another World')
|
||||||
end
|
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
|
context "with id given" do
|
||||||
it "should take user to the linked page" do
|
it "should take user to the linked page" do
|
||||||
@session.click_link('foo')
|
@session.click_link('foo')
|
||||||
|
|
|
@ -26,6 +26,13 @@ Capybara::SpecHelper.spec '#visit' do
|
||||||
@session.should have_content('Hello world!')
|
@session.should have_content('Hello world!')
|
||||||
end
|
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
|
context "when Capybara.always_include_port is true" do
|
||||||
|
|
||||||
let(:root_uri) do
|
let(:root_uri) do
|
||||||
|
|
Loading…
Reference in New Issue