1 #=====================================================================
 
   3 # Copyright (C) 2006/2007
 
   4 # Web http://www.lx-office.org
 
   6 #=====================================================================
 
   8 #  Author: Udo Spallek, Thomas Kasulke
 
   9 #   Email: udono@gmx.net, tkasulke@linet-services.de
 
  11 # This program is free software; you can redistribute it and/or modify
 
  12 # it under the terms of the GNU General Public License as published by
 
  13 # the Free Software Foundation; either version 2 of the License, or
 
  14 # (at your option) any later version.
 
  16 # This program is distributed in the hope that it will be useful,
 
  17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 
  18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
  19 # GNU General Public License for more details.
 
  20 # You should have received a copy of the GNU General Public License
 
  21 # along with this program; if not, write to the Free Software
 
  22 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
  23 #======================================================================
 
  25 # Selenium Main Caller
 
  26 # Call all Selenium scripts from here. To use Selenium tests in 
 
  27 # Lx-Office you need to Install Selenium Remote Control. Take a look at 
 
  28 # the README Document for further informatinons on installing Selenium 
 
  29 # and testing Lx-Office and of course writing your own testcases.
 
  31 #######################################################################
 
  33   push @INC, ['/t/selenium', \&init_server];
 
  34   use vars qw( $lxdebug $lxtest $sel );
 
  38   use Test::WWW::Selenium;
 
  39   use Test::More qw(no_plan);
 
  43   if(-f "/tmp/lxtest-temp.conf") {
 
  44     eval { require('/tmp/lxtest-temp.conf'); };
 
  47     eval { require('t/lxtest.conf'); };
 
  50     diag("No test configuration found in t/lxtest.conf.\n
 
  51     Maybe you forget to copy t/lxtest.conf.default to t/lxtest.conf. Exit test...\n");
 
  55   sub server_is_running {
 
  56     return IO::Socket::INET->new(PeerAddr => $ENV{SRC_HOST} || $lxtest->{seleniumhost},
 
  57                                  PeerPort => $ENV{SRC_PORT} || $lxtest->{seleniumport},
 
  61 #   if (server_is_running) {
 
  62 #     plan tests => 200; # Need to be cutomized
 
  65     if(!server_is_running) {
 
  66       print "No selenium server found! "
 
  67            ."Maybe you forgot to start it or "
 
  68            ."the preferences in t/lxtest.conf doesen't fit to your system";
 
  72     diag('Pretests and initialisation');
 
  76     $lxtest->{test_id} = time; # create individual ids by unixtime
 
  77     $lxtest->{testuserlogin}   = $lxtest->{testlogin} . $lxtest->{test_id};
 
  78     $lxtest->{testuserpasswd}  = $lxtest->{test_id};
 
  79     $lxtest->{db}              = $lxtest->{db} . $lxtest->{test_id};
 
  81     ok(defined $lxtest->{rpw}, "Get root password");
 
  83     ok(defined $lxtest->{dbhost}, "found dbhost in config");
 
  84     ok(defined $lxtest->{dbport}, "found dbport in config");
 
  85     ok(defined $lxtest->{dbuser}, "found dbuser in config");
 
  86     ok(defined $lxtest->{dbpasswd}, "found dbpasswd in config");
 
  88     $lxtest->{lxadmin_url} = $lxtest->{lxbaseurl} . "admin.pl";
 
  89     $lxtest->{lxadmin_with_get} = $lxtest->{lxadmin_url} . "?rpw=$lxtest->{rpw}&nextsub=list_users&action=Weiter";
 
  90     $lxtest->{lxadmin} = $lxtest->{lxadmin_url} . "?rpw=$lxtest->{rpw}&nextsub=list_users&action=Weiter";
 
  95     eval { $sel = Test::WWW::Selenium->new(
 
  96       host => $lxtest->{seleniumhost},
 
  97       port => $lxtest->{seleniumport},
 
  98       browser => $lxtest->{seleniumbrowser},
 
  99       browser_url => $lxtest->{lxadmin},
 
 104       diag("No Selenium Server running, or wrong preferences\n\n");
 
 108     ok(defined $sel, 'Creating Selenium Object');
 
 110     diag('Starting Selenium tests...');
 
 112     foreach my $scriptdir (@_) {
 
 113       opendir(SCRIPTS, 't/selenium/testscripts/' . $scriptdir);
 
 114       foreach (sort readdir(SCRIPTS)) {
 
 115         require_ok("t/selenium/testscripts/". $scriptdir . "/" . $_) if ( $_ =~ /^\w\d\d\d.*\.t$/);