kill dead code, update docs
Chris Nehren [Thu, 14 Jul 2011 16:18:45 +0000 (12:18 -0400)]
lib/Test/Harness/Selenium.pm

index added88..8140691 100644 (file)
@@ -140,32 +140,6 @@ sub stop_app_server {
   }
 }
 
-sub start_everything {
-  my ($self) = @_;
-  if(!exists $self->{app_server_proc}) {
-    $self->start_app_server;
-  }
-  if($self->{selenium_rc}{start} && !$self->{selenium_rc}{selenium_server_proc}) {
-    $self->start_selenium_server;
-  }
-}
-
-sub test_recursive {
-  my ($self, @proto) = @_;
-  my (@files, @dirs);
-  if (@proto) {
-    @files = grep /\.html$/, @proto;
-    @dirs = grep !/\.htmL$/, @proto;
-  } else {
-    $0 =~ /^(t\/.*).t$/ or die "Can't guess directory from $0";
-    @dirs = ($1);
-  }
-  $self->start_everything;
-  $self->test_file($_) for @files;
-  $self->test_directory($_) for
-    sort map File::Find::Rule->directory->in($_), @dirs;
-}
-
 sub test_directory {
   my ($self, $dir) = @_;
   $self->start_everything;
@@ -183,6 +157,7 @@ sub test_file {
   $self->{src}->run_test_table($rows);
 }
 
+# might as well keep this object around.
 my $te = HTML::TableExtract->new;
 sub get_rows_for {
   my ($self, $html_file) = @_;
@@ -213,20 +188,23 @@ Test::Harness::Selenium - Test your app with Selenium
 
 =head1 SYNOPSIS
 
-  # t/selenium.t
-  my $ths = Test::Harness::Selenium->new(
-    selenium_rc => {
-      host => 'selenium_xvnc_server',
-      port => 12345,
-      start => 1, # start xvnc and selenium RC via ssh(1)
-    },
-    browser => '*firefox',
-    # app_base is relative from the machine running selenium_rc
-    app_base => 'http://10.0.0.5:3000/',
-    app_start_cmd => 'script/myapp_server.pl -p 3000',
+  # t/catapp.t
+  my $browser = shift;
+  my $s = Test::Harness::Selenium->new(
+      selenium_rc => {
+        host => '10.0.0.8',
+        port => $< + 6900,
+        start => 1,
+        xvnc_display => 1,
+      },
+      app_base => 'http://10.0.0.5:3000',
+      app_server_cmd => 'examples/THSelenium-Test/script/thselenium_test_server.pl',
+      browser => '*firefox',
   );
   # HTML tables as emitted by the Selenium IDE
-  $ths->test_directory('t/selenium_corpus');
+  eval { $s->test_directory('t/corpus/') };
+  $s->done;
+  done_testing;
 
 
   # or, if you've got a selenium server already running (say, on a designer's
@@ -239,7 +217,7 @@ Test::Harness::Selenium - Test your app with Selenium
     },
     browser => '*iexplore', # can't live with it, can't live without it
     app_base => 'http://10.0.0.5:3000/',
-    app_start_cmd => 'script/myapp_server.pl -p 3000',
+    app_server_cmd => 'script/myapp_server.pl -p 3000',
   );
   # otherwise the same
   $ths->test_directory('t/selenium_corpus');
@@ -275,10 +253,11 @@ Constructor. Accepts a list of key/value pairs according to the following:
 
 =item selenium_rc
 
-Hashref. Accepts the keys host, port, start. host and port describe the server
-on which to start/find the Selenium RC server and possibly the xvnc server.
-start is a Boolean indicating whether to start the Selenium RC server and xvnc
-server.
+Hashref. Accepts the keys host, port, start, start_xvnc, xvnc_display. host and
+port describe the server on which to start/find the Selenium RC server and
+possibly the xvnc server. start is a Boolean indicating whether to start the
+Selenium RC server, whereas start_xvnc dictates the same for the xvnc server.
+xvnc_display is the X11 display to point browsers at when launching them.
 
 =item browser
 
@@ -290,7 +269,7 @@ RC understands (e.g. '*firefox'); see the Selenium docs for more info.
 Scalar. The URL, relative to the machine running Selenium RC, for the base of
 the app. All requests made to the app are relative to this URL.
 
-=item app_start_cmd
+=item app_server_cmd
 
 Scalar. This command will be run by start_app_server to run the app server to
 test.
@@ -304,27 +283,27 @@ test.
 =item Return value: None
 
 Object method. test_directory will use L<File::Find::Rule> to find all C<< .html >>
-files in the given directory, and then formats massages them into data
-structures that L<Socialtext::WikiFixture::Selenese> can send to the Selenium RC
-server. test_directory will then output appropriate TAP according to whether the
-tests and checks passed or failed, respectively.
+files in the given directory, and then massages them into data structures that
+L<Socialtext::WikiFixture::Selenese> can send to the Selenium RC server.
+test_directory will then output appropriate TAP according to whether the tests
+and checks passed or failed, respectively.
 
-=head2 run_tests_for
+=head2 test_file
 
-=item arguments: $html_file
+=item arguments: $file
 
 =item Return value: None
 
-run_tests_for is called by test_directory for each C<< .html >> file it finds in
-the given directory.
+Object method. Runs the tests given in the specified file.
 
-=head2 start_app_server, start_app_server
+=head2 start_app_server, stop_app_server
 
 =item Arguments: None
 
 =item Return value: None
 
-Start and stop the app server using the command given to the constructor.
+Object method. Start and stop the app server using the command given to the
+constructor.  References the app_server_cmd key passed to the constructor.
 
 =head2 start_selenium_server, start_selenium_server
 
@@ -337,7 +316,8 @@ constructor.
 
 =head1 ENVIRONMENT
 
-=head2 SELENIUM_RC_HOST, SELENIUM_RC_PORT, SELENIUM_RC_START
+=head2 SELENIUM_RC_HOST, SELENIUM_RC_PORT, SELENIUM_RC_START,
+SELENIUM_RC_START_XVNC, SELENIUM_RC_XVNC_DISPLAY
 
 These values override the matching values in the selenium_rc hashref passed to
 new.
@@ -348,7 +328,9 @@ Chris Nehren <c.nehren/ths@shadowcat.co.uk>, Matt S. Trout <mst@shadowcat.co.uk>
 
 =head1 CONTRIBUTORS
 
-No one, yet. Patches most welcome!
+No one, yet. Patches most welcome! We most especially welcome doc patches to
+make our code easier to use. We can write the best code in the world, but it
+doesn't do anyone any good if it's impossible to use because of bad docs.
 
 =head1 COPYRIGHT