Skip to content

Commit

Permalink
Merge branch 'master' of git://github.com/brynary/webrat
Browse files Browse the repository at this point in the history
  • Loading branch information
Thomas Jack committed May 19, 2009
2 parents 232ed36 + fd431f2 commit 956b43d
Show file tree
Hide file tree
Showing 9 changed files with 50 additions and 10 deletions.
3 changes: 3 additions & 0 deletions History.txt
Expand Up @@ -9,6 +9,9 @@
* Added support for field_labeled_locators ending in non word characters
lh 148 (Zach Dennis)
* Filled in tests on click link lh 195 (diabolo)
* Added current_url to selenium session lh 215 (Luke Amdor)
* Added silence spec to selenium lh 238 (Martin Gamsjaeger aka snusnu)
* Added ability to configure the browser startup timeout for selenium lh 242 (Mike Gaffney)

== 0.4.4 / 2009-04-06

Expand Down
4 changes: 4 additions & 0 deletions lib/webrat/core/configuration.rb
Expand Up @@ -53,6 +53,9 @@ class Configuration

# Set the key that Selenium uses to determine the browser running. Default *firefox
attr_accessor :selenium_browser_key

# Set the timeout for waiting for the browser process to start
attr_accessor :selenium_browser_startup_timeout

# How many redirects to the same URL should be halted as an infinite redirect
# loop? Defaults to 10
Expand All @@ -68,6 +71,7 @@ def initialize # :nodoc:
self.selenium_server_port = 4444
self.infinite_redirect_limit = 10
self.selenium_browser_key = '*firefox'
self.selenium_browser_startup_timeout = 5
end

def parse_with_nokogiri? #:nodoc:
Expand Down
7 changes: 7 additions & 0 deletions lib/webrat/selenium.rb
@@ -1,6 +1,13 @@
require "webrat"
gem "selenium-client", ">=1.2.14"
require "selenium/client"

# active_support already defines silence_stream, no need to do that again if it's already present.
# http://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/kernel/reporting.rb
unless Kernel.respond_to?(:silence_stream)
require "webrat/selenium/silence_stream"
end

require "webrat/selenium/selenium_session"
require "webrat/selenium/matchers"
require "webrat/core_extensions/tcp_socket"
Expand Down
2 changes: 2 additions & 0 deletions lib/webrat/selenium/application_server.rb
Expand Up @@ -2,6 +2,8 @@ module Webrat
module Selenium

class ApplicationServer

include Webrat::Selenium::SilenceStream

def self.boot
case Webrat.configuration.application_framework
Expand Down
6 changes: 5 additions & 1 deletion lib/webrat/selenium/selenium_rc_server.rb
Expand Up @@ -2,6 +2,8 @@ module Webrat
module Selenium

class SeleniumRCServer

include Webrat::Selenium::SilenceStream

def self.boot
new.boot
Expand Down Expand Up @@ -30,7 +32,9 @@ def stop_at_exit
def remote_control
return @remote_control if @remote_control

@remote_control = ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0", Webrat.configuration.selenium_server_port, 5)
@remote_control = ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0",
Webrat.configuration.selenium_server_port,
Webrat.configuration.selenium_browser_startup_timeout)
@remote_control.jar_file = jar_path

return @remote_control
Expand Down
14 changes: 5 additions & 9 deletions lib/webrat/selenium/selenium_session.rb
Expand Up @@ -22,6 +22,7 @@ def selenium

class SeleniumSession
include Webrat::SaveAndOpenPage
include Webrat::Selenium::SilenceStream

def initialize(*args) # :nodoc:
end
Expand Down Expand Up @@ -55,6 +56,10 @@ def response_body #:nodoc:
selenium.get_html_source
end

def current_url
selenium.location
end

def click_button(button_text_or_regexp = nil, options = {})
if button_text_or_regexp.is_a?(Hash) && options == {}
pattern, options = nil, button_text_or_regexp
Expand Down Expand Up @@ -182,15 +187,6 @@ def save_and_open_screengrab

protected

def silence_stream(stream)
old_stream = stream.dup
stream.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null')
stream.sync = true
yield
ensure
stream.reopen(old_stream)
end

def setup #:nodoc:
Webrat::Selenium::SeleniumRCServer.boot
Webrat::Selenium::ApplicationServer.boot
Expand Down
14 changes: 14 additions & 0 deletions lib/webrat/selenium/silence_stream.rb
@@ -0,0 +1,14 @@
module Webrat
module Selenium
module SilenceStream
def silence_stream(stream)
old_stream = stream.dup
stream.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null')
stream.sync = true
yield
ensure
stream.reopen(old_stream)
end
end
end
end
1 change: 1 addition & 0 deletions spec/integration/rails/test/integration/webrat_test.rb
Expand Up @@ -10,6 +10,7 @@ class WebratTest < ActionController::IntegrationTest
test "should visit pages" do
visit root_path
assert_contain("Webrat Form")
assert URI.parse(current_url).path, root_path
end

test "should submit forms" do
Expand Down
9 changes: 9 additions & 0 deletions spec/private/core/configuration_spec.rb
Expand Up @@ -92,6 +92,15 @@
it 'should default selenium browser key to *firefox' do
@config.selenium_browser_key.should == '*firefox'
end

it 'should default selenium browser startup timeout to 5 seconds' do
@config.selenium_browser_startup_timeout.should == 5
end

it 'should allow overriding of the browser startup timeout' do
@config.selenium_browser_startup_timeout = 10
@config.selenium_browser_startup_timeout.should == 10
end
end

end

0 comments on commit 956b43d

Please sign in to comment.