The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Index: t/1-regen.t
===================================================================
--- t/1-regen.t	(revision 55)
+++ t/1-regen.t	(working copy)
@@ -177,6 +177,46 @@
               qr#Can't include $testdir/cantfind -#;
 }
 
+Multiple_test_dirs: {
+    my $testdir = test_setup("multi-dir");
+    my $testdir2 = test_setup("different test dir");
+    isnt $testdir, $testdir2;
+    my $test_dirs = [ { name => 'Foo',
+                        dir  => $testdir,
+                      },
+                      { name => 'Other',
+                        dir  => $testdir2,
+                      },
+                    ];
+    gen_suite( test_dir => $test_dirs, index => "t/index.html" );
+    ok -e "$testdir/TestSuite.html", "TestSuite created";
+    ok -e "$testdir2/TestSuite.html", "TestSuite created";
+    ok -e "$testdir2/foo.html", "Second testdir HTML generated";
+    ok -e "t/index.html";
+    my $index = cat("t/index.html");
+    like $index, qr#<title>Selenium TestSuites</title>#;
+    like $index, qr#<a href="TestRunner\.html\?test=\./tests/TestSuite\.html">Foo TestSuite</a>#;
+    like $index, qr#<a href="TestRunner\.html\?test=\./other/tests/TestSuite\.html">Other TestSuite</a>#;
+}
+
+if (0) {
+Multiple_test_dirs_from_config: {
+    my $testdir = test_setup("multi-dir");
+    my $testdir2 = test_setup("different test dir");
+    isnt $testdir, $testdir2;
+    write_config("multiple test directories");
+    gen_suite();
+    ok -e "$testdir/TestSuite.html", "TestSuite created";
+    ok -e "$testdir2/TestSuite.html", "TestSuite created";
+    ok -e "$testdir2/foo.html", "Second testdir HTML generated";
+    ok -e "t/index.html";
+    my $index = cat("t/index.html");
+    like $index, qr#<title>Selenium TestSuites</title>#;
+    like $index, qr#<a href="TestRunner\.html\?test=\./tests/TestSuite\.html">Foo TestSuite</a>#;
+    like $index, qr#<a href="TestRunner\.html\?test=\./other/tests/TestSuite\.html">Other TestSuite</a>#;
+}
+}
+
 sub gen_suite {
     my @opts = @_;
     lives_ok { generate_suite( @opts, verbose => $verbose ) };
Index: lib/WWW/Selenium/Utils.pm
===================================================================
--- lib/WWW/Selenium/Utils.pm	(revision 57)
+++ lib/WWW/Selenium/Utils.pm	(working copy)
@@ -10,7 +10,7 @@
 
 require Exporter;
 our @ISA = qw(Exporter);
-our @EXPORT_OK = qw(generate_suite cat);
+our @EXPORT_OK = qw(generate_suite cat parse_wikifile);
 
 our $VERSION = '0.08';
 
@@ -25,10 +25,20 @@
 
     croak "Must provide a directory of tests!\n" unless $opts{test_dir};
 
-    _generate_suite( %opts );
+    my @testdirs = ref($opts{test_dir}) eq 'ARRAY' 
+                        ? @{$opts{test_dir}}
+                        : { dir => $opts{test_dir},
+                            name => 'Main',
+                          };
 
+    for my $td (@testdirs) {
+        die "Test dirs must be HASH refs\n" unless ref($td) eq 'HASH';
+        $opts{test_dir} = $td->{dir};
+        _generate_suite( %opts );
+    }
+
     # create a test Suite index
-    create_suite_index($opts{test_dir}, $opts{index}) if $opts{index};
+    create_suite_index(\@testdirs, $opts{index}) if $opts{index};
 }
 
 sub _generate_suite {
@@ -247,18 +257,26 @@
 }
 
 sub create_suite_index {
-    my ($testdir, $index) = @_;
+    my ($testdirs, $index) = @_;
     my @suites;
-    find( sub { push @suites, $File::Find::name if /TestSuite\.html$/ }, $testdir);
+    for my $td (@$testdirs) {
+        find( sub { push @suites, [ $td->{name} => $File::Find::name ] 
+                        if /TestSuite\.html$/;
+                  }, 
+              $td->{dir},
+            );
+    }
     return unless @suites;
     
     (my $index_dir = $index) =~ s#^(.+)/.+$#$1#;
     open(my $fh, ">$index.tmp") or croak "Can't open $index.tmp: $!";
     print $fh html_header(title => "Selenium TestSuites");
     foreach my $s (@suites) {
-        my $name = "Main";
-        $name = $1 if $s =~ m#\Q$testdir\E/(.+)/TestSuite\.html$#;
-        (my $link = $s) =~ s#\Q$index_dir\E/##;
+        my $name = $s->[0];
+        my $file = $s->[1];
+        warn "file=($file)\n";
+        $name = "$name-$1" if $file =~ m#\Q$file\E/(.+)/TestSuite\.html$#;
+        (my $link = $file) =~ s#\Q$index_dir\E/##;
         print $fh qq(\t<tr><td><a href="TestRunner.html?test=./$link">$name TestSuite</a></td></tr>\n);
     }
     print $fh html_footer;