use Test::WWW::Selenium;
use Test::More;
use Catalyst::Utils;
+use Catalyst::EngineLoader;
BEGIN { $ENV{CATALYST_ENGINE} ||= 'HTTP'; }
=cut
-our $VERSION = '0.07';
+our $VERSION = '0.06';
=head1 DEVELOPERISH RELEASE
yourself, (for instance you wish to start up a server once and run a number of
tests against it) pass C<-no_selenium_server> to import:
- use Test::WWW::Selenium 'MyApp',
+ use Test::WWW::Selenium::Catalyst 'MyApp',
-no_selenium_server => 1
Along a similar vein you can also pass command line arguments to the selenium
server via C<-selenium_args>:
- use Test::WWW::Selenium 'MyApp',
+ use Test::WWW::Selenium::Catalyst 'MyApp',
-selenium_args => "-singleWindow -port 4445"
=head2 sel_pid
if(defined $d){
$DEBUG = $d;
}
+
+ $args{-selenium_args} ||= '-singleWindow';
+
+ if ($ENV{SELENIUM_SERVER}) {
+ $args{-no_selenium_server} = 1;
+ }
+ elsif ($ENV{SELENIUM_PORT}) {
+ $args{-selenium_args} .= " -port " . $ENV{SELENIUM_PORT};
+ }
unless ($args{-no_selenium_server}) {
$class->_start_server($args{-selenium_args}) or croak "Couldn't start selenium server";
diag("Catalyst server $$ going down (TERM)") if $DEBUG;
exit 0;
};
- diag("Catalyst server running in $$") if $DEBUG;
- $app->run($port, 'localhost');
+ diag("Catalyst server running in pid $$ with port $port") if $DEBUG;
+ my $loader = Catalyst::EngineLoader->new(application_name => $app);
+ my $server = $loader->auto(port => $port, host => 'localhost',
+ server_ready => sub {
+ diag("Server started on port $port") if $DEBUG;
+ },
+ );
+ $app->run($port, 'localhost', $server);
+
+ diag("Process $$ (catalyst server) exiting.") if $DEBUG;
exit 1;
}
$uri = 'http://localhost:' . $port;
my $sel_class = delete $args->{selenium_class} || 'Test::WWW::Selenium';
my $sel;
+ if ($ENV{SELENIUM_SERVER}) {
+ my $uri = $ENV{SELENIUM_SERVER};
+ $uri =~ s!^(?:http://)?!http://!;
+ $uri = new URI($uri);
+ $args->{selenium_host} = $uri->host;
+ $args->{selenium_port} = $uri->port;
+ }
+ elsif ($ENV{SELENIUM_PORT}) {
+ $args->{selenium_port} = $ENV{SELENIUM_PORT};
+ }
+
+ my $sel_host = delete $args->{selenium_host} || 'localhost';
+ my $sel_port = delete $args->{selenium_port} || 4444;
while(!$sel && $tries--){
sleep 1;
diag("Waiting for selenium server to start")
eval {
$sel = $sel_class->new(
- host => delete $args->{selenium_host} || 'localhost',
- port => delete $args->{selenium_port} || 4444,
+ host => $sel_host,
+ port => $sel_port,
browser => '*firefox',
browser_url => $uri,
auto_stop => 0,
if($www_selenium){
diag("Shutting down Selenium Server $sel_pid") if $DEBUG;
$www_selenium->stop();
- $www_selenium->do_command('shutDownSeleniumServer');
+ # This can fail if a page hasn't been requested yet.
+ eval { $www_selenium->do_command('shutDownSeleniumServer') };
undef $www_selenium;
}
diag("Killing Selenium Server $sel_pid") if $DEBUG;
undef $sel_pid;
} elsif ($www_selenium) {
- diag("Stopping Selenium Session $sel_pid") if $DEBUG;
- $www_selenium->stop();
+ diag("Using external Selenium server. Don't shut it down.") if $DEBUG;
undef $www_selenium;
}
=head1 ACKNOWLEDGEMENTS
-Thanks for mst for getting on my case to actually write this thing :)
+Thanks for mst for getting on my (jrockway's) case to actually write this thing
+:)
=head1 COPYRIGHT & LICENSE