The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

WWW::Mechanize::Script - fetch websites and executes tests on the results

VERSION

version 0.101

SYNOPSIS

  use WWW::Mechanize::Script;

  my $wms = WWW::Mechanize::Script->new();
  $wms->run_script(@script);

  foreach my $test (@script) {
    $wms->run_test(%{$test});
  }

METHODS

new(\%cfg)

Instantiates new WWW::Mechanize::Script object.

Configuration hash looks like:

    defaults => {
        check => { # check defaults
            "code_cmp" : ">",
            "XXX_code" : 2,
            "ignore_case" : true,
        },
        request => { # request defaults
            agent => { # LWP::UserAgent defaults
                agent => "Agent Adderly",
                accept_cookies => 'yes',    # check LWP::UA param
                show_cookie    => 'yes',    # check LWP::UA param
                show_headers   => 'yes',    # check LWP::UA param
                send_cookie    => 'yes',    # check LWP::UA param
            },
        },
    },
    script_dirs => [qw(/old/wtscripts /new/json_scripts)],
    summary => {
        template => "[% CODE_NAME; IF MESSAGES.size > 0 %] - [% MESSAGES.join(', '); END %]\n",
        target => "-"
    },
    report => {
        template => "[% USE Dumper; Dumper.dump(RESPONSE) %]",
        target => "/tmp/@OPTS_FILE@.log",
        append => true
    }

_gen_code_compute

Interpretes one of following config hash parameters

    defaults => {
        check => { # check defaults
            code_cmp => ">",
            code_func => 'my ($cur,$new) = @_; return $cur > $new ? $cur : $new;'
        }
    }

When none of them are there, the sample in defaults->check->code_func is used.

test_plugins( )

The plugins() classmethod returns the names of configuration loading plugins as found by Module::Pluggable::Object.

get_request_value($request,$value_name)

Returns the value for creating the request - either from current script or from defaults (defaults->request->$value_name).

summarize($code,@msgs)

Generates the summary passing the template in the configuration of config->summary into Template::Toolkit.

Following variables are provided for the template processing:

CODE

The accumulated return code of all executed checks computed via "_gen_code_compute".

MESSAGES

Collected messages returned of all executed checks.

Plus all constants named in the config->templating->vars hash and those in config->summary->vars hash.

The output target is guessed from config->summary->target whereby the special target - is interpreted as stdout.

gen_report($full_test, $mech, $code, @msgs)

Generates a report for a test within a script by passing the template in the configuration of config->report into Template::Toolkit.

Following variables are provided for the template processing:

CODE

The accumulated return code of all executed checks computed via "_gen_code_compute".

MESSAGES

Collected messages returned of all executed checks.

RESPONSE

Hash containing the following HTTP::Response items:

CODE

HTTP response code

CONTENT

Content of the response

BASE

The base URI for this response

Header keys/values as perl hash

Plus all constants named in the config->templating->vars hash and those in config->report->vars hash.

The output target is guessed from config->summary->target whereby the special target - is interpreted as stdout.

When the config->summary->append flag is set and contains a true value, the output is appended to an existing target.

run_script(@script)

Runs a script consisting of at least one test and generates a summary if configured. The code to accumulate the return codes from each test is taken from config->defaults->check as described in "_gen_code_compute".

Returns the accumulated return codes from all tests in the given script.

run_test(\%test)

Runs one test and generates a report if configured (config->report).

The request is constructed from test->request whereby the part below test->request->agent is used to parametrize a new instance of WWW::Mechanize::Timed.

All keys defined below test->request->agent are taken as setter of WWW::Mechanize::Timed or a inherited class.

If there is a hash defined at test->request->http_headers, those headers are passed along with the URI specified at test->request->uri to GET/POST or whatever you want to do (test->request->method).

Which checks are executed is defined below test->check. Each valid plugin below the WWW::Mechanize::Script::Plugin namespace is approved for relevance for the test (see "can_check" in WWW::Mechanize::Script::Plugin).

The test specification is enriched by the configuration in config->defaults using Hash::Merge with the LEFT_PRECEDENT ruleset. Please care about the ruleset especially when merging arrays is to expect.

The code to accumulate the return codes from each test is taken from test->check as described in "_gen_code_compute".

Returns the accumulated return codes from all checks in the given tests.

BUGS

Please report any bugs or feature requests on the bugtracker website http://rt.cpan.org/NoAuth/Bugs.html?Dist=WWW-Mechanize-Script or by email to bug-www-mechanize-script@rt.cpan.org.

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

AUTHOR

Jens Rehsack <rehsack@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Jens Rehsack.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.