zmsautomation-Dokumentation
ZMS Automation – ATAF-Integration
Dieses Modul enthält API- und UI-Tests für ZMS auf Basis von ATAF (Test Automation Framework) und Cucumber. zmsautomation baut auf it-at-m/agile-test-automation-framework auf.
Voraussetzungen
- Java 21
- Maven 3.9+
- MySQL-/MariaDB-Datenbank (für lokale Tests)
- Zugriff auf Maven Central (ATAF-Artefakte werden unter
de.muenchen.ataf:core|rest|webveröffentlicht)
Projektstruktur
src/test/java/zms/api/– ursprüngliche REST-assured + JUnit-Tests (Standalone-Profil)src/test/java/zms/ataf/zms/ataf/rest/steps/– REST-Step-Definitionen (REST Assured)zms/ataf/ui/steps/– UI-Step-Definitionen (Selenium/ATAF web)zms/ataf/ui/pages/**– Page-Objects für Admin, Statistik, Buergeransicht, Mailinator
src/test/resources/features/– Cucumber-Feature-Dateienrest/zmsapi/– Features der ZMS-REST-APIrest/zmscitizenapi/– Features der Citizen-REST-APIui/zmsadmin/– Admin-UI-Featuresui/buergeransicht/– veraltete Buergeransicht-UI-Features ausit-at-m/eappointment-buergeransicht(nicht fürzmscitizenviewverwendet)ui/zmsstatistic/– Statistik-UI-Featuresui/zmscitizenview/– CitizenView-UI (Service Finder + vollständige Buchung E2E)
src/main/resources/db/migration/– Flyway-Datenbankmigrationen
Tests ausführen
Mit dem Test-Skript (empfohlen)
Das Skript zmsautomation-test kümmert sich um Datenbank-Setup, Migrationen und Testausführung.
# alle ATAF-Tests ausführen (API + UI)
./zmsautomation/zmsautomation-test -Pataf-api -Pataf-ui
# Tests mit bestimmten Tags ausführen (mit @ignore markierte Szenarien sind ausgeschlossen, sofern @ignore nicht im Ausdruck enthalten ist)
./zmsautomation/zmsautomation-test -Dcucumber.filter.tags="@smoke"
# inklusive ignorierter Szenarien, z. B.:
# ./zmsautomation/zmsautomation-test -Dcucumber.filter.tags="@ignore and @web"
# spezifisches API-Feature ausführen (Pfad relativ zum zmsautomation-Modul)
./zmsautomation/zmsautomation-test -Pataf-api -Dcucumber.features="src/test/resources/features/rest/zmsapi/status.feature"
# nur API-Tests (kein Selenium)
./zmsautomation/zmsautomation-test -Pataf-api
# nur UI-Tests (Selenium/ATAF web)
./zmsautomation/zmsautomation-test -Pataf-uiDas Skript:
- Sichert die Datenbank
- Leert Caches
- Setzt die Datenbank zurück (Tabellen verwerfen)
- Importiert die Basis-Datenbank (
.resources/zms.sql) - Führt Flyway-Migrationen aus (Maven-Plugin)
- Führt PHP-Migrationen aus (
zmsapimigrate) - Führt den Stunden-Cron aus (mit Wiederholungen)
- Führt den Minuten-Cron und die Slot-Berechnung aus (
calculateSlots) - Führt HTTP-Health-Checks aus (zmsapi, Citizen-API, CitizenView, optionales refarch-gateway)
- Richtet Display-/Browser-Tooling ein (Xvfb, Treiberprüfungen)
- Führt
mvn testmit deinen Argumenten aus (Standard-Tag-Filter ergänztnot @ignore, sofern du@ignorenicht selbst einbeziehst) - Druckt Test-Reports
- Leert Caches erneut
- Stellt Datenbank- und Keycloak-JSON-Backups wieder her (sofern nicht
SKIP_DB_RESTORE=1) - Bereinigt abschließend (Datenverzeichnis, Flyway-Test-Zeilen usw.; auch auf
EXITregistriert)
Standalone-Profil (klassische REST-assured-Tests)
Führt die ursprünglichen JUnit-basierten REST-assured-Tests aus:
cd zmsautomation
mvn test -PstandaloneATAF als Standard
Das Maven-Profil ataf ist in diesem Modul standardmäßig aktiv, daher binden mvn test und mvn test-compile bereits die ATAF-/Cucumber-/TestNG-/Selenium-Abhängigkeiten ein.
ATAF-Profile (lokale Entwicklung)
- Alle ATAF-Tests ausführen (API + UI):
cd zmsautomation
mvn test- Nur API-Tests (REST Assured, kein Selenium):
mvn test -Pataf-api
# optionaler Filter:
# mvn test -Pataf-api -Dcucumber.filter.tags="@rest"
# mvn test -Pataf-api -Dcucumber.filter.tags="@zmsapi"
# mvn test -Pataf-api -Dcucumber.filter.tags="@zmscitizenapi"- Nur UI-Tests (Selenium/ATAF web, kein REST Assured):
mvn test -Pataf-ui
# optionaler Filter:
# mvn test -Pataf-ui -Dcucumber.filter.tags="@web"
# mvn test -Pataf-ui -Dcucumber.filter.tags="@zmsadmin"
# mvn test -Pataf-ui -Dcucumber.filter.tags="@buergeransicht"
# mvn test -Pataf-ui -Dcucumber.filter.tags="@zmsstatistic"
# mvn test -Pataf-ui -Dcucumber.filter.tags="@zmscitizenview"macOS-Host (CLI)
Vom Repo-Root:
./cli tests install-mac-depsFür Safari zusätzlich aktivieren: Safari → Entwickeln → Automatisierung erlauben.
./cli tests run-mac-local --db-full-setup
./cli tests run-mac-local
./cli tests trust-local-gatewayVerwende --browser safari (oder chrome, firefox, edge, safari) nach Bedarf.
Umgebungsvariablen
API-Endpunkte
BASE_URI– Basis der ZMS-APICITIZEN_API_BASE_URI– Basis der Citizen-API (REST-Steps rufen zms-web direkt auf)ADMIN_BASE_URI/STATISTIC_BASE_URI– Basen von Admin/StatistikCITIZEN_VIEW_BASE_URI/CITIZENVIEW_PORT– CitizenView/Vite-Server (Standard8082)REFARCH_GATEWAY_OFFICES_URL– optionale URL für den Gateway-Health-PingSKIP_REFARCH_GATEWAY_HEALTH=1– Gateway-Ping überspringen
Datenbankkonfiguration
MYSQL_HOST(Standarddb)MYSQL_PORT(Standardtcp://db:3306)MYSQL_DATABASE(Standarddb)MYSQL_USER(Standarddb)MYSQL_PASSWORD(Standarddb)MYSQL_ROOT_PASSWORD(Standardroot)
UI-Tests (SSO)
Für lokale UI-Tests (Statistik, Admin) ist der Standard-SSO-Benutzer der Keycloak-Account ataf (Passwort vorschau) aus den Keycloak-Migrationsdaten.
Beispiel
export BASE_URI="http://web/terminvereinbarung/api/2"
export CITIZEN_API_BASE_URI="http://web/terminvereinbarung/api/citizen"
export MYSQL_HOST="db"
export MYSQL_PORT="tcp://db:3306"
export MYSQL_DATABASE="db"
export MYSQL_USER="db"
export MYSQL_PASSWORD="db"
cd zmsautomation && mvn testDatenbankeinrichtung
ATAF-Tests führen vor der Testausführung automatisch Flyway-Migrationen aus. Die Migrationen liegen unter src/main/resources/db/migration/.
Beispiele für Test-Tags
- API-Tags:
@rest@zmsapi@zmscitizenapi
- UI-Tags:
@web@zmsadmin@buergeransicht(veraltet; nicht fürzmscitizenviewverwendet)@zmsstatistic@zmscitizenview@jumpin@ruppertstrasse@passkalender@hauptkalender@abholung@executeLocally@allowDisabledServicesMix
- Sonstige:
@smoke
@executeLocally ist ein reiner UI-Tag (@web-Szenarien), nicht für reine REST-Szenarien.
Feature-Dateien
API-Features (src/test/resources/features/rest/)
rest/zmsapi/status.feature– Tests des Status-Endpointsrest/zmscitizenapi/zmskvr-1124_booking_ruppertstrasse_pass_calendar_jumpin_links_citizenapi.feature– Buchungs-Flow der Citizen-API
UI-Features (src/test/resources/features/ui/)
ui/zmsadmin/– Admin-UI-Featuresui/buergeransicht/– veraltete Buergeransicht-Features ausit-at-m/eappointment-buergeransicht(nicht fürzmscitizenviewverwendet)ui/zmscitizenview/– Buchungs-UI-Features von CitizenViewui/zmsstatistic/– Statistik-UI-Features
zmsautomation in GitHub-Workflows
GitHub-Actions-Workflow: .github/workflows/zmsautomation-workflow.yaml.
Dokumentation folgt.
zmsautomation in Safari unter macOS außerhalb des Containers
Safari-basierte Automatisierung kann unter macOS bereits außerhalb des Containers ausgeführt werden. Aktuell ist das für Safari erforderlich, da es keinen Safari-WebDriver-Runtime für Linux-ARM/-AMD-Container gibt.
In cli_test.py steht ein CLI-Setup-/-Run-Flow zur Verfügung:
# lokale macOS-Testabhängigkeiten installieren (inkl.: sudo safaridriver --enable)
./cli tests install-mac-deps
# lokale Tests auf macOS mit Safari ausführen
./cli tests run-mac-local --browser safariIn Safari musst du außerdem aktivieren:
Safari → Entwickeln → Automatisierung erlauben
Migrationshinweise
zmsautomationnutzt ATAF + Cucumber; CI-/Workflow-Umgebungen können separat festgepinnt werden.