tarantula

Description

Tarantula is a big fuzzy spider. It crawls your Rails application, fuzzing data to see what breaks.

Install

script/plugin install http://opensource.thinkrelevance.com/svn/rubygems/tarantula/trunk tarantula

Dependencies

gem install htmlentities
gem install facets

Usage

Create a Rails integration test that looks like this, filling in your own auth params. You will probably want to include all fixtures.

# somewhere
require 'relevance/tarantula'

# in your test
def test_with_login
  post '/sessions/create', :password => 'your-pass'
  assert_response :redirect
  assert_redirected_to '/'
  follow_redirect!
  tarantula_crawl(self)
end

If you want to set custom options, you can get access to the crawler and set properties before running it. For example, this would turn on HTMLTidy.

def test_with_login
  post '/sessions/create', :password => 'your-pass'
  assert_response :redirect
  assert_redirected_to '/'
  follow_redirect!
  t = tarantula_crawler(self)
  t.handlers << Relevance::Tarantula::TidyHandler.new
  t.crawl '/'
end

Assuming your project is at /work/project/:

cd /work/project
rake tarantula:test

Verbose Mode

If you run the test you will get a report in tmp/tarantula. You can also set VERBOSE=true to see more detail as the test runs.

For more options see the test suite.

Allowed Errors

If, for example, a 404 is an appropriate response for some URLs, you can tell Tarantula to allow 404s for URLs matching a regexp:

t = tarantula_crawler(self)
t.allow_404_for %r{/users/\d+/}

Bugs/Requests

Please submit your bug reports, patches or feature requests as a ticket under the component "tarantula". You'll have to create an account (Sorry! Otherwise we'd get way too much spam).

License and Copyright

Copyright (c) 2008 Relevance, Inc., released under the MIT license