Ack. I always forget that the form eats whitespace. If you haven't already read it, I'll repeat what I just said, with formatting:
Ok, I'll confess -- I am very uncertain of what to name this thing, so I picked Web::Walker because it sounds kinda cool and is guaranteed to annoy^Wbe noticed by the happy fun modules@ people. It is a framework for writing web application-specific sanity checkers. It differs from all the related tools I can find in that it does no automatic link-walking; the entire operation is under programmatic control. It's really a scripting language for web applications. It pulls out all the forms, links, images, etc., and allows the scripter to set field values and click on links. Also, before you start wandering through the site, you can create global constraints on all or some of the pages. If this seems too abstract, here's an example script: use Unnamed::Web::Walker::Doohickey; my $site = Blah::Site->new(); $site->page("Login", url => qr/login/i); $site->constrain_page(sub { shift()->{name} ne 'Login' }, has_text => qr/copyright/); $site->constrain_page('any', sub { validate_html(shift()->{content} }); my $walker = Blah::Walker->new($site); $walker->get("http://localhost/myapp/"); $walker->assert_at("Login"); $walker->post('any', user => 'bob', password => 'bob'); $walker->setField('any', pretext => qr/first\s*name/i, 'Robert'); ('pretext' means any text discovered in a preorder traversal of an HTML tree rooted at a form, before arriving at the specified input field. Which usually means text to the left of a form field. Not that this is relevant.) HTML::Checker? (not necessarily HTML specific) WWW::Checker? (seems a little vague) WWW::Check? WebSite::Walker? (just as intrusive as Web::Walker) WWW::Constrain? WWW::Browser? (too misleading, even if this is a browser) WWW::Sanity? (I use it to write web app sanity checks) WWW::Lint? (sounds too automated; this is a framework) WWW::AppLint? (huh?) WWW::Agent? (too overloaded) WWW::Auto? WWW::Automate? WWW::Script? (a bit high-falutin') Script::WWW? (it's just an OO extension, not a scripting language) WWW::Clean/Scrub? Argh. Thanks in advance for doing my thinking for me. :-)