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.xml
Stellen 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):
stages:
- test
- upload
Beispiel für die Testphase:
execute_tests:
stage: test
image: node:20
script:
- npm ci
- npx playwright install --with-deps
- npm run test
artifacts:
when: always
expire_in: 1 week
paths:
- output/
reports:
junit: output/result.xml
Hochladen/Importieren: Beispielstufe
upload_to_aqua:
stage: upload
image: mcr.microsoft.com/powershell
dependencies: [execute_tests]
script:
- pwsh ./upload.ps1
(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 (inclassname
oder Parent-Suite-Namen suchen). b. Case-ID extrahieren (inname
suchen). 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
<testsuite name="CodeceptJS" tests="2" failures="0">
<testcase classname="TS1132748 - GitHub" name="TC1132533 - Load the GitHub homepage" time="2.131" />
<testcase classname="TS1132748 - GitHub" name="TC1132534 - Load the Google homepage" time="1.842" />
</testsuite>
Troubleshooting
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?