(very) minor doco change
[catagits/Test-WWW-Selenium-Catalyst.git] / lib / Test / WWW / Selenium / Catalyst.pm
index 014694f..6da63e4 100644 (file)
@@ -24,7 +24,7 @@ Test::WWW::Selenium::Catalyst - Test your Catalyst application with Selenium
 
 =cut
 
-our $VERSION = '0.05';
+our $VERSION = '0.06';
 
 =head1 DEVELOPERISH RELEASE
 
@@ -102,13 +102,13 @@ and it's killed when your test exits. If wish to manage a selenium server
 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 '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 'MyApp',
    -selenium_args => "-singleWindow -port 4445"
 
 =head2 sel_pid
@@ -174,6 +174,15 @@ sub import {
     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";
@@ -220,6 +229,19 @@ sub start {
     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")
@@ -227,8 +249,8 @@ sub 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,
@@ -247,7 +269,8 @@ END {
         if($www_selenium){
             diag("Shutting down Selenium Server $sel_pid") if $DEBUG;
             $www_selenium->stop();
-            $www_selenium->do_command('shutDown');
+            # 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;
@@ -341,7 +364,8 @@ Thanks in advance for your contributions!
 
 =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