diff --git a/lib/capybara/session.rb b/lib/capybara/session.rb index 927da2be..4b9ebe1a 100644 --- a/lib/capybara/session.rb +++ b/lib/capybara/session.rb @@ -170,10 +170,12 @@ module Capybara def visit(url) @touched = true + if url !~ /^http/ and Capybara.app_host + url = Capybara.app_host + url.to_s + end + if @server - unless url =~ /^http/ - url = (Capybara.app_host || "http://#{@server.host}:#{@server.port}") + url.to_s - end + url = "http://#{@server.host}:#{@server.port}" + url.to_s unless url =~ /^http/ if Capybara.always_include_port uri = URI.parse(url) diff --git a/lib/capybara/spec/session/visit_spec.rb b/lib/capybara/spec/session/visit_spec.rb index 7eb34b8e..6992d06f 100644 --- a/lib/capybara/spec/session/visit_spec.rb +++ b/lib/capybara/spec/session/visit_spec.rb @@ -43,6 +43,21 @@ Capybara::SpecHelper.spec '#visit' do end end + context "without a server", :requires => [:server] do + it "should respect `app_host`" do + serverless_session = Capybara::Session.new(@session.mode, nil) + Capybara.app_host = "http://#{@session.server.host}:#{@session.server.port}" + serverless_session.visit("/foo") + serverless_session.should have_content("Another World") + end + + it "should visit a fully qualified URL" do + serverless_session = Capybara::Session.new(@session.mode, nil) + serverless_session.visit("http://#{@session.server.host}:#{@session.server.port}/foo") + serverless_session.should have_content("Another World") + end + end + it "should send no referer when visiting a page" do @session.visit '/get_referer' @session.should have_content 'No referer' diff --git a/spec/dsl_spec.rb b/spec/dsl_spec.rb index f871c67b..eaf0ac44 100644 --- a/spec/dsl_spec.rb +++ b/spec/dsl_spec.rb @@ -9,7 +9,8 @@ Capybara::SpecHelper.run_specs TestClass.new, "DSL", :skip => [ :js, :screenshot, :frames, - :windows + :windows, + :server ] describe Capybara::DSL do diff --git a/spec/rack_test_spec.rb b/spec/rack_test_spec.rb index a356b084..71dd4567 100644 --- a/spec/rack_test_spec.rb +++ b/spec/rack_test_spec.rb @@ -8,7 +8,8 @@ Capybara::SpecHelper.run_specs TestSessions::RackTest, "RackTest", :skip => [ :js, :screenshot, :frames, - :windows + :windows, + :server ] describe Capybara::Session do