Test::WWW::Mechanize - Testing-specific WWW::Mechanize subclass
Version 1.05_02
Test::WWW::Mechanize is a subclass of WWW::Mechanize that incorporates features for web application testing. For example:
$mech->get_ok( $page ); $mech->title_is( "Invoice Status", "Make sure we're on the invoice page" ); $mech->content_contains( "Andy Lester", "My name somewhere" ); $mech->content_like( qr/(cpan|perl)\.org/, "Link to perl.org or CPAN" );
This is equivalent to:
$mech->get( $page ); ok( $mech->success ); is( $mech->title, "Invoice Status", "Make sure we're on the invoice page" ); ok( index( $mech->content, "Andy Lester" ) >= 0, "My name somewhere" ); like( $mech->content, qr/(cpan|perl)\.org/, "Link to perl.org or CPAN" );
but has nicer diagnostics if they fail.
Behaves like, and calls, WWW::Mechanize's new method. Any parms passed in get passed to WWW::Mechanize's constructor.
new
A wrapper around WWW::Mechanize's get(), with similar options, except the second argument needs to be a hash reference, not a hash. Like well-behaved *_ok() functions, it returns true if the test passed, or false if not.
*_ok()
Tells if the title of the page is the given string.
$mech->title_is( "Invoice Summary" );
Tells if the title of the page matches the given regex.
$mech->title_like( qr/Invoices for (.+)/
$mech->title_unlike( qr/Invoices for (.+)/
Tells if the content of the page matches the given string
Tells if the content of the page contains $str.
Tells if the content of the page lacks $str.
Tells if the content of the page matches $regex.
Tells if the content of the page does NOT match $regex.
Tells if the page has a $tag tag with the given content in its text.
$tag
XXX Make the $text optional
Tells if the page has a $tag tag with text matching the given regex.
Follow all links on the current page and test for HTTP status 200
$mech->page_links_ok('Check all links');
Follow all links on the current page and test their contents for $regex.
$mech->page_links_content_like( qr/foo/, 'Check all links contain "foo"' );
Follow all links on the current page and test their contents do not contain the specified regex.
$mech->page_links_content_unlike(qr/Restricted/, 'Check all links do not contain Restricted');
Check the current page for specified links and test for HTTP status 200. The links may be specified as a reference to an array containing WWW::Mechanize::Link objects, an array of URLs, or a scalar URL name.
my @links = $mech->find_all_links( url_regex => qr/cnn\.com$/ ); $mech->links_ok( \@links, 'Check all links for cnn.com' ); my @links = qw( index.html search.html about.html ); $mech->links_ok( \@links, 'Check main links' ); $mech->links_ok( 'index.html', 'Check link to index' );
Check the current page for specified links and test for HTTP status passed. The links may be specified as a reference to an array containing WWW::Mechanize::Link objects, an array of URLs, or a scalar URL name.
my @links = $mech->links(); $mech->link_status_is( \@links, 403, 'Check all links are restricted' );
my @links = $mech->links(); $mech->link_status_isnt( \@links, 404, 'Check all links are not 404' );
Check the current page for specified links and test the content of each against $regex. The links may be specified as a reference to an array containing WWW::Mechanize::Link objects, an array of URLs, or a scalar URL name.
my @links = $mech->links(); $mech->link_content_like( \@links, qr/Restricted/, 'Check all links are restricted' );
Check the current page for specified links and test the content of each does not match $regex. The links may be specified as a reference to an array containing WWW::Mechanize::Link objects, an array of URLs, or a scalar URL name.
Makes a follow_link() call and executes tests on the results. The link must be found, and then followed successfully. Otherwise, this test fails.
follow_link()
%parms is a hashref containing the parms to pass to follow_link(). Note that the parms to follow_link() are a hash whereas the parms to this function are a hashref. You have to call this function like:
$agent->follow_like_ok( {n=>3}, "looking for 3rd link" );
As with other test functions, $comment is optional. If it is supplied then it will display when running the test harness in verbose mode.
$comment
Returns true value if the specified link was found and followed successfully. The HTTP::Response object returned by follow_link() is not available.
Add HTML::Lint and HTML::Tidy capabilities.
Please report any bugs or feature requests to bug-test-www-mechanize@rt.cpan.org, or through the web interface at http://rt.cpan.org. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
bug-test-www-mechanize@rt.cpan.org
Copyright 2004 Andy Lester, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Andy Lester, <andy@petdance.com>
<andy@petdance.com>
Thanks to Mike O'Regan and Shawn Sorichetti for big help and chunks of code.
To install Test::WWW::Mechanize, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Test::WWW::Mechanize
CPAN shell
perl -MCPAN -e shell install Test::WWW::Mechanize
For more information on module installation, please visit the detailed CPAN module installation guide.