JUnit-XML-Integration in aqua
Automatisieren Sie das Ausführen lokaler/Unit-Tests über die Erstellung von JUnit-XML-Dateien bis hin zur Integration in aqua als gruppierte Testausführungen (Testszenario) mit erfolgreich/fehlgeschlagenen Ergebnissen, um eine CI/CD-Sichtbarkeit zu ermöglichen.
High-Level Flow
Veröffentlichung/Import
Die Veröffentlichung führt einen Importer aus, der Folgendes tut:
Authentifizierung bei aqua (AQUA_URL, AQUA_USER, AQUA_PASSWORD)
Parsen der JUnit XML
Extrahieren der aqua Test-Szenario-IDs (TS…) und Testfall-IDs (TC…)
Gruppieren der Testfälle nach Szenario-IDs
Durchführung eines REST API-Aufrufs pro Szenario zur Erstellung von Ausführungen und Ergebnissen
Beendet mit dem entsprechenden Statuscode, damit die Pipeline als bestanden oder fehlgeschlagen markiert werden kann
Konventionen
Verwenden Sie IDs innerhalb der Testsuite/Testnamen, damit sie analysiert werden können:
Szenario (Suite/Klassenname/Titel) Präfix:
TS<Ziffern>(z.B.TS1132748 - GitHub)Testfall (einzelner Test) Präfix:
TC(z.B.TC1132533 - Lade die GitHub-Startseite)
Regex-Muster:
Szenario-ID:
/(TS\d+)/Fall-ID:
/(TC\d+)/
Wenn eine ID fehlt, behandeln Sie diesen Test als ungültig (Richtlinie: Importfehler oder Überspringen—konfigurierbar).
Generieren von JUnit XML (CodeceptJS + mocha-junitreporter)
Typisches Skript (bereits konfiguriert):
npm ci
npx playwright install --with-deps
npm run test # Produces output/result.xmlStellen Sie sicher, dass codecept.conf.ts eine Mocha-Reporter-Konfiguration enthält, die auf output/result.xml verweist (z. B. über mocha-junit-reporter).
Struktur der GitLab CI/CD-Pipeline (.gitlab-ci.yml)
Stufen (empfohlen):
Beispiel für die Testphase:
Hochladen/Importieren: Beispielstufe
(Alternativ verwenden Sie ein .NET-Bild / eine benutzerdefinierte Importer-Binärdatei, falls erforderlich.)
Umgebungsvariablen (CI/CD)
Einstellungen in GitLab → Einstellungen → CI/CD → Variablen (maskiert & geschützt nach Bedarf):
AQUA_URL (z. B.
https://workshop.aqua-cloud.io/aquaWebNG)AQUA_USER
AQUA_PASSWORD
Optional
REPORT_FILE(Standard./output/result.xml)
Importpflichten (Detailliert)
Für jeden Durchlauf:
JUnit XML lesen
(REPORT_FILE).Authentifizieren: POST Token-Endpoint → Bearer-Token erhalten.
<testsuite> / <testcase>-Knoten parsen.Für jedes
<testcase>: a. Szenario-ID extrahieren (inclassnameoder Parent-Suite-Namen suchen). b. Case-ID extrahieren (innamesuchen). c. Status bestimmen: i. Bestanden: Fehlen von<failure>und<error>. ii. Fehlgeschlagen: Vorhandensein von<failure>oder<error>(Nachricht + Stack erfassen, falls vorhanden).Testfälle per Szenario-ID gruppieren (alle mit gleichem TS... zusammen).
Pro Szenario JSON-Payload bauen, die alle enthaltenen Ausführungen enthält.
POST an aqua Project / Execution-Endpoint (je ein Aufruf pro Szenario).
Fehlgeschlagene POSTs verfolgen.
Mit entsprechendem Code beenden (siehe unten).
Beenden-Codes (vorgeschlagene Zuordnung)
Code — Bedeutung
0 —Erfolg (alle Szenarien gepostet)
2 — Authentifizierungsfehler
3 — Netzwerk / Endpunkt nicht erreichbar
4 — Teilweiser Ausfall (einige Szenarien sind fehlgeschlagen)
5 — Ungültiges oder unlesbares XML
6 — Eingabefehler: Fehlende erforderliche IDs / Validierungsfehler
7 —Unerwartete interne Ausnahme
CI schlägt fehl, wenn der Exit-Code != 0 ist (Standardverhalten in GitLab), was möglicherweise die Pipeline zum Fehlschlagen bringt.
JUnit XML Beispiel
Troubleshooting
Leer result.xml
Symptom: Leere result.xml
Wahrscheinliche Ursache: Tests wurden nicht ausgeführt oder Reporter falsch konfiguriert
Aktion: Erneut mit --verbose ausführen, Reporter-Konfiguration überprüfen
401 Unauthorized
Symptom: 401 Unauthorized Wahrscheinliche Ursache: Ungültige Anmeldedaten oder URL Aktion: Überprüfen Sie Umgebungsvariablen und Token-Endpunktpfad
Missing IDs error
Symptom: Fehlende IDs Fehler Wahrscheinliche Ursache: Testnamen folgen nicht der Konvention Aktion: Tests umbenennen, um TS / TC-Präfixe einzuschließen
Partial posting
Symptom: Teilweises Posten Wahrscheinliche Ursache: Netzwerk/API intermittierend Aktion: Wiederholungslogik oder Exit-Code 4 markieren
Pipeline green but no data in Aqua
Symptom: Pipeline grün, aber keine Daten in Aqua
Wahrscheinliche Ursache: Importphase übersprungen
Aktion: Sicherstellen, dass Phase nicht when: manual ist und Abhängigkeiten korrekt sind
Zusammenfassung
Diese Konfiguration gewährleistet die Nachverfolgbarkeit zwischen automatisierten Testausführung und in aqua verwalteten Testszenarien/-fällen, indem IDs in Testnamen eingebettet werden. Sie erzeugt standardmäßige JUnit-XML und wandelt diese in strukturierte aqua-Ausführungen innerhalb der CI/CD-Pipeline um, mit robusten Exit-Codes, die den Pipeline-Ausgang steuern.
Last updated
Was this helpful?