Replay Firefox's Tamper Data XML sessions in Ruby
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


= Meddle

A less resource-heavy way to do realistic regression tests (and
eventually load tests) than controlling an actual web browser 
a la watir.  

* Interact with your web site using Firefox.  
* Capture the requests sent with Tamper Data, and export as XML
* Replay them from the command line
 - with realistic timing
 - with SSL support
 - with a 'rewrite' step that lets you programmatically change the
   request data before sending it (e.g. to switch hostnames from
   production to test, or vice versa)
 - using the single-threaded low-overhead goodness of EventMachine
 - using "approximately real" rules for number of parallel requests
   per hostname (default 2), persistent connections, and timeout values

== Usage

See example.rb


0) It's pre-pre-pre alpha in a big way.  I put it on github in the
expectation that it will *someday* be generally useful, not as an
advertisement that it is currently.  Because it's not.

1) See the TODO file for more rapidly changing detail

== Other Tools

1) what about watir?

Tried it, didn't like it ;-)

More seriously, it doesn't do the same job.  Meddle replays real
human-generated sessions: watir simulates them.  Meddle runs from the
command line and doesn't need a web browser to be installed or
running.  Eventually, if I can make it run fast enough (or if it's run
against sites slow enough ;-), it will be useful for load testing.

2) What about Mechanize?

Again, it doesn't do the same job.  Mechanize will do you for
functional testing ("did I get this page when I clicked that button or
followed the link?") but the headers it sends aren't the headers your
browser sent, and it doesn't download images, and so on and so forth.

3) What about WWW::TamperData (on CPAN)?

That's actually pretty similar to what this does.  But it's in Perl
and I wanted one in Ruby.

Also, as of v 0.08 it sends out all the requests at once and pays no
heed to the timings in the XML.  This is fine for a single shot but
probably not so hot for simulating actual user load