mirror of
https://github.com/teamcapybara/capybara.git
synced 2022-11-09 12:08:07 -05:00
Server boot timeout is now configurable
This commit is contained in:
parent
5304a3367e
commit
09d6335986
3 changed files with 28 additions and 2 deletions
|
@ -14,7 +14,7 @@ module Capybara
|
|||
|
||||
class << self
|
||||
attr_accessor :asset_root, :app_host, :run_server, :default_host
|
||||
attr_accessor :server_port
|
||||
attr_accessor :server_port, :server_boot_timeout
|
||||
attr_accessor :default_selector, :default_wait_time, :ignore_hidden_elements
|
||||
attr_accessor :save_and_open_page_path
|
||||
|
||||
|
@ -166,6 +166,7 @@ end
|
|||
Capybara.configure do |config|
|
||||
config.run_server = true
|
||||
config.server {|app, port| Capybara.run_default_server(app, port)}
|
||||
config.server_boot_timeout = 10
|
||||
config.default_selector = :css
|
||||
config.default_wait_time = 2
|
||||
config.ignore_hidden_elements = false
|
||||
|
|
|
@ -65,7 +65,9 @@ module Capybara
|
|||
Capybara.server.call(Identify.new(@app), @port)
|
||||
end
|
||||
|
||||
Capybara.timeout(10) { if responsive? then true else sleep(0.5) and false end }
|
||||
Capybara.timeout(Capybara.server_boot_timeout) do
|
||||
if responsive? then true else sleep(0.5) and false end
|
||||
end
|
||||
end
|
||||
end
|
||||
rescue TimeoutError
|
||||
|
|
|
@ -62,4 +62,27 @@ describe Capybara::Server do
|
|||
@server2a.port.should == @server2b.port
|
||||
end
|
||||
|
||||
it "should wait specified time for the app to boot" do
|
||||
@slow_app = proc { |env| sleep(1); [200, {}, "Hello Slow Server!"] }
|
||||
|
||||
Capybara.server_boot_timeout = 1.5
|
||||
@server = Capybara::Server.new(@slow_app).boot
|
||||
|
||||
@res = Net::HTTP.start(@server.host, @server.port) { |http| http.get('/') }
|
||||
@res.body.should include('Hello Slow Server')
|
||||
end
|
||||
|
||||
it "should raise an exception if boot timeout is exceeded" do
|
||||
@slow_app = proc { |env| sleep(1); [200, {}, "Hello Slow Server!"] }
|
||||
|
||||
# HACK: Capybara::Server does Kernel#exit on timeout, which makes it difficult
|
||||
# to test. This makes it easier.
|
||||
TestableServer = Class.new(Capybara::Server) do
|
||||
def exit; :timeout; end
|
||||
end
|
||||
|
||||
Capybara.server_boot_timeout = 0.5
|
||||
TestableServer.new(@slow_app).boot.should == :timeout
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue