Documentation - aqua cloud
🇬🇧 English
🇬🇧 English
  • 💻Web client
    • Getting started
    • General
      • Home page
      • App language
      • User account
      • Change password
      • Shortcuts & Accessibility
    • How to Contact Our Support
  • 👩‍🔧Administration
  • User administration
    • Adding and editing user profile
    • Roles and permissions
    • Assign, unassign or change licenses
      • Comparison of Licenses
    • Assign/unassign projects and roles
    • Licenses statistics
    • Statistics
  • Project configuration
    • [NEW] Project template configuration (fields)
      • Shared value sets
    • [OLD] Project template configuration (fields)
      • Shared value sets
      • Creating field groups
    • Field rules
    • [NEW] Workflow configuration
      • Global rules
      • Status and transitions
    • [OLD] Workflow configuration
    • Additional project settings
    • Project integrations
    • System log
    • Email notifications
      • Project default notifications
      • My notifications
      • Configuration of the project notification templates
      • Troubleshooting
  • Projects and folders
    • Project wizard
    • Projects
      • Export project
      • Import project
        • Migration from Testrail
      • Archive project
    • Folders
      • Export project folder
      • Import project folder
  • 🧩Modules
  • Navigation page
    • Project tree
    • Items grid
    • Filtering and grouping
    • Views
    • Search
    • Preview item details
  • Items
    • Requirements management
      • Requirements
      • Subrequirements
      • Requirements coverage
    • Test cases management
      • Test cases
      • Nested test cases (shared test cases/steps)
      • Manual testing
      • Test data or Variables manager
      • Test environment tracking with labels (tags)
      • Test execution results
      • Test automation
      • Capture: Test recorder/bug reporter
      • Test it: easy way to start run
      • Quick run: test execution of multiple test cases at once
    • Test scenarios management
      • Test scenarios
      • Adding test cases to a test scenario
      • Executing test scenarios
    • Defects management
      • Defects
      • Creating a defect from a test execution
      • Review found or linked defects to the test execution
      • Creating a defect with Capture
    • General item capabilities
      • Creating and Editing Items
      • Copy item to a target project or duplicate within a project
      • Taking over field values between items
      • Item template (defaults)
      • Dependencies
      • Add links to a description
      • Take screenshots
      • Watch item and notify other users
      • Attachments (files)
      • History of changes
      • Discussions (comments)
      • Print item data
  • Reporting
    • Creating a new report template
    • Basic report elements
    • Element tree structure
    • Element properties
    • Diagrams
    • Pivot table
    • 'Sum' function
    • Creating custom report script
    • Parametrization of reports
    • Exclude empty items from a report
    • Adding table of contents to a report
    • How to filter executions based on custom added fields?
  • Dashboards
    • Creating a dashbord
    • Publishing the dashboard
    • Creating a chart
    • KPI alerts
    • Drilldown to details from a chart
    • Burndown chart template
  • Agile
    • Backlog
    • Sprint board
    • Preview
  • 🖥️Desktop client
    • Getting started
      • Important notice: Deprecation of the desktop client in June 2025 [updated]
      • FAQ: Transitioning from the desktop client to the web Client
      • Desktop installation
      • Home screen configuration
      • Views
      • Grid
    • Agile board
      • Burn Down Chart
    • Dashboard
    • User Administration
      • Adding and managing users
      • Roles and permissions
      • Assigning licenses projects and roles
      • Statistics
    • Project configuration
      • Configuration of Fields and Workflows
      • Email Notification
      • Change company logo in printout
      • Import Project Configuration
    • Import / Export Wizard
    • Project Planner
      • Creating and editing a new project plan
      • Adding and syncing items to project plan
      • Resource planning
      • Gates and Stages
    • Requirements Management
      • Dependency
      • Subrequirements
      • Mind map
      • Comments
      • Documents
    • Test Management
      • Step Designer
      • Test Execution
        • Autosave of a test execution
      • Variable Manager
      • Nested Testcases
      • Disable manual test execution time
    • Test Scenarios
      • Test Scenarios
      • Scheduled Executions of Test Scenarios
      • Run Dependency
    • Defect Management
    • Reporting
      • Creating a Report
      • Creating a new report template
      • The Report Wizard
      • Basic Report Elements
      • Element tree structure
      • Element Properties
      • Diagrams
      • Pivot Table
      • Sum Function
      • Script Development
      • Parametrization
      • Performance Improvements for Report Creation
      • Remove empty elements
      • Table of Contents
      • Invalid References
    • Agile Board
      • Configuring the Agile Component
      • Planning board
      • Scrum board
      • Burn Down Chart
    • Versioning
  • 💿Installation for on premise
    • System Requirements
      • Server
      • Desktop Client
      • Web Client
      • Agents
    • Server Installation
    • Server parameters
    • Web Client Installation
    • Getting Agents
    • Connection to MSSQL Database
    • Connection to Oracle Database 12.2c
    • Licenses
    • Monitoring
    • SSL-Configuration
    • Content Security Policy (CSP) Settings
  • 🪄AI Copilot
    • Transform your testing and project management with aqua's AI Copilot
    • Enable and manage AI Copilot options
    • Create documents with ease with AI Copilot
    • AI Copilot: generate a comprehensive description for the test cases in just one click
    • AI Copilot - create test cases out of requirements or based on context in seconds
      • Create test cases from the navigation page
      • Create test cases from a requirement
      • Create a test case from a test case page
    • Generate test data with AI Copilot
    • Generate test case based on a file
    • Generate test cases in BDD format
    • Generate test cases with AI Copilot using test design techniques
    • Create user stories, BDDs, or PRDs based on a file
    • Create multiple user stories or BDDs with AI Copilot
    • Split or convert requirements
    • AI Copilot chat
  • 🔗Integrations
    • Jira sync: synchronize items between aqua and Jira projects
      • Before you begin: key steps for synchronization
      • Sync configurator set up
        • Sync Configurator options
      • Log in to the Sync Configurator
      • Sync of the projects between aqua and Jira
      • Fields mapping
        • Supported default Jira fields
        • General aqua and Jira fields compatibility
        • Special compatibility for aqua and Jira fields
      • Additional settings
        • Allow mapping of only selected values and ignore other field values for the sync
        • Automatic creation and mapping of field values
      • Troubleshooting
      • Synchronisaton of subtasks with aqua
      • Formatting support
    • Azure Devops sync
    • Jira link: create and/or link Jira issues to aqua tickets
    • aqua4Jira plugin: Cover Jira issue with aqua test cases
      • Installation of the plugin
        • aqua4Jira Plugin - Now Compatible with Jira Data Center!
      • Configuration in Jira
      • Configuration in aqua
    • Automatic display of test cases or test scenarios in Jira tickets
    • Confluence integration
    • Capture: record tests or create comprehensive bug reports
    • Testlink: importer tool for migrating test cases to aqua
    • SSO
      • LDAP
      • SAML Configuration
        • Installation
        • Sample
  • 🌀Automation
    • Desktop Client
      • Creating an Automation Agent
      • Configure Automation
      • Ranorex
      • UFT
      • JMeter
      • SoapUI
      • Database
      • UnixShell
      • PowerShell
      • Automation Library
    • Web Client
      • Automation Agent
        • Creation & Configuration
        • Agent pools
        • Running task
      • Powershell
      • Unix Shell
      • Jenkins integration
      • Selenium
    • REST API
    • Automation: CI/CD tools and aqua REST API
      • Gitlab CI/CD: JAVA/Playwright
      • Gitlab CI/CD: TypeScript/Cypress
      • Gitlab CI/CD: TypeScript/Playwright
      • Gitlab CI/CD: TypeScript/Cypress/Cucumber
  • 🚀Product updates for on premise customers
    • Product updates
      • 25.47.0 - On Premise
      • 25.36.0 - On Premise
      • 25.31.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.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 - 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.47.0 - On Premise
      • 25.36.0 - On Premise
      • 25.31.0 and 25.33.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
  • 🚀Product updates for public and private clouds customers
    • Product updates
      • 25.47.0 - public and private cloud
      • 25.36.0 - public and private cloud
      • 25.33.0 - public and private cloud
      • 25.18.0 - public and private cloud
      • 25.10.0 - public and private cloud
      • 24.135 - public and private clouds
      • 24.130 - public and private clouds
      • 24.126.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 and private clouds
      • 24.83.0 - public and private clouds
      • 24.71.0 - public and private clouds
      • 24.63.0 - public and private clouds
      • 24.50.0 - public and private clouds
      • 24.33.0 - public and private clouds
      • 24.8.0 - public and private clouds
      • 23.140 - public and private clouds
      • 23.126.0 - public and private clouds
      • 23.107.0 - public and private clouds
      • 23.92.0 - public and private clouds
      • 23.70.0 - public and private clouds
      • 23.46.0 - public and private clouds 1/3
      • 23.46.0 - public and private clouds 2/3
      • 23.46.0 - public and private clouds 3/3
      • 23.22.0 - public and private clouds
      • 22.132.0 - public and private clouds
    • Release notes
      • 25.47.0 - public and private cloud
      • 25.36.0 - public and private cloud
      • 25.33.0 - public and private cloud
      • 25.31.0 - public and private cloud
      • 25.24.0 - public and private cloud
      • 25.18.0 - public and private cloud
      • 25.10.0 - public and private cloud
      • 24.135.0 - public and private clouds
      • 24.130 - 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 and private clouds
      • 24.83.0 - public and private clouds
      • 24.71.0 - public and private clouds
      • 24.63.0 - public and private clouds
      • 24.50.0 - public and private clouds
      • 24.33.0 - public and private clouds
      • 24.8.0 - public and private clouds
      • 23.140.0 - public and private clouds
      • 23.126.0 - public and private clouds
      • 23.107.0 - public and private clouds
      • 23.92.0 - public and private clouds
      • 23.70.0 - public and private clouds
      • 23.46.0 - public and private clouds
      • 23.22.0 - public and private clouds
      • 22.132.0 - public and private clouds
      • 22.123.0 - public and private clouds
    • 📢AQUA NEWS
      • 🔒 Rate Limits for Public Cloud Users
      • Preview of aqua's public API
      • aqua is now ISO 27001 certified and DORA Compliant
      • Upcoming changes to aqua API
      • AI Copilot launching for All public clouds users on January 27th!
  • 📹Capture
    • What is Capture?
    • Chrome extension installation
    • Capturing in Incognito mode
    • Using Capture with Edge
    • Capturing with video
      • Option to enable mic when capturing a screen and adding voice notes
      • Option to pause/resume while capturing the video
        • Masking sensitive information while capturing
    • Capturing with screenshot
    • Running a test execution
    • Last minute session replay
    • Masked inputs while creating captures
Powered by GitBook
On this page

Was this helpful?

  1. Automation
  2. Automation: CI/CD tools and aqua REST API

Gitlab CI/CD: JAVA/Playwright

PreviousAutomation: CI/CD tools and aqua REST APINextGitlab CI/CD: TypeScript/Cypress

Last updated 11 months ago

Was this helpful?

Basic GitLab CI/CD & aqua workflow

This guide demonstrates integrating automated testing into your GitLab CI/CD pipeline, specifically using Maven project with JAVA/Playwright. However, the steps can be adapted for any test automation tool or framework to submit results to aqua.

Prerequisites

  • a GitLab project with CI/CD enabled

  • an aqua account to submit test results

  • an application or project configured with Maven project (e.g. using Visual Studi Code)

First, generate clean maven project or use existing one.

Make sure the following dependencies are added to the pom.xml file We will need Playwright, JUnit and JSON libraries.

Create a TestBase class to keep all general methods and implementations of the common logic and hooks: BeforeAll, BeforeEach, AfterAll, AfterEach, etc.

Create a TestCase class which extends the TestBase class and implements actual logic of a particular test. Here and further we assume that this class has an aqua Test Case instance so we will update its execution info in aqua web app. Test Case has one Step (Step 1) in aqua.

Using @AfterEach hook in TestBase class connect to aqua and get bearer token from REST GET request sent by playwright

The above token will be needed for POST request to create an aqua Test Case execution. We will use the following endpoint and JSON schema:

Example implementation in TestBase class for the above request looks as follows:

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 this class we should implement Interface Methods as below:

@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"; 

 } 

We assume that Test Class name is based on actual aqua Test Case Id: e.g in the case above we updated aqua Test Case with Id=270.

This Id variable can be passed from Test Class by using TestInfo from org.junit.jupiter.api.TestInfo;

After successful JUnit test execution we should see corresponding single Test Case execution in aqua

To be able to run the above Maven Project using GitLab CI/CD we need to create corresponding workflow file .gitlab-ci.yml. Simple Example of .gitlab-ci.yml script is shown below:

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 

Once a GitLab test runner is configured and connected to your GitLab projects we can Run GitLab Pipeline using the above workflow:

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"); 

   } 

 

} 

TestCase class implements simple actions: open web site using playwright actions, do a few clicks there and check actual Web URL:

In the above request we are passing “logResult” variable. It represents the actual JUnit test result (“Pass”, “Failed”, “NotRun”, etc.) To obtain this status from JUnit run we implement in the TestBase Class:

🌀
www.wikipedia.org
https://app.aqua-cloud.io/aquaWebNG/Help#tag/TestExecution/operation/TestExecution_Create
Test Watcher Interface