You may also wish to check out
Test::WWW::Mechanize, which automates some parts of testing sites. I've had good success with subclassing
Test::Unit and writing a custom method for each feature I want to test, with a
Test::WWW:Mechanize instance created in set_up() or new(). I know that
Test::Unit is largely deprecated in favour of
Test::Class, but it's a useful module.