Weitere Selenium Testskripte folgen.
Bitte alle READMES lesen, und die Tests selbst testen.
Freue mich über Feedbacks.
--- /dev/null
+Lx-Office Testumgebung
+
+Mit der hier beschriebenen Testumgebung ist es möglich, Lx Office
+automatisiert zu testen. Automatische Tests haben den großen
+Vorteil, das verschiedene Standardtests nicht immer wieder von
+Hand durchgespielt werden müssen, sondern einmal in einem Skript
+verschriftet immer wieder verwendet werden können.
+Weitere Informationen können im Wiki nachgelesen und ergänzt werden:
+http://wiki.lx-system.de/index.php/Automatisiertes_Testen_von_Modulen
+
+
+
+Aufbau der Testumgebung
+Im Verzeichnis t/ finden sich alle testrelevanten Skripte.Der
+Aufruf der Tests folgt über
+#perl t/lx-office.t
+
+lx-office.t ruft alle Einzeltests der Reihe nach auf und fasst sie
+übersichtlich zusammen. Die Einzeltests befinden sich in einem
+Unterordner von t/. Jeder Unterorder enthält eine Datei AllTests.t,
+die wiederrum alle einzelnen Tests des Unterordners aufruft.
+
+
+
+t/lxtest.conf t/lxtest.conf.default
+Für die einzelnen Tests werden verschiedene Packetvariablen (globals)
+zur Verfügung gestellt, um die Testskripte einfach auf
+unterschiedliche Installationen anpassen zu können und um sich auf
+die selbe Test-Datenbank und denselben Test-Benutzer beziehen zu können.
+
+Die Datei t/lxtest.conf.default muss zunächst nach t/lxtest.conf
+kopiert werden. Dann ist die Datei t/lxtest.conf auf die lokalen
+Gegebenheiten anzupassen. Besnders die für Selenium nötigen
+Einstellungen bedürfen einer Überarbeitung.
+
+Definiert werden die Variablen in der Datei t/lxtest.conf.
+Aufgerufen werden die Variablen $lxtest->{VARIABLE}.
+Es ist ratsam, die vorhandenen Tests zu untersuchen, um sich ein Bild
+von den Möglichkeiten zu machen.
+
+
+
+Selenium
+Selenium ist eine Testsuite, mit der man Browserinteraktionen
+simulieren und die Ergebnisse auswerten kann. Der unschlagbare
+Vorteil von Selenium für das Testen von Lx ist es, dass es
+möglich wird, eine Test-Datenbank in einfachen Schritten
+erstellen zu können. Um Seleniumtests durchführen zu können,
+ist es nötig, das Packet Selenium Remote Control (Selenium RC)
+lokal zu installieren (Java Runtime ebenfalls erforderlich).
+Selenium RC gibt es unter:
+http://www.openqa.org/selenium-rc/
+
+Für den Betrieb von Selenium ist eine lokale Workstation mit
+Browserumgebung nötig.
+
+Der Aufruf von selenium erfolgt unter Windows bspw. so:
+C:\java -jar "C:\selenium-remote-control-0.9.0
+\server\selenium-server.jar"
+
+Unter Linux bspw. so:
+<FIXME>
+
+Die lokalen Einstellungen sind unbedingt in der
+t/lxtest.conf nachzutragen! Weitere Infos unter
+http://www.openqa.org/selenium-rc/
+
+Dann reicht ein Start von
+#perl t/lx-office.t
+um dem Testskript bei der Arbeit zuzuschauen.
+
+Leider ist es nötig, auf dem Seleniumserver nach jedem Aufruf
+des Testskripts das Sicherheitszertifikat von LINET Services zu
+akzeptieren, was etwas nervig ist.
+
+
+t/selenium/
+Der Ordner selenium beinhaltet alle einzelnen selenium Testskripte.
+Aufgerufen werden die Skripte über t/selenium/AllTests.t .
+Neue Tests müssen in dieser Datei angemeldet werden.
+Ziel ist es eine Demodatenbank von Lx mit Daten zu füllen und die
+Abhängigkeiten untereinander zu prüfen. Dazu sind die
+individuellen Testskripte nummeriert (001NAME.t bis 999NAME.t) um
+sie der Reihe nach abzuarbeiten.
+
+Die folgenden Skripte sind bereits installiert:
+
+001CreateTestDatabase.t Erzeugt eine neue Testdatenbank
+002CreateTestUser.t Erzeugt einen neuen Testbenutzer
+...
+...
+998DeleteTestUser.t Löscht den Testbenutzer
+999DeleteTestDatabase.t Löscht die Testdatenbank
+
+Dazwischen befinden sich die Skripte, um eine Demodatenbank
+aufzubauen und zu prüfen.
+
+
+
+t/backend/
+In diesem Ordner befinden sich Backend Testskripte.
+
+
+
+t/frontend/
+In diesem Ordner befinden sich Frontend Testskripte, die nicht
+unter selenium getestet werden.
+
+
+
+Was wenn ein Test fehlschlägt?
+Das Fehlschlagen von Tests kann verschiedene Gründe haben.
+1. Der Test selbst ist fehlerhaft.
+2. Es haben sich Lx Screens verändert, so das der Test von
+ falschen Voraussetzungen ausgeht
+3. Die zu testende Funktion ist fehlerhaft
+
+Nachdem 1. und 2. ausgeschlossen wurden, sollte zu 3. ein Bugreport
+angelegt werden.
+Bugreports unter https://lx-office.linet-services.de/bugzilla/
+anlegen.
+
+
+
+Eigene Tests
+Eigene testskripte können einfach in die Testumgebung eingebunden
+werden. Die vorhandenen Skripte können als Anleitung dienen.
+Bei Selenium Tests ist es am leichtesten, mit Firefox und der
+Selenium IDE Extension Testpfade einfach aufzuzeichnen.
+( http://www.openqa.org/selenium-ide/ )
+Dann werden die Selenium IDE Testaufzeichnungen in Perl
+umgewandelt und angepasst. Fertige Skripte werden mit einer
+laufenden Nummer versehen und in den Ordner t/selenium/ kopiert.
+Dann wird das Skript in der Datei t/selenium/AllTests.t eingefügt.
+Ein erster Probelauf mit
+#perl t/selenium/AllTests.t sollte den Test absolvieren.
+(Dabei kann es nötig sein, andere Tests auszukommentieren, weil
+selenium Tests mitunter lange Laufzeiten haben können, oder weil die Demodatenbank
+und der Benutzer am Ende zu Debugging Zwecken nicht gelöscht werden
+sollen.)
+
+
--- /dev/null
+This folder contais the backend testscrips for Lx.
+The Lx backend is the module libery under SL.
+Backend tests don't need selenium, and are only able
+to test local installations.
--- /dev/null
+This folder contais the frontend testscrips for Lx.
+The Lx frontend are all perl scripts under bin/* .
+The frontend tests don't need selenium! They should
+use the commandline API of Lx. Frontend tests in this
+directory are only for testing local Lx installations.
+
+If you like to test the HTML screens in different
+Browsers, it would be better to use the selenium
+environment under t/selenium.
+
--- /dev/null
+#=====================================================================
+# LX-Office ERP
+# Copyright (C) 2006
+# Web http://www.lx-office.org
+#
+#=====================================================================
+#
+# Author: Udo Spallek
+# Email: udono@gmx.net
+#
+# 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.
+#======================================================================
+#
+# Main Test Module:
+# For collecting all the tests in nice Test::Harness environment.
+# Study the README for Selenium Installation and testing process
+# and enjoy starting
+# #perl t/lx-office.t
+# against the unstable release
+#======================================================================
+
+ use strict;
+ use warnings FATAL => 'all';
+ use diagnostics;
+ use Carp;
+ use Test::Harness;
+
+
+## Backendtests:
+# &runtests(
+# );
+
+
+## Frontendtests:
+ &runtests(
+ 't/selenium/AllTests.t',
+ );
+
+exit 1;
\ No newline at end of file
--- /dev/null
+# This is the main configuration file for testing Lx-Office.
+# The file t/lxtest.conf.default contains the configuration for
+# testing the unstable trunk in the internet repository on
+# https://lx-office.linet-services.de/svn-installationen/unstable/
+# Simply copy the file
+# t/lxtest.conf.default to t/lxtest.conf
+# If you like to test the unstable trunk of the repository, start
+# perl t/lx-office.t .
+# If you like to test your own Lx installation, customize the file
+# t/lx-office.t for your own.
+# Btw. a running Selenium server is required for testing Lx!
+# See README for more informations.
+
+$lxtest = {
+
+ # Lx location and user configuration:
+ # Please edit the following lines
+ # for testing a local installation
+
+ lxbaseurl => 'https://lx-office.linet-services.de/svn-installationen/unstable/',
+ rpw => 'ro26F.eQBldoA', # root passwordhash! is only
+ # neccessary if you test a remote instalation
+ testlogin => 'seleniumtestuser',# will be extended with unix time
+
+
+ # Testdatabase configuration:
+ # Please edit the following lines
+ # for testing a local installation
+ # ATTENTION: Testdatabase will be deleted after testrun!
+ db => 'seleniumtestdatabase',
+ dbhost => 'localhost',
+ dbport => '5432',
+ dbuser => 'postgres',
+ dbpasswd => '',
+ dbdefault => 'template1',
+
+ # Selenium preferences:
+ # Edit the selenium preferences for your system.
+ # A running Selenium server is required for testing Lx!
+ # See README for more informations.
+ seleniumhost => '192.168.1.10', # edit host of running selenium server
+ seleniumbrowser => '*chrome C:\Programme\Mozilla Firefox\firefox.exe', # edit the path
+
+ seleniumport => '4444',
+ timeout => '30000', #timeout for waiting Page load in ms
+ timeoutlong => '60000', #timeout for waiting longer Page load in ms....
+
+
+ #Lx defaults (usualy no need for editing)
+ rootlogin => "root login",
+ memberfile => "users/members",
+ path => 'bin%2Fmozilla',
+
+ # Put your own setting for individual tests after here...
+
+};
\ No newline at end of file
--- /dev/null
+### Create Database
+
+diag("Create test database '$lxtest->{db}'");
+
+$sel->open_ok($lxtest->{lxadmin});
+$sel->title_is("Lx-Office ERP Administration -");
+
+$sel->open_ok($lxtest->{lxadmin});
+$sel->title_is("Lx-Office ERP Administration -");
+$sel->click_ok("//input[(\@name=\"action\") and (\@value=\"Datenbankadministration\")]");
+$sel->wait_for_page_to_load_ok($lxtest->{timeout});
+$sel->title_is("Lx-Office ERP / Datenbankadministration -");
+$sel->type_ok("dbuser", $lxtest->{dbuser});
+
+$sel->type_ok("dbpasswd", $lxtest->{dbpasswd});
+$sel->type_ok("dbuser", $lxtest->{dbuser});
+$sel->type_ok("dbhost", $lxtest->{dbhost});
+$sel->type_ok("dbport", $lxtest->{dbport});
+$sel->type_ok("dbdefault", $lxtest->{dbdefault});
+
+$sel->click_ok("//input[(\@name=\"action\") and (\@value=\"Datenbank anlegen\")]");
+$sel->wait_for_page_to_load_ok($lxtest->{timeout});
+$sel->title_is("Lx-Office ERP Datenbankadministration / Datenbank anlegen -");
+$sel->type_ok("db", $lxtest->{db});
+$sel->select_ok("encoding", "label=ISO 8859-1");
+$sel->click_ok("//input[(\@name=\"chart\") and (\@value=\"Germany-DATEV-SKR03EU\")]");
+$sel->click_ok("//input[(\@name=\"action\") and (\@value=\"Weiter\")]");
+$sel->wait_for_page_to_load_ok($lxtest->{timeoutlong});
+$sel->title_is("Lx-Office ERP Datenbankadministration / Datenbank anlegen -");
+$sel->click_ok("//input[(\@name=\"action\") and (\@value=\"Weiter\")]");
+$sel->wait_for_page_to_load_ok($lxtest->{timeout});
+$sel->title_is("Lx-Office ERP Administration -");
--- /dev/null
+
+### Create new user
+diag("Create test user '$lxtest->{testuserlogin}'");
+$sel->open_ok($lxtest->{lxadmin});
+$sel->title_is("Lx-Office ERP Administration -");
+$sel->click_ok("action");
+$sel->wait_for_page_to_load_ok($lxtest->{timeout});
+$sel->title_is("Lx-Office ERP Administration / Benutzer erfassen -");
+$sel->type_ok("login", $lxtest->{testuserlogin});
+$sel->type_ok("password", $lxtest->{testuserpasswd});
+$sel->type_ok("name", "Selenium");
+$sel->type_ok("email", "selenium\@lx-office.org");
+$sel->type_ok("signature", "Selenium Testuser");
+$sel->type_ok("tel", "0000");
+$sel->type_ok("fax", "1111");
+$sel->type_ok("company", "Sel-enium");
+$sel->type_ok("signature", "Selenium Testuser\nTestfirma");
+$sel->type_ok("address", "Testfirma");
+$sel->type_ok("steuernummer", "111-222-333-444");
+$sel->type_ok("co_ustid", "1234567");
+$sel->type_ok("duns", "0987654321");
+$sel->click_ok("dbdriver");
+$sel->type_ok("newtemplates", "seleniumtestuser");
+$sel->click_ok("menustyle");
+$sel->type_ok("Pg_dbhost", $lxtest->{dbhost});
+$sel->type_ok("Pg_dbname", $lxtest->{db});
+$sel->type_ok("Pg_dbport", $lxtest->{dbport});
+$sel->type_ok("Pg_dbuser", $lxtest->{dbuser});
+$sel->type_ok("Pg_dbpasswd", $lxtest->{dbpasswd});
+$sel->click_ok("action");
+$sel->wait_for_page_to_load_ok($lxtest->{timeout});
+$sel->title_is("Lx-Office ERP Administration -");
--- /dev/null
+### Delete user
+diag("Delete test user '$lxtest->{testuserlogin}'");
+$sel->open_ok($lxtest->{lxadmin});
+$sel->title_is("Lx-Office ERP Administration -");
+$sel->click_ok("link=$lxtest->{testuserlogin}");
+$sel->wait_for_page_to_load_ok($lxtest->{timeout});
+$sel->title_is("Lx-Office ERP Administration / Benutzerdaten bearbeiten -");
+$sel->click_ok("//input[(\@name=\"action\") and (\@value=\"Löschen\")]");
+$sel->wait_for_page_to_load_ok($lxtest->{timeout});
--- /dev/null
+#### Delete database
+diag("Delete test database '$lxtest->{db}'");
+
+$sel->open_ok($lxtest->{lxadmin});
+$sel->title_is("Lx-Office ERP Administration -");
+$sel->click_ok("//input[(\@name=\"action\") and (\@value=\"Datenbankadministration\")]");
+$sel->wait_for_page_to_load_ok($lxtest->{timeout});
+$sel->title_is("Lx-Office ERP / Datenbankadministration -");
+
+$sel->type_ok("dbhost", $lxtest->{dbhost});
+$sel->type_ok("dbport", $lxtest->{dbport});
+$sel->type_ok("dbuser", $lxtest->{dbuser});
+$sel->type_ok("dbpasswd", $lxtest->{dbpasswd});
+
+$sel->click_ok("//input[(\@name=\"action\") and (\@value=\"Datenbank löschen\")]");
+$sel->wait_for_page_to_load_ok($lxtest->{timeoutlong});
+$sel->title_is("Lx-Office ERP Datenbankadministration / Datenbank löschen -");
+$sel->click_ok("//input[\@value=\"$lxtest->{db}\"]");
+$sel->click_ok("//input[(\@name=\"action\") and (\@value=\"Weiter\")]");
+$sel->wait_for_page_to_load_ok($lxtest->{timeout});
+$sel->body_text_is("Lx-Office ERP Datenbankadministration / Datenbank löschen $lxtest->{db} wurde erfolgreich gelöscht");
+$sel->click_ok("//input[(\@name=\"action\") and (\@value=\"Weiter\")]");
+$sel->wait_for_page_to_load_ok($lxtest->{timeout});
+$sel->title_is("Lx-Office ERP Administration -");
--- /dev/null
+#=====================================================================
+# LX-Office ERP
+# Copyright (C) 2006
+# Web http://www.lx-office.org
+#
+#=====================================================================
+#
+# Author: Udo Spallek
+# Email: udono@gmx.net
+#
+# 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, ['/tselenium'];
+ 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');
+
+ 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");
+
+ 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} = $lxtest->{lxbaseurl} . "admin.pl?path=$lxtest->{path}&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});
+ };
+ if ($@) {
+ diag("No Selenium Server running, or wrong preferences\n\n");
+ exit 0;
+ }
+
+ ok(defined $sel, 'Creating Selenium Object');
+
+ diag('Starting Selenium tests...');
+
+ 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;
+
--- /dev/null
+This directory contains all selenium testscripts for lx-office.
+Selenium testscrips are the prefered way to test the higher lx
+functionalities. For the selenium tests you need to install and
+run a local selenium server on a machine whitch is able to start
+a browser session. See README for more informations.
+
+