Diese Anleitung zeigt, wie automatisiertes Testen in Ihre GitLab-CI/CD-Pipeline integriert wird, speziell unter Verwendung von Maven-Projekten mit JAVA/Playwright. Die Schritte können jedoch so angepasst werden, dass sie sich für jedes Testautomatisierungswerkzeug oder -framework eignen, um Ergebnisse an aqua zu übermitteln.
Voraussetzungen
Ein GitLab-Projekt mit aktiviertem CI/CD
ein aqua-Konto zum Einreichen von Testergebnissen
Eine Anwendung oder ein Projekt, das mit einem Maven-Projekt konfiguriert ist (z. B. unter Verwendung von Visual Studio Code).
Erstellen Sie zunächst ein sauberes Maven-Projekt oder verwenden Sie ein bestehendes.
Stellen Sie sicher, dass die folgenden Abhängigkeiten zur pom.xml Datei hinzugefügt werden. Wir benötigen die Playwright, JUnit und JSON-Bibliotheken.
Erstellen Sie eine TestBase-Klasse, um alle allgemeinen Methoden und Implementierungen der gemeinsamen Logik und Hooks zu speichern: _BeforeAll, BeforeEach, AfterAll, AfterEach, etc
Erstelle eine TestCase-Klasse, die die TestBase-Klasse erweitert und die tatsächliche Logik eines bestimmten Tests implementiert. Wir nehmen an, dass diese Klasse eine Aqua-Testfallinstanz hat, sodass wir ihre Ausführungsinformationen in der aqua-Webanwendung aktualisieren werden. Der TestCase hat einen Schritt (Schritt 1) in aqua.
Die TestFall-Klasse implementiert einfache Aktionen: öffnen www.wikipedia.org mit Playwright-Aktionen, klicken Sie dort ein paar Mal und überprüfen Sie die aktuelle Web-URL
Verwenden Sie den Hook @AfterEach in der TestBase-Klasse, um eine Verbindung zu Aqua herzustellen und ein Bearer-Token von einer REST-GET-Anfrage abzurufen, die von Playwright gesendet wird.
Der oben genannte Token wird für eine POST-Anfrage benötigt, um eine aqua-Testfalldurchführung zu erstellen. Wir verwenden den folgenden Endpunkt und das JSON.
Die Beispielimplementierung in der TestBase-Klasse für die obige Anforderung sieht wie folgt aus:
Im obigen Antrag übergeben wir die Variable „logResult“. Sie stellt das tatsächliche JUnit-Testergebnis dar („Pass“, „Failed“, „NotRun“ usw.). Um diesen Status aus dem JUnit-Lauf zu erhalten, implementieren wir das Test Watcher Interface in der TestBase.
In dieser Klasse sollten wir Schnittstellenmethoden wie folgt implementieren:
Wir gehen davon aus, dass der Name der Testklasse auf der tatsächlichen aqua-Testfall-ID basiert: z. B. im obigen Fall haben wir den aqua-Testfall mit der Id=270 aktualisiert.
Nach erfolgreicher JUnit-Testausführung sollten wir die entsprechende einzelne Testfallausführung in aqua sehen. Diese ID-Variable kann aus der Testklasse über TestInfo von org.junit.jupiter.api.TestInfo übergeben werden.
Um das oben genannte Maven-Projekt mit GitLab CI/CD ausführen zu können, müssen wir die entsprechende Workflow-Datei .gitlab-ci.yml erstellen. Ein einfaches Beispiel für ein .gitlab-ci.yml-Skript ist unten gezeigt:
image: maven:latest
stages:
- test
maven-build-job:
stage: test
script:
- pwd
- sleep 10
- cd aqua-demo/
- mvn compile
- mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install --with-deps"
- mvn clean test
Sobald ein GitLab-Test-Runner konfiguriert und mit Ihren GitLab-Projekten verbunden ist, können wir die GitLab-Pipeline mit dem obigen Workflow ausführen: