]> wagnertech.de Git - kivitendo-erp.git/blobdiff - t/old/selenium/AllTests.t
Automatisierte Syntaxtests, Framework für spätere Modultests.
[kivitendo-erp.git] / t / old / selenium / AllTests.t
diff --git a/t/old/selenium/AllTests.t b/t/old/selenium/AllTests.t
new file mode 100644 (file)
index 0000000..c5ebf1d
--- /dev/null
@@ -0,0 +1,153 @@
+#=====================================================================
+# LX-Office ERP
+# Copyright (C) 2006/2007
+# Web http://www.lx-office.org
+#
+#=====================================================================
+#
+#  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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#======================================================================
+# 
+# Selenium Main Caller
+# Call all Selenium scripts from here. To use Selenium tests in 
+# Lx-Office you need to Install Selenium Remote Control. Take a look at 
+# the README Document for further informatinons on installing Selenium 
+# and testing Lx-Office and of course writing your own testcases.
+#
+#######################################################################
+  no strict;
+  push @INC, ['/t/selenium', \&init_server];
+  use vars qw( $lxdebug $lxtest $sel );
+  use strict;
+  use Carp;
+
+  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;
+  }
+
+  sub server_is_running {
+    return IO::Socket::INET->new(PeerAddr => $ENV{SRC_HOST} || $lxtest->{seleniumhost},
+                                 PeerPort => $ENV{SRC_PORT} || $lxtest->{seleniumport},
+                                );
+  }
+  
+#   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;
+    }
+
+    diag('Pretests and initialisation');
+
+
+
+    $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");
+
+    $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";
+
+
+
+
+    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;