1
0
Fork 0
mirror of https://github.com/teamcapybara/capybara.git synced 2022-11-09 12:08:07 -05:00

For Capybara's own test suite, keep default_wait_time always at 1

Until now, we had it set at 0 for all tests that did't require `:js`.
But that would cause flickering failures when tests that didn't require
`:js` ran against Selenium, e.g. like this:

    visit '/foo' # asynchronous in Selenium
    page.should have_content 'Foo' # can fail if visit didn't finish in time

This change doubles(!) test suite run time, presumably because we are
testing for expected failures in a lot of places, causing us to retry
for the full default_wait_time period. At this point though I'm not sure
if there's a simple way to avoid the performance hit.
This commit is contained in:
Jo Liss 2012-09-10 00:36:04 +02:00
parent 8d50e220c4
commit 0b28aa2e97
3 changed files with 11 additions and 16 deletions

View file

@ -12,15 +12,6 @@ module Capybara
end
end
config.filter_run_excluding :requires => filter
config.around do |block|
if example.metadata[:requires] and example.metadata[:requires].include?(:js)
Capybara.default_wait_time = 1
block.run
Capybara.default_wait_time = 0
else
block.run
end
end
end
def spec(name, options={}, &block)

View file

@ -110,13 +110,21 @@ describe Capybara::DSL do
end
describe '#using_wait_time' do
before do
@previous_wait_time = Capybara.default_wait_time
end
after do
Capybara.default_wait_time = @previous_wait_time
end
it "should switch the wait time and switch it back" do
in_block = nil
Capybara.using_wait_time 6 do
in_block = Capybara.default_wait_time
end
in_block.should == 6
Capybara.default_wait_time.should == 0
Capybara.default_wait_time.should == @previous_wait_time
end
it "should ensure wait time is reset" do
@ -125,11 +133,7 @@ describe Capybara::DSL do
raise "hell"
end
end.to raise_error
Capybara.default_wait_time.should == 0
end
after do
Capybara.default_wait_time = 0
Capybara.default_wait_time.should == @previous_wait_time
end
end

View file

@ -38,7 +38,7 @@ require 'capybara/spec/session'
alias :running :lambda
Capybara.app = TestApp
Capybara.default_wait_time = 0 # less timeout so tests run faster
Capybara.default_wait_time = 1 # less timeout so tests run faster
module TestSessions
RackTest = Capybara::Session.new(:rack_test, TestApp)