From 40804c06babdb67b7dd1648fb2eb76246c843d43 Mon Sep 17 00:00:00 2001 From: Joe Ferris Date: Thu, 14 Apr 2011 10:16:56 -0400 Subject: [PATCH] Wait and timeout when looking for content --- lib/capybara/driver/webkit.rb | 2 +- spec/integration/session_spec.rb | 47 ++++++++++++++++++++++++++++++-- spec/spec_helper.rb | 3 ++ 3 files changed, 49 insertions(+), 3 deletions(-) diff --git a/lib/capybara/driver/webkit.rb b/lib/capybara/driver/webkit.rb index 7193182..55f9cee 100644 --- a/lib/capybara/driver/webkit.rb +++ b/lib/capybara/driver/webkit.rb @@ -61,7 +61,7 @@ class Capybara::Driver::Webkit end def wait? - false + true end def wait_until(*args) diff --git a/spec/integration/session_spec.rb b/spec/integration/session_spec.rb index cd560d9..247178b 100644 --- a/spec/integration/session_spec.rb +++ b/spec/integration/session_spec.rb @@ -2,11 +2,54 @@ require 'spec_helper' require 'capybara-webkit' describe Capybara::Session do + subject { Capybara::Session.new(:reusable_webkit, @app) } + after { subject.reset! } + + context "slow javascript app" do + before(:all) do + @app = lambda do |env| + body = <<-HTML + +
+

Hello

+ + + + HTML + [200, + { 'Content-Type' => 'text/html', 'Content-Length' => body.length.to_s }, + [body]] + end + end + + before do + @default_wait_time = Capybara.default_wait_time + Capybara.default_wait_time = 1 + end + + after { Capybara.default_wait_time = @default_wait_time } + + it "waits for a request to load" do + subject.visit("/") + subject.find_button("Submit").click + subject.should have_content("Goodbye"); + end + end +end + +describe Capybara::Session, "with TestApp" do before do - @session = Capybara::Session.new(:webkit, TestApp) + @session = Capybara::Session.new(:reusable_webkit, TestApp) end - # TODO: needs to only use one Browser throughout tests # it_should_behave_like "session" # it_should_behave_like "session with javascript support" end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f6288ce..8edfcd2 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -20,3 +20,6 @@ require File.join(spec_dir,"spec_helper") require 'capybara/driver/webkit/browser' $webkit_browser = Capybara::Driver::Webkit::Browser.new(:socket_class => TCPSocket) +Capybara.register_driver :reusable_webkit do |app| + Capybara::Driver::Webkit.new(app, :browser => $webkit_browser) +end