HTTP::WebTest (by Richard Anderson) was released to CPAN today and is available for download. It is a module for creating automated unit tests for Apache::ASP pages (and other). Here is the announcement posted to comp.lang.perl.announce and comp.lang.perl.modules: NAME HTTP::WebTest - Test remote URLs or local web files DESCRIPTION This module runs tests on remote URLs or local web files containing Perl/HTML/JavaScript/etc. and generates a detailed test report. The test specifications can be read from a parameter file or input as method arguments. If you are testing a local file, Apache is started on a private/dynamic port with a configuration file in a temporary directory. The module displays the test results on the terminal by default or directs them to a file. The module will also optionally e-mails the test results. When the calling program exits, the module stops the local instance of Apache and deletes the temporary directory. Each test consists of literal strings or regular expressions that are either required to exist or forbidden to exist in the fetched ~ page. You can also specify tests for the minimum and maximum number of bytes in the returned page. If you are testing a local file, the module checks the error log in the temporary directory before and after the file is fetched from Apache. If messages are written to the error log during the fetch, the module flags this as an error and writes the messages to the output test report. SYNOPSIS This module can accept input parameters from a parameter file or subroutine arguments. TO RUN WEB TESTS DEFINED BY SUBROUTINE ARGUMENTS: use HTTP::WebTest; run_web_test(\@web_tests, \$num_fail, \$num_succeed, \%test_options) or use HTTP::WebTest; run_web_test(\@web_tests, \$num_fail, \$num_succeed) TO RUN WEB TESTS DEFINED BY A PARAMETER FILE: use sigtrap qw(die normal-signals); # Recommended, not necessary use HTTP::WebTest; $webtest = HTTP::WebTest->new(); $webtest->web_test('my_web_tests.wt', \$num_fail, \$num_succeed); The web_test() method has an option to test a local file by starting Apache on a private port, copying the file to a temporary htdocs directory and fetching the page from Apache. If you are testing with multiple parameter files, you can avoid restarting Apache each time by calling new() only once and recycling the object: use sigtrap qw(die normal-signals); # Recommended, not necessary use HTTP::WebTest; $webtest = HTTP::WebTest->new(); foreach $file (@ARGV) { $webtest->web_test($file, \$num_fail, \$num_succeed); } TO ENABLE DEBUGGING MESSAGES (OUTPUT TO STDOUT): If you are calling the web_test method, use the debug parameter. If you are calling the run_web_test method, do this: use HTTP::WebTest; $HTTP::WebTest::Debug = 1; # Diagnostic messages $HTTP::WebTest::Debug = 2; # Messages and preserve temp Apache dir run_web_test(\@web_tests, \$num_fail, \$num_succeed) RESTRICTIONS / BUGS This module only works on Unix (e.g., Solaris, Linux, AIX, etc.). The module's HTTP requests time out after 3 minutes (the default value for LWP::UserAgent). If the file_path parameter is specified, Apache must be installed. If the file_path parameter is specified, the directory /tmp cannot be NFS-mounted, since Apache's lockfile and the SSL mutex file must be stored on a local disk. VERSION This document describes version 0.01, release date 13 January 2001. TODO Add option to validate HTML syntax using HTML::Validator. Add option to check links (see http://world.std.com/~swmcd/steven/perl/pm/lc/linkcheck.html). AUTHOR Richard Anderson <[EMAIL PROTECTED]> COPYRIGHT Copyright (c) 2000 Richard Anderson. All rights reserved. This module is free software. It may be used, redistributed and/or modified under the terms of the Perl Artistic License. [EMAIL PROTECTED] RayCosoft, LLC Perl/Java/Oracle/Unix software engineering www.unixscripts.com www.zipcon.net/~starfire/home Seattle, WA, USA