Webrat - Ruby Acceptance Testing for Web applications
Go to file
Simon Rozet 4e07f5b654 Fix following of absolute redirect URL in Sinatra
What's going on when the app redirects to an absolute URL?

* Sinatra relies on Rack::MockSession which sets SERVER_NAME to
  "example.org" [1] on request it makes. However, Webrat expects
  it to be "www.example.com"

* In MyClassyApp, the redirect URL is made out of Rack::Request#url [2]
  which uses  SERVER_NAME, which is set to "example.org" by Rack::MockSession.
  As a result, Webrat see it as an external redirect and don't follow it.

NOTE:

* SERVER_NAME is stricly equivalent to HTTP_HOST [3]
* This could have been fixed in Webrat::Session too. I'am not sure
  that it won't affect other frameworks so I left it intact.

      def request_page(url, http_method, data) #:nodoc:
         h = headers
         h['HTTP_REFERER'] = @current_url if @current_url
  +      h['HTTP_HOST']    = 'www.example.com'

[1] 5c00dd698e/lib/rack/mock.rb (L79)
[2] 5c00dd698e/lib/rack/request.rb (L201)
[3] 5c00dd698e/lib/rack/request.rb (L72)
2009-02-28 03:30:26 +01:00
lib Fix following of absolute redirect URL in Sinatra 2009-02-28 03:30:26 +01:00
spec Fix following of absolute redirect URL in Sinatra 2009-02-28 03:30:26 +01:00
vendor Switch to using selenium-client gem and vendor selenium-server.jar (not used directly from webrat yet) 2008-11-20 16:07:18 -05:00
.document Adding .document RDoc config file 2008-11-25 01:04:26 -05:00
.gitignore Ignore *.tmproj 2009-01-17 13:20:22 -05:00
History.txt History 2009-02-27 20:45:51 -05:00
install.rb Adding gemspec. Hopfully gem will build on GitHub now 2008-11-24 20:34:10 -05:00
MIT-LICENSE.txt Add hoe for gem support 2008-03-02 19:35:46 -05:00
Rakefile Bumping nokogiri dependency version to 1.2.0 2009-02-23 21:18:17 -05:00
README.rdoc updated from master 2008-12-27 17:22:51 -06:00

= Webrat - Ruby Acceptance Testing for Web applications

- http://gitrdoc.com/brynary/webrat
- http://groups.google.com/group/webrat
- http://webrat.lighthouseapp.com/
- http://github.com/brynary/webrat
- #webrat on Freenode

== Description

Webrat lets you quickly write expressive and robust acceptance tests for a Ruby
web application. 

== Features

* Browser Simulator for expressive, high level acceptance testing without the
  performance hit and browser dependency of Selenium or Watir (See Webrat::Session)
* Use the same API for Browser Simulator and real Selenium tests using
  Webrat::Selenium when necessary (eg. for testing AJAX interactions)
* Supports multiple Ruby web frameworks: Rails, Merb and Sinatra
* Supports popular test frameworks: RSpec, Cucumber, Test::Unit and Shoulda
* Webrat::Matchers API for verifying rendered HTML using CSS, XPath, etc.

== Example

  class SignupTest < ActionController::IntegrationTest
  
    def test_trial_account_sign_up
      visit home_path
      click_link "Sign up"
      fill_in "Email", :with => "good@example.com"
      select "Free account"
      click_button "Register"
    end
    
  end
  
Behind the scenes, Webrat will ensure:

* If a link, form field or button is missing, the test will fail.
* If a URL is invalid, the test will fail.
* If a page load or form submission is unsuccessful, the test will fail.

== Installing Nokogiri

Users of Debian Linux (e.g. Ubuntu) need to run:

  sudo apt-get install libxslt1-dev libxml2-dev.

Otherwise the Nokogiri gem, which Webrat depends on, won't install properly.

== Install for Rails

To install the latest release as a gem:

  sudo gem install webrat
  
To install the latest code as a plugin: (_Note:_ This may be less stable than using a released version)

  script/plugin install git://github.com/brynary/webrat.git

In your test_helper.rb or env.rb (for Cucumber) add:

  require "webrat"
  
  Webrat.configure do |config|
    config.mode = :rails
  end
  
== Install with Merb

Merb 1.0 has built-in, seamless Webrat support. Just start using
methods from Webrat::Session in your specs.

== Authors

- Maintained by {Bryan Helmkamp}[mailto:bryan@brynary.com]
- Original code written by {Seth Fitzsimmons}[mailto:seth@mojodna.net]
- Initial development was sponsored by EastMedia[http://www.eastmedia.com]
- Many other contributors. See attributions in History.txt

== License

Copyright (c) 2007-2008 Bryan Helmkamp, Seth Fitzsimmons.
See MIT-LICENSE.txt in this directory.