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);
42 if(-f "/tmp/lxtest-temp.conf") {
43 eval { require('/tmp/lxtest-temp.conf'); };
46 eval { require('t/lxtest.conf'); };
49 diag("No test configuration found in t/lxtest.conf.\n
50 Maybe you forget to copy t/lxtest.conf.default to t/lxtest.conf. Exit test...\n");
54 sub server_is_running {
55 return IO::Socket::INET->new(PeerAddr => $ENV{SRC_HOST} || $lxtest->{seleniumhost},
56 PeerPort => $ENV{SRC_PORT} || $lxtest->{seleniumport},
60 # if (server_is_running) {
61 # plan tests => 200; # Need to be cutomized
64 if(!server_is_running) {
65 print "No selenium server found! "
66 ."Maybe you forgot to start it or "
67 ."the preferences in t/lxtest.conf doesen't fit to your system";
71 diag('Pretests and initialisation');
75 $lxtest->{test_id} = time; # create individual ids by unixtime
76 $lxtest->{testuserlogin} = $lxtest->{testlogin} . $lxtest->{test_id} if(!$lxtest->{testuserlogin});
77 $lxtest->{testuserpasswd} = $lxtest->{test_id} if(!$lxtest->{testuserpasswd});
78 $lxtest->{db} = $lxtest->{db} . $lxtest->{test_id} if(!($lxtest->{db} =~ /^seleniumtestdatabase[0-9]{10}$/));
80 ok(defined $lxtest->{rpw}, "Get root password");
82 ok(defined $lxtest->{dbhost}, "found dbhost in config");
83 ok(defined $lxtest->{dbport}, "found dbport in config");
84 ok(defined $lxtest->{dbuser}, "found dbuser in config");
85 ok(defined $lxtest->{dbpasswd}, "found dbpasswd in config");
87 $lxtest->{lxadmin_url} = $lxtest->{lxbaseurl} . "admin.pl";
88 $lxtest->{lxadmin_with_get} = $lxtest->{lxadmin_url} . "?rpw=$lxtest->{rpw}&nextsub=list_users&action=Weiter";
89 $lxtest->{lxadmin} = $lxtest->{lxadmin_url} . "?rpw=$lxtest->{rpw}&nextsub=list_users&action=Weiter";
94 eval { $sel = Test::WWW::Selenium->new(
95 host => $lxtest->{seleniumhost},
96 port => $lxtest->{seleniumport},
97 browser => $lxtest->{seleniumbrowser},
98 browser_url => $lxtest->{lxadmin},
103 diag("No Selenium Server running, or wrong preferences\n\n");
107 ok(defined $sel, 'Creating Selenium Object');
109 diag('Starting Selenium tests...');
111 foreach my $scriptdir (@_) {
112 opendir(SCRIPTS, 't/selenium/testscripts/' . $scriptdir);
113 foreach (sort readdir(SCRIPTS)) {
114 require_ok("t/selenium/testscripts/". $scriptdir . "/" . $_) if ( $_ =~ /^\w\d\d\d.*\.t$/);
119 @! = ("Test fehlgeschlagen!");