Documentation - aqua cloud
🇩🇪 Deutsch
🇩🇪 Deutsch
  • 💻WEB-CLIENT
    • Erste Schritte
    • Allgemein
      • Startseite
      • App-Sprache
      • Benutzerkonto
      • Passwort ändern
      • Tastenkombinationen & Barrierefreiheit
    • Kontakt zu unserem Support
  • 🧑‍🔧Verwaltung
  • Benutzerverwaltung
    • Hinzufügen und Verwalten von Benutzern
    • Rollen und Berechtigungen
    • Zuweisung von Lizenzen, Projekten und Rollen
    • Vergleich der Lizenzen
    • Lizenzstatistik
    • Statistiken
  • Projektkonfiguration
    • Konfiguration der Projektvorlage (Felder)
    • Feldregeln
    • Geteilte Wertesätze
    • Erstellen von Feldgruppen
    • Workflow-Konfiguration
    • Weitere Projekteinstellungen
    • Projektintegrationen
    • System-Log
    • E-Mail-Benachrichtigungen
      • Projekt-Standardbenachrichtigungen
      • Meine Benachrichtigungen
      • Konfiguration der Projektbenachrichtigungsvorlagen
      • Troubleshooting
  • Projekte und Ordner
    • Projekt erstellen
    • Projekte
      • Projekt exportieren
      • Projekt importieren
        • Migration von Testrail
      • Projekt archivieren
    • Ordner
      • Projektordner exportieren
      • Projektordner importieren
  • 🧩Module
  • Navigation
    • Projektbaum
    • Elementbrowser (Grid)
    • Filter und Gruppierung
    • Ansichten
    • Suche
    • Vorschau der Elementdetails
  • Elemente
    • Anforderungsmanagement
      • Anforderungen
      • Unteranforderungen
      • Anforderungsabdeckung
    • Testfallmanagement
      • Testfälle
      • Eingebettete Testfälle
      • Manuelles Testen
      • Testdaten oder Variablen-Manager
      • Verfolgung der Testumgebung mit Labels (Tags)
      • Ergebnisse der Testausführung
      • Capture: Testrekorder/ Fehlerreporter
      • Jetzt Testen: einfacher Start einer Testausführung
      • Schnelle Ausführung: Testlauf von mehreren Testfällen auf einmal
    • Management von Testszenarien
      • Testszenarien
      • Hinzufügen von Testfällen zu einem Testszenario
      • Ausführen von Testszenarios
    • Fehlermanagement
      • Fehler
      • Fehler aus einer Testausführung erstellen
      • Reviewen von gefundenen oder mit der Testdurchführung verknüpften Fehlern
      • Erstellen eines Fehler mit Capture
    • Allgemeine Funktionen in den Elementen
      • Erstellen und Bearbeiten von Elementen
      • Element in ein Zielprojekt kopieren oder innerhalb eines Projekts duplizieren
      • Übernahme von Feldwerten zwischen Elementen
      • Elementvorlage (Standardwerte)
      • Abhängigkeiten
      • Links zu einer Beschreibung hinzufügen
      • Bildschirmfotos erstellen
      • Element beobachten und andere Benutzer benachrichtigen
      • Anhänge (Dateien)
      • Verlauf der Änderungen
      • Diskussionen (Kommentare)
      • Elementdaten drucken
  • Berichte
    • Erstellen einer neuen Berichtsvorlage
    • Grundelemente des Berichts
    • Baumstruktur der Elemente
    • Eigenschaften der Elemente
    • Diagramme
    • Pivot-Tabelle
    • Funktion 'Sum'
    • Erstellen eines benutzerdefinierten Berichtsskripts
    • Parametrisierung von Berichten
    • Leere Elemente aus einem Bericht ausschließen
    • Hinzufügen eines Inhaltsverzeichnisses zu einem Bericht
  • Dashboards
    • Erstellen eines Dashbords
    • Dashboards veröffentlichen/teilen
    • Erstellen eines Diagramms
    • KPI-Warnungen
    • Drilldown zu Details aus einem Diagramm
    • Vorlage für Burndown-Chart
  • Agile
    • Backlog
    • Sprint-Board
    • Vorschau
  • 🖥️Desktop-Client
  • Wichtiger Hinweis: Abschaffung des Desktop-Clients bis April 2025
  • FAQ: Umstellung vom Desktop-Client auf den Web-Client
  • Desktop Client-Installation
  • 💿Installation für On-Premise
  • System Anforderungen
    • Server
    • Rich Client
    • Web Client
    • Agenten
  • Installation des Servers
  • Installation des Webclients
  • Desktop Client und Agenten
  • Verbindung zur MSSQL Datenbank
  • Verbindung zur Oracle Datenbank 12.2c
  • Lizenzen
  • Monitoring
  • SSL-Konfiguration
  • Einstellungen für die Content Security Policy (CSP)
  • Server-Parameter
  • Update Ihrer Installation
    • Info
    • Server stoppen
    • Update der MSSQL Datenbank
    • Update der Oracle Datenbank
    • Update des Servers
    • Update des Webclients
    • Server starten
    • Update des Desktop-Clients
    • Update der Agenten
    • Update der Hinweise
  • ❔FAQ
    • E-Mail Benachrichtigung - Web Client Links
    • E-Mail Template für neue Benutzer und Passwort zurücksetzen anpassen
    • Maximale Anhanggröße anpassen
    • 🪄KI-Kopilot
    • Transformieren Sie Ihr Test- und Projektmanagement mit KI Copilot von aqua
    • Aktivieren und Verwalten der KI Copilot Optionen
    • Einfache Erstellung von Dokumenten mit KI-Kopilot
    • KI-Kopilot: Generieren Sie eine umfassende Beschreibung für die Testfälle mit nur einem Klick
    • KI-Copilot - Testfälle aus Anforderungen oder aus dem Kontext in Sekunden erstellen
      • Erstellen von Testfällen aus einer Anforderung
      • Erstellen eines Testfalls von einer Testfallseite aus
      • Erstellen von Testfällen über die Navigationsseite
    • Generierung von Testdaten mit KI Copilot
    • Generierung von Testfall basierend auf einer Datei
    • Erstellen Sie User Stories, BDDs oder PRDs basierend auf einer Datei
    • KI-Kopilot-Chat
    • Generierung von Testfällen mit AI Copilot unter Verwendung von Unterstützte Testendesigntechniken
    • 🔗Integrationen
    • Jira-Synchronisierung: Synchronisierung von Elementen zwischen aqua- und Jira-Projekten
      • Checkliste vor dem Start
      • SyncConfigurator herunterladen
      • Erste Einrichtung der Synchronisation
      • Synchronisierung der Projekte zwischen aqua und Jira
      • Feldermapping
        • Unterstützte Jira Standardfelder
        • Kompatibilität der Felder zwischen aqua und Jira
        • Besondere Kompatibilität der Felder zwischen aqua und Jira
      • Erlaube das Mapping nur ausgewählter Werte und ignoriere andere Feldwerte für die Synchronisierung
      • Troubleshooting
      • Formatierungsunterstützung
    • Azure Devops Synchronisierung
    • Jira-Link: Erstellen und/oder Verknüpfen von Jira-Themen mit aqua-Tickets
    • aqua4Jira-Plugin: Jira-Ausgabe mit aqua-Testfällen abdecken
      • Installation des Plug-ins
        • aqua4Jira Plugin - Jetzt kompatibel mit Jira Data Center!
      • Konfiguration in Jira
      • Konfiguration in aqua
    • Confluence Integration
    • Testlink: Importer-Tool für die Migration von Testfällen nach aqua
    • SSO
      • LDAP
      • SAML-Konfiguration
        • Installation
        • Beispiel
    • 🌀Automatisierung
    • Desktop Client
      • Erstellen eines Automatisierungsagenten
      • Konfiguration der Automatisierung
      • Ranorex
      • UFT
      • JMeter
      • SoapUI
      • Datenbank
      • UnixShell
      • PowerShell
      • Jenkins Integration
      • Automatisierungsbibliothek
    • Web Client
      • Automatisierungsagent
        • Erstellung & Konfiguration
        • Agentenpools
        • Laufende Aufgabe
      • PowerShell
      • Unix Shell
      • Jenkins
      • Selenium
    • REST-API
    • Automatisierung: CI/CD-Werkzeuge und aqua REST API
      • Gitlab CI/CD: JAVA/Playwright
      • Gitlab CI/CD: TypeScript/Cypress
      • Gitlab CI/CD: TypeScript/Playwright
      • Gitlab CI/CD: TypeScript/Cypress/Cucumber
    • 🚀Produktaktualisierungen On Premise
    • Funktionsleitlinien
      • 25.30.0 - On Premise
      • 25.18.0 - On premise
      • 25.10.0- On premise
      • 24.126.0 - On premise
      • 24.108.0 - On premise
      • 24.101.0 - On premise
      • 24.93.0 - On Premise
      • 24.83.0 - On Premise
      • 24.71.0 - On Premise
      • 24.53.0 - On Premise
      • 24.8 - On Premise
      • 23.140 - On Premise
      • 23.126.0 - On Premise
      • 23.102.0 - On Premise
      • 23.70.0 - On Premise
      • 23.22.0 - On Premise
      • 22.132.0 - On Premise
      • 22.123.0 - On Premise
    • Release Notes
      • 25.31.0 und 25.33.0 - On Premise
      • 25.30.0 - On Premise
      • 25.26.0 - On Premise
      • 25.18.0 - On Premise
      • 25.10.0 - On Premise
      • 24.135.0 - On Premise
      • 24.130.0 - On Premise
      • 24.126.0 - On Premise
      • 24.114.0 - On Premise
      • 24.108.0 - On Premise
      • 24.101.0 - On Premise
      • 24.93.0 - On Premise
      • 24.83.0 - On Premise
      • 24.71.0 - On Premise
      • 24.53.0 - On Premise
      • 24.8.0 - On Premise
      • 23.140.0 - On Premise
      • 23.126.0 - On Premise
      • 23.102.0 - On Premise
      • 23.70.0 - On Premise
      • 23.22.0 - On Premise
      • 22.132.0 - On Premise
      • 22.123.0 - On Premise
    • 🚀Produktaktualisierungen für Kunden von Public und Private Clouds
    • Funktionsleitlinien
      • 25.36.0 - public und private cloud
      • 25.33.0 - Public und Private cloud
      • 25.18.0 - Public und Private cloud
      • 25.10.0 -Public and Private Cloud
      • 24.126.0 - Public and Private Cloud
      • 24.108.0 - Public and Private Cloud
      • 24.101.0 - Public and Private Cloud
      • 24.93.0 - Public and Private Cloud
      • 24.88.0 - Public und Private Clouds
      • 24.88.0 - Public und Private Clouds
      • 24.83.0 - Public und Private Clouds
      • 24.71.0 - Public und Private Clouds
      • 24.63.0 - Public und Private Clouds
      • 24.50.0 - Public und Private Clouds
      • 24.33.0 - Public und Private Clouds
      • 24.8.0 - Public und Private Clouds
      • 23.140 - Public und Private Clouds
      • 23.126.0 - Public und Private Clouds
      • 23.107.0 - Public und Private Clouds
      • 23.92 - Public und Private Clouds
      • 23.70.0 - Public und Private Clouds
      • 23.46.0 - Public und Private Clouds 1/3
      • 23.46.0 - Public und Private Clouds 2/3e
      • 23.46.0 - Public und Private Clouds 3/3
      • 23.22.0 - Public und Private Clouds
      • 22.123.0 - Public und Private Clouds
    • Release Notes
      • 25.33.0- Public und Private Clouds
      • 25.31.0- Public und Private Clouds
      • 25.30.0 - Public und Private Cloud
      • 25.24.0 - Public und Private Cloud
      • 25.18.0 - Public und Private Cloud
      • 25.10.0 - Public und Private Cloud
      • 24.135.0 - Public and Private Clouds
      • 24.130.0 - Public and Private Clouds
      • 24.126.0 - Public and Private Clouds
      • 24.114.0 - Public and Private Clouds
      • 24.108.0 - Public and Private Clouds
      • 24.101.0 - Public and Private Clouds
      • 24.93.0 - Public and Private Clouds
      • 24.88.0 - Public und Private Clouds
      • 24.83.0 - Public und Private Clouds
      • 24.71.0 - Public und Private Clouds
      • 24.63.0 - Public und Private Clouds
      • 24.50.0 - Public und Private Clouds
      • 24.33.0 - Public und Private Clouds
      • 24.8.0 - Public und Private Clouds
      • 23.140.0 - Public und Private Clouds
      • 23.126.0 - Public und Private Clouds
      • 23.107.0 - Public und Private Clouds
      • 23.92 - Public und Private Clouds
      • 23.70.0 - Public und Private Clouds
      • 23.46.0 - Public und Private Clouds
      • 23.22.0 - Public und Private Clouds
      • 22.132.0 - Public und Private Clouds
      • 22.123.0 - Public und Private Clouds
    • 📢 AQUA NEWS
      • Vorschau auf die öffentliche API von aqua
    • 📹Capture
    • Was ist Capture?
    • Installation der Chrome-Erweiterung
    • Aufnehmen im Inkognito-Modus
    • Verwenden von Capture mit Edge
    • Aufzeichnung mit Video
      • Option zum Aktivieren des Mikrofons für Sprachaufnahmen während der Bildschirmaufnahme
      • Option zum Pausieren/Fortsetzen während der Videoaufzeichnung
    • Erfassen mit Screenshot
    • Ausführung eines Tests
    • Last-Minute-Sitzungswiederholung
    • Maskierte Eingaben beim Erstellen von Captures
Powered by GitBook
On this page

Was this helpful?

  1. FAQ
  2. Automatisierung: CI/CD-Werkzeuge und aqua REST API

Gitlab CI/CD: JAVA/Playwright

PreviousAutomatisierung: CI/CD-Werkzeuge und aqua REST APINextGitlab CI/CD: TypeScript/Cypress

Last updated 10 months ago

Was this helpful?

Grundlegende GitLab CI/CD & aqua Arbeitsablauf

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.

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:

static void createTCExecution(TestInfo tcInfo, String status){ 

   Map<String, String> headers = new HashMap<>(); 

   headers.put("authorization", "Bearer " + bearerToken); 

   headers.put("content-type", "application/json"); 

   headers.put("accept", "application/json"); 

   headers.put("Connection", "keep-alive"); 

   

 

   APIRequestContext tcExecutionRequest = playwright.request().newContext(new APIRequest.NewContextOptions() 

     .setExtraHTTPHeaders(headers)); 

     

     JSONArray finalArr = new JSONArray(); 

     JSONObject json = new JSONObject(); 

 

     int tcId = Integer.parseInt(tcInfo.getTags().iterator().next()); 

 

 

     json.put("Guid", JSONObject.NULL); 

     json.put("TestCaseId", tcId); 

     json.put("TestCaseName", JSONObject.NULL); 

     json.put("Finalize", false); 

     json.put("ValueSetName", JSONObject.NULL); 

     json.put("TestScenarioInfo", JSONObject.NULL); 

     

     JSONArray stepsArr = new JSONArray(); 

     JSONObject jsonSteps = new JSONObject(); 

     

     jsonSteps.put("Index", 1); 

     jsonSteps.put("Name", "Step 1"); 

     jsonSteps.put("StepType", "Step"); 

     jsonSteps.put("Status", status); 

     jsonSteps.put("Description", JSONObject.NULL); 

     jsonSteps.put("ExpectedResults", JSONObject.NULL); 

     jsonSteps.put("ActualResults", JSONObject.NULL); 

     jsonSteps.put("ActualResultsLastUpdatedBy", JSONObject.NULL); 

     jsonSteps.put("ActualResultsLastUpdated","0001-01-01T00:00:00"); 

 

     stepsArr.put(jsonSteps); 

 

     json.put("Steps", stepsArr); 

     json.put("TestedVersion", JSONObject.NULL); 

     json.put("Status", JSONObject.NULL); 

     

      JSONObject execDuration = new JSONObject(); 

      execDuration.put("FieldValueType","TimeSpan"); 

      execDuration.put("Text","20 second"); 

      execDuration.put("Value",20); 

      execDuration.put("Unit","Second"); 

      

     json.put("ExecutionDuration", execDuration); 

     json.put("AttachedLabels", new JSONArray()); 

     json.put("CustomFields", new JSONArray()); 

     json.put("Attachments", JSONObject.NULL); 

     json.put("TesterId", JSONObject.NULL); 

     json.put("ExecutionDate", JSONObject.NULL); 

     json.put("AttachedFiles", new JSONArray()); 

 

     finalArr.put(json); 

 

     APIResponse tcExcutionResponse = tcExecutionRequest.post(appUrl + "api/TestExecution", RequestOptions.create().setData(finalArr.toString())); 

 

     assertTrue(tcExcutionResponse.ok()); 

 } 

In dieser Klasse sollten wir Schnittstellenmethoden wie folgt implementieren:

@Override 

 public void testSuccessful(ExtensionContext context) { 

   System.out.println("Call Success extension"); 

   logResult = "Pass"; 

 } 

 

 @Override 

 public void testAborted(ExtensionContext context, Throwable cause) { 

   System.out.println("Call Abort extension"); 

   logResult = "NotRun"; 

 } 

 

 @Override 

 public void testFailed(ExtensionContext context, Throwable cause) { 

   System.out.println("Call Fail extension"); 

   logResult = "Failed"; 

 } 

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:

Full TestBase class listing:

package com.aqua; 

 

import com.google.gson.Gson; 

import com.google.gson.JsonObject; 

import com.microsoft.playwright.APIRequest; 

import com.microsoft.playwright.APIRequestContext; 

import com.microsoft.playwright.APIResponse; 

import com.microsoft.playwright.Browser; 

import com.microsoft.playwright.BrowserContext; 

import com.microsoft.playwright.BrowserType; 

import com.microsoft.playwright.Page; 

import com.microsoft.playwright.Playwright; 

import com.microsoft.playwright.options.FormData; 

import com.microsoft.playwright.options.RequestOptions; 

 

import org.junit.jupiter.api.AfterAll; 

import org.junit.jupiter.api.AfterEach; 

import org.junit.jupiter.api.BeforeAll; 

import org.junit.jupiter.api.BeforeEach; 

import org.junit.jupiter.api.TestInfo; 

import org.junit.jupiter.api.extension.ExtensionContext; 

import org.junit.jupiter.api.extension.TestWatcher; 

import org.json.*; 

 

import static org.junit.jupiter.api.Assertions.assertTrue; 

 

import java.util.HashMap; 

import java.util.Map; 

 

public class TestBase implements TestWatcher 

{ 

 private static Playwright playwright; 

 private static Browser browser; 

 private static String appUrl = "https://aqua-auto-aqamasterpla.aqua-testing.com/aquawebng/"; 

 private static String bearerToken; 

 private static APIRequestContext request; 

 private static BrowserContext context; 

 private static TestInfo testInfo; 

 private static String logResult; 

 Page page; 

 

 static void getBearerToken() { 

   Map<String, String> headers = new HashMap<>(); 

   headers.put("content-type", "application/x-www-form-urlencoded"); 

 

   request = playwright.request().newContext(new APIRequest.NewContextOptions() 

     .setExtraHTTPHeaders(headers)); 

   APIResponse response = request.post(appUrl + "api/token", RequestOptions.create().setForm( 

     FormData.create() 

       .set("grant_type", "password") 

       .set("username","start") 

       .set("password","default"))); 

 

   assertTrue(response.ok()); 

 

   JsonObject j = new Gson().fromJson(response.text(), JsonObject.class); 

   bearerToken = j.get("access_token").getAsString(); 

 } 

 

 static void createTCExecution(TestInfo tcInfo, String status){ 

   Map<String, String> headers = new HashMap<>(); 

   headers.put("authorization", "Bearer " + bearerToken); 

   headers.put("content-type", "application/json"); 

   headers.put("accept", "application/json"); 

   headers.put("Connection", "keep-alive"); 

   

 

   APIRequestContext tcExecutionRequest = playwright.request().newContext(new APIRequest.NewContextOptions() 

     .setExtraHTTPHeaders(headers)); 

     

     JSONArray finalArr = new JSONArray(); 

     JSONObject json = new JSONObject(); 

 

     int tcId = Integer.parseInt(tcInfo.getTags().iterator().next()); 

 

 

     json.put("Guid", JSONObject.NULL); 

     json.put("TestCaseId", tcId); 

     json.put("TestCaseName", JSONObject.NULL); 

     json.put("Finalize", false); 

     json.put("ValueSetName", JSONObject.NULL); 

     json.put("TestScenarioInfo", JSONObject.NULL); 

     

     JSONArray stepsArr = new JSONArray(); 

     JSONObject jsonSteps = new JSONObject(); 

     

     jsonSteps.put("Index", 1); 

     jsonSteps.put("Name", "Step 1"); 

     jsonSteps.put("StepType", "Step"); 

     jsonSteps.put("Status", status); 

     jsonSteps.put("Description", JSONObject.NULL); 

     jsonSteps.put("ExpectedResults", JSONObject.NULL); 

     jsonSteps.put("ActualResults", JSONObject.NULL); 

     jsonSteps.put("ActualResultsLastUpdatedBy", JSONObject.NULL); 

     jsonSteps.put("ActualResultsLastUpdated","0001-01-01T00:00:00"); 

 

     stepsArr.put(jsonSteps); 

 

     json.put("Steps", stepsArr); 

     json.put("TestedVersion", JSONObject.NULL); 

     json.put("Status", JSONObject.NULL); 

     

      JSONObject execDuration = new JSONObject(); 

      execDuration.put("FieldValueType","TimeSpan"); 

      execDuration.put("Text","20 second"); 

      execDuration.put("Value",20); 

      execDuration.put("Unit","Second"); 

      

     json.put("ExecutionDuration", execDuration); 

     json.put("AttachedLabels", new JSONArray()); 

     json.put("CustomFields", new JSONArray()); 

     json.put("Attachments", JSONObject.NULL); 

     json.put("TesterId", JSONObject.NULL); 

     json.put("ExecutionDate", JSONObject.NULL); 

     json.put("AttachedFiles", new JSONArray()); 

 

     finalArr.put(json); 

 

     APIResponse tcExcutionResponse = tcExecutionRequest.post(appUrl + "api/TestExecution", RequestOptions.create().setData(finalArr.toString())); 

 

     assertTrue(tcExcutionResponse.ok()); 

 } 

 

 @BeforeAll 

 static void berforeAll() { 

   playwright = Playwright.create(); 

   browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setSlowMo(50)); 

 } 

 

 @AfterAll 

 static void closeBrowser() { 

   createTCExecution(testInfo, logResult); 

   context.close(); 

   playwright.close(); 

 } 

 

 @BeforeEach 

 void createContextAndPage(TestInfo testInfo) { 

   TestBase.testInfo = testInfo; 

   context = browser.newContext(); 

   page = context.newPage(); 

 } 

 @Override 

 public void testSuccessful(ExtensionContext context) { 

   System.out.println("Call Success extension"); 

   logResult = "Pass"; 

 } 

 

 @Override 

 public void testAborted(ExtensionContext context, Throwable cause) { 

   System.out.println("Call Abort extension"); 

   logResult = "NotRun"; 

 } 

 

 @Override 

 public void testFailed(ExtensionContext context, Throwable cause) { 

   System.out.println("Call Fail extension"); 

   logResult = "Failed"; 

 } 

 

 @AfterEach 

 void closeContext() { 

   getBearerToken(); 

   System.out.println("Aqua TC Id being executed: " + testInfo.getTags().iterator().next()); 

 } 

 

} 

 

Full Test Class listing:

package com.aqua; 

 

import static org.junit.jupiter.api.Assertions.assertEquals; 

 

import org.junit.jupiter.api.Tag; 

import org.junit.jupiter.api.Test; 

import org.junit.jupiter.api.TestInfo; 

import org.junit.jupiter.api.extension.ExtendWith; 

 

@ExtendWith(TestBase.class) 

public class TestCase270 extends TestBase{ 

 

   @Test 

   @Tag("270") 

   void shouldSearchWiki(TestInfo testInfo) { 

     page.navigate("https://www.wikipedia.org/"); 

     page.locator("input[name=\"search\"]").click(); 

     page.locator("input[name=\"search\"]").fill("playwright"); 

     page.locator("input[name=\"search\"]").press("Enter"); 

     assertEquals("https://en.wikipedia.org/wiki/Playwright", page.url()); 

     System.out.println("Test Case executed"); 

   } 

 

} 

Die TestFall-Klasse implementiert einfache Aktionen: öffnen mit Playwright-Aktionen, klicken Sie dort ein paar Mal und überprüfen Sie die aktuelle Web-URL

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 Interface in der TestBase.

❔
www.wikipedia.org
Test Watcher
Logoaqua REST API Help