Merge remote branch 'smparkes/master'
This commit is contained in:
commit
47feb5e536
|
@ -19,6 +19,9 @@ class Capybara::Driver::Base
|
|||
false
|
||||
end
|
||||
|
||||
def wait_until *args
|
||||
end
|
||||
|
||||
def response_headers
|
||||
raise Capybara::NotSupportedByDriverError
|
||||
end
|
||||
|
@ -34,4 +37,8 @@ class Capybara::Driver::Base
|
|||
def cleanup!
|
||||
end
|
||||
|
||||
def has_shortcircuit_timeout?
|
||||
false
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -21,16 +21,11 @@ module Capybara
|
|||
end
|
||||
|
||||
def driver
|
||||
@driver ||= case mode
|
||||
when :rack_test
|
||||
Capybara::Driver::RackTest.new(app)
|
||||
when :selenium
|
||||
Capybara::Driver::Selenium.new(app)
|
||||
when :celerity
|
||||
Capybara::Driver::Celerity.new(app)
|
||||
when :culerity
|
||||
Capybara::Driver::Culerity.new(app)
|
||||
else
|
||||
@driver ||= begin
|
||||
string = mode.to_s
|
||||
string.gsub!(%r{(^.)|(_.)}) { |m| m[m.length-1,1].upcase }
|
||||
Capybara::Driver.const_get(string.to_sym).new(app)
|
||||
rescue NameError
|
||||
raise Capybara::DriverNotFoundError, "no driver called #{mode} was found"
|
||||
end
|
||||
end
|
||||
|
@ -245,7 +240,7 @@ module Capybara
|
|||
end
|
||||
|
||||
def wait_until(timeout = Capybara.default_wait_time)
|
||||
WaitUntil.timeout(timeout) { yield }
|
||||
WaitUntil.timeout(timeout,driver) { yield }
|
||||
end
|
||||
|
||||
def evaluate_script(script)
|
||||
|
|
|
@ -4,7 +4,7 @@ module Capybara
|
|||
|
||||
class << self
|
||||
|
||||
def timeout(seconds = 1, &block)
|
||||
def timeout(seconds = 1, driver = nil, &block)
|
||||
start_time = Time.now
|
||||
|
||||
result = nil
|
||||
|
@ -12,9 +12,12 @@ module Capybara
|
|||
until result
|
||||
return result if result = yield
|
||||
|
||||
if (Time.now - start_time) > seconds
|
||||
raise TimeoutError
|
||||
delay = seconds - (Time.now - start_time)
|
||||
if delay <= 0
|
||||
raise TimeoutError
|
||||
end
|
||||
|
||||
driver && driver.wait_until(delay)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -91,12 +91,17 @@ shared_examples_for "session with javascript support" do
|
|||
end
|
||||
|
||||
it "should default to Capybara.default_wait_time before timeout" do
|
||||
@session.driver # init the driver to exclude init timing from test
|
||||
start = Time.now
|
||||
Capybara.default_wait_time = 0.2
|
||||
begin
|
||||
@session.wait_until { false }
|
||||
rescue Capybara::TimeoutError; end
|
||||
(Time.now - start).should be_close(0.2, 0.1)
|
||||
if @session.driver.has_shortcircuit_timeout?
|
||||
(Time.now - start).should be_close(0, 0.1)
|
||||
else
|
||||
(Time.now - start).should be_close(0.2, 0.1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue