#=====================================================================
# LX-Office ERP
-# Copyright (C) 2006
+# Copyright (C) 2006/2007
# Web http://www.lx-office.org
#
#=====================================================================
#
-# Author: Udo Spallek
-# Email: udono@gmx.net
+# Author: Udo Spallek, Thomas Kasulke
+# Email: udono@gmx.net, tkasulke@linet-services.de
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
#
#######################################################################
no strict;
- push @INC, ['/tselenium'];
+ push @INC, ['/t/selenium', \&init_server];
use vars qw( $lxdebug $lxtest $sel );
use strict;
-
- use Test::WWW::Selenium;
use Carp;
- use Test::More tests => 86; # Need to be cutomized
- diag('Pretests and initialisation');
+ use Test::WWW::Selenium;
+ use Test::More qw(no_plan);
+ use IO::Socket;
+ if(-f "/tmp/lxtest-temp.conf") {
+ eval { require('/tmp/lxtest-temp.conf'); };
+ }
+ else {
eval { require('t/lxtest.conf'); };
+ }
if ($@) {
diag("No test configuration found in t/lxtest.conf.\n
Maybe you forget to copy t/lxtest.conf.default to t/lxtest.conf. Exit test...\n");
exit 0;
- };
-
- $lxtest->{test_id} = time; # create individual ids by unixtime
- $lxtest->{testuserlogin} = $lxtest->{testlogin} . $lxtest->{test_id};
- $lxtest->{testuserpasswd} = $lxtest->{test_id};
- $lxtest->{db} = $lxtest->{db} . $lxtest->{test_id};
+ }
- ok(defined $lxtest->{rpw}, "Get root password");
+ sub server_is_running {
+ return IO::Socket::INET->new(PeerAddr => $ENV{SRC_HOST} || $lxtest->{seleniumhost},
+ PeerPort => $ENV{SRC_PORT} || $lxtest->{seleniumport},
+ );
+ }
- ok(defined $lxtest->{dbhost}, "found dbhost in config");
- ok(defined $lxtest->{dbport}, "found dbport in config");
- ok(defined $lxtest->{dbuser}, "found dbuser in config");
- ok(defined $lxtest->{dbpasswd}, "found dbpasswd in config");
+# if (server_is_running) {
+# plan tests => 200; # Need to be cutomized
+# }
+ sub init_server {
+ my $singlefileonly = 0;
+ if ($_[0] eq "singlefileonly") {
+ $singlefileonly = 1;
+ shift;
+ }
+ if(!server_is_running) {
+ print "No selenium server found! "
+ ."Maybe you forgot to start it or "
+ ."the preferences in t/lxtest.conf doesen't fit to your system";
+ exit 0;
+ }
- $lxtest->{lxadmin} = $lxtest->{lxbaseurl} . "admin.pl?path=$lxtest->{path}&rpw=$lxtest->{rpw}&nextsub=list_users&action=Weiter";
+ diag('Pretests and initialisation');
- eval { $sel = Test::WWW::Selenium->new(
- host => $lxtest->{seleniumhost},
- port => $lxtest->{seleniumport},
- browser => $lxtest->{seleniumbrowser},
- browser_url => $lxtest->{lxadmin});
- };
- if ($@) {
- diag("No Selenium Server running, or wrong preferences\n\n");
- exit 0;
- }
- ok(defined $sel, 'Creating Selenium Object');
+ $lxtest->{test_id} = time; # create individual ids by unixtime
+ $lxtest->{testuserlogin} = $lxtest->{testlogin} . $lxtest->{test_id} if(!$lxtest->{testuserlogin});
+ $lxtest->{testuserpasswd} = $lxtest->{test_id} if(!$lxtest->{testuserpasswd});
+ $lxtest->{db} = $lxtest->{db} . $lxtest->{test_id} if(!($lxtest->{db} =~ /^seleniumtestdatabase[0-9]{10}$/));
+
+ ok(defined $lxtest->{rpw}, "Get root password");
+
+ ok(defined $lxtest->{dbhost}, "found dbhost in config");
+ ok(defined $lxtest->{dbport}, "found dbport in config");
+ ok(defined $lxtest->{dbuser}, "found dbuser in config");
+ ok(defined $lxtest->{dbpasswd}, "found dbpasswd in config");
- diag('Starting Selenium tests...');
+ $lxtest->{lxadmin_url} = $lxtest->{lxbaseurl} . "admin.pl";
+ $lxtest->{lxadmin_with_get} = $lxtest->{lxadmin_url} . "?rpw=$lxtest->{rpw}&nextsub=list_users&action=Weiter";
+ $lxtest->{lxadmin} = $lxtest->{lxadmin_url} . "?rpw=$lxtest->{rpw}&nextsub=list_users&action=Weiter";
- require('t/selenium/001CreateTestDatabase.t');
- require('t/selenium/002CreateTestUser.t');
- require('t/selenium/998DeleteTestUser.t');
- require('t/selenium/999DeleteTestDatabase.t');
- $sel=''; # Destroy selenium object
- exit 1;
+ eval { $sel = Test::WWW::Selenium->new(
+ host => $lxtest->{seleniumhost},
+ port => $lxtest->{seleniumport},
+ browser => $lxtest->{seleniumbrowser},
+ browser_url => $lxtest->{lxadmin},
+ auto_stop => '0',
+ );
+ };
+ if ($@) {
+ diag("No Selenium Server running, or wrong preferences\n\n");
+ exit 0;
+ }
+
+ ok(defined $sel, 'Creating Selenium Object');
+ diag('Starting Selenium tests...');
+
+ if(!$singlefileonly) {
+ foreach my $scriptdir (@_) {
+ opendir(SCRIPTS, 't/selenium/testscripts/' . $scriptdir) or die "Can't open directory!" . $!;
+ foreach (sort readdir(SCRIPTS)) {
+ if ( $_ =~ /^\w\d\d\d.*\.t$|^\d\d\d.*\.t$/ && !$sel->{ran_tests}{"t/selenium/testscripts/". $scriptdir . "/" . $_}) {
+ require_ok("t/selenium/testscripts/". $scriptdir . "/" . $_);
+ $sel->{ran_tests}{"t/selenium/testscripts/". $scriptdir . "/" . $_} = 1;
+ }
+ }
+ closedir(SCRIPTS);
+ }
+ }
+ else {
+ foreach (@_) {
+ if ( $_ =~ /^.*\/\w\d\d\d.*\.t$|^.*\/\d\d\d.*\.t$/ && !$sel->{ran_tests}{$_}) {
+ require_ok($_);
+ $sel->{ran_tests}{$_} = 1;
+ }
+ }
+ }
+ if($!) {
+ @! = ("Test fehlgeschlagen!");
+ }
+ $sel->stop();
+ }
+
+ sub start_login() {
+ require "t/selenium/testscripts/base/000Login.t" if(!$sel->{_page_opened});
+ skip("Failed page to load pages!",) if(!$sel->{_page_opened});
+
+ if($sel->get_title() ne "Lx-Office Version 2.4.3 - Selenium - " . $lxtest->{db}){
+ require "t/selenium/testscripts/base/000Login.t";
+ }
+
+ $sel->select_frame_ok("relative=up");
+ }
+
+1;