Top
Integrating OWASP ZAP Scans into Selenium Tests - StaleElement
fade
4170
post-template-default,single,single-post,postid-4170,single-format-standard,eltd-core-1.2.1,flow child-child-ver-1.0.1,flow-ver-1.7,,eltd-smooth-page-transitions,ajax,eltd-grid-1300,eltd-blog-installed,page-template-blog-standard,eltd-header-vertical,eltd-sticky-header-on-scroll-up,eltd-default-mobile-header,eltd-sticky-up-mobile-header,eltd-dropdown-default,eltd-header-style-on-scroll,wpb-js-composer js-comp-ver-6.4.2,vc_responsive

Integrating OWASP ZAP Scans into Selenium Tests

Integrating OWASP ZAP with Selenium Tests

Integrating OWASP ZAP Scans into Selenium Tests

Reading Time: 5 minutes

In today’s web-driven world, robust web application security is an absolute necessity. Even minor vulnerabilities can have catastrophic consequences, leading to data breaches, financial losses, and reputational damage.
Consider a crypto trading platform: if the API for retrieving customer information lacks proper authorization, one customer could easily access details of all customers, resulting in a data breach.
As a QA professional, how can you incorporate security checks into your existing Selenium test automation scripts? This guide explores how to integrating OWASP ZAP scans into selenium, a powerful dynamic web application security scanner, with Selenium WebDriver for automated security testing within your Selenium test suite.

Why Security Automation Matters

Security should be a top priority throughout the Software Development Lifecycle (SDLC). Early detection of vulnerabilities is crucial to minimize risks and ensure a secure product launch.
However, manual security testing can be time-consuming and resource-intensive, especially for complex web applications. This is where automation comes in.

Introducing OWASP ZAP

OWASP ZAP (Zed Attack Proxy) is a free and open-source web application security scanner developed by the Open Web Application Security Project (OWASP). ZAP acts as a man-in-the-middle proxy, intercepting traffic between your browser and the web application under test. It then analyzes the intercepted traffic for vulnerabilities using various techniques such as SQL injection testing, cross-site scripting (XSS) detection, and security misconfigurations.

Benefits of Early ZAP Scan Integration

Integrating OWASP ZAP scans into Selenium tests early in the testing lifecycle offers several advantages:

  • Automated Vulnerability Detection: ZAP automates security checks, freeing up testers’ time for analysis and remediation efforts.
  • Shift-Left Security: Early detection of vulnerabilities allows for faster fixes and cost savings compared to finding them later in the development cycle.
  • Improved Code Quality: By proactively identifying vulnerabilities, you can ensure higher code quality and a more secure application from the outset.

Step-by-Step Guide: Integrating ZAP with Selenium Tests

Now, let’s dive into the practical steps for integrating OWASP ZAP scans into selenium:

1. Installing and Starting ZAP Proxy:

  • Download and install OWASP ZAP from the official website (https://www.zaproxy.org/download/).
  • When ZAP is successfully installed, launch the ZAP Proxy application.
  • At startup, it will ask if you want to persist the ZAP session. Select “No” and click start.
Integrating OWASP ZAP Scans into Selenium Tests: A Step-by-Step Guide

To make sure the proxy is started and running, open localhost:8080 in your choice of browser. It should display a welcome page like below.

Integrating OWASP ZAP Scans into Selenium Tests: A Step-by-Step Guide

ZAP is now up and running, scanning all traffic passing through the proxy.
Navigate to Tools > Option > API, and save the Zap API key. It will be used later in the implementation.

Integrating OWASP ZAP Scans into Selenium Tests: A Step-by-Step Guide
OWASP ZAP api key


Now that its done, lets move on to selenium side of implementation.

2. Adding ZAP to POM.xml (Maven Project):

Assuming you’re using Maven for project management, add the ZAP Client library to your pom.xml file. Here’s the example dependency

XML
<!-- https://mvnrepository.com/artifact/org.zaproxy/zap-clientapi -->
		<dependency>
			<groupId>org.zaproxy</groupId>
			<artifactId>zap-clientapi</artifactId>
			<version>1.14.0</version>
		</dependency>

Note: ZAP client libraries are available in all popular programming languages. You can find more information here.

3. Redirecting Selenium Traffic through ZAP Proxy:

Now you need to configure Selenium WebDriver to route traffic through the ZAP Proxy.

Let’s create a basic test that interacts with a web application and redirect its traffic through ZAP proxy. For this we need to follow below steps before driver intialization:

  • Create an instance of org.openqa.selenium.Proxy
  • Set http and ssl proxy to ZAP proxy(localhost:8080)
  • Update ChromeOptions to use this proxy instance.

Below is the code snippet to setup proxy in selenium and initialise WebDriver with it.

Java

        // Set WebDriver proxy
        String proxyUrl = "localhost:8080";
    		Proxy proxy = new Proxy();
    		proxy.setHttpProxy(proxyUrl);
    		proxy.setSslProxy(proxyUrl);

        //Configure ChromeOption
        ChromeOptions co = new ChromeOptions();
    		co.setAcceptInsecureCerts(true);
    		co.setProxy(proxy);
    		

        // Initialize WebDriver (replace with your desired browser with ChromeOptions)
        WebDriver driver = new ChromeDriver(co);

With the proxy set up, all Selenium traffic will be redirected through ZAP.

4. Generating a ZAP Report:

ZAP offers various options for generating reports on identified vulnerabilities. You can use the ZAP GUI or its API to access detailed reports. Lets use Zap API client for report generation, so it can be done programatically in tear down.

Below is the code snippet that will create api client for zap api and generate the report.

Java
        // Iniotialise Zap API client 
    		ClientApi clientApi = new ClientApi("localhost","8080","your-api-key");
    		
    		// generate Zap report from scanned traffic
    		if(clientApi != null) {
            ApiResponse res = null;
            try {
                res = clientApi.reports.generate("Zap Security Report", "traditional-html",
                        null, "Demo zap integration with selenium", null,
                        null,null, null, null, "zap-security-report.html",
                        null,System.getProperty("user.dir"), null);
				        System.out.println("Zap report generated successfully at " + res.toString());
            } catch (ClientApiException e) {
                throw new RuntimeException(e);
            }
		}

generate function take numerous parameters but you only need to provide a few required one, rest you can leave null.

5. Lets Try It Out With A Demo Run:

Run your Selenium test with the integrated ZAP scan. The path to the generated report will be displayed in your console if you’re using the code snippet provided above

Bash
zap report generated successfully at /Users/default/Project/SeleniumJava_BoilerPlate/zap-security-report.html

Open this path in any browser of your choice and you will be able to see a basic HTML security report.

OWASP ZAP Scans report

This is a basic example. You can customize it further by integrating ZAP’s API calls within your Selenium scripts to trigger specific scans or manipulate ZAP settings dynamically.
For a reference implementation (proof of concept – POC), you can visit this GitHub repository: here
If you find it useful, then you can follow binmile on github and give this repo a star.

Conclusion

By integrating OWASP ZAP with Selenium WebDriver, you can significantly enhance your web application security testing practices. This powerful combination allows for automated vulnerability detection, early identification of security flaws, and a more secure application throughout the development process. Remember, security is an ongoing journey. Continuously refine your testing practices.

To learn more interesting thing related to security please follow staleelement.com .

Yogendra Porwal

As an experienced Architect In Test Automation, I bring over 10 years of expertise in Quality Assurance across diverse software domains. With technical proficiency in multiple verticals of testing, including automation, functional, performance and security testing among others, my focus is on applying this knowledge to enhance the overall quality assurance process. I also like to go on long journeys with my bike , do sketching in my free time and have keen interest in video games.

5 Comments
  • Sabbir

    Hi ! It’s an amazing blog. I’ve worked on it too but facing an issue while running it.
    Here’s the log from the console:

    “[INFO] Scanning for projects…
    [INFO]
    [INFO] ——————————————–
    [INFO] Building selenium-zap 1.0-SNAPSHOT
    [INFO] from pom.xml
    [INFO] ——————————–[ jar ]———————————
    [INFO]
    [INFO] — exec-maven-plugin:3.2.0:java (default-cli) @ selenium-zap —
    Title: Google
    org.zaproxy.clientapi.core.ClientApiException: Does Not Exist
    at org.zaproxy.clientapi.core.ApiResponseFactory.getResponse(ApiResponseFactory.java:50)
    at org.zaproxy.clientapi.core.ClientApi.callApi(ClientApi.java:390)
    at org.zaproxy.clientapi.core.ClientApi.callApi(ClientApi.java:379)
    at org.zaproxy.clientapi.gen.Reports.generate(Reports.java:114)
    at com.example.SeleniumTest.main(SeleniumTest.java:41)
    at org.codehaus.mojo.exec.ExecJavaMojo.doMain(ExecJavaMojo.java:385)
    at org.codehaus.mojo.exec.ExecJavaMojo.doExec(ExecJavaMojo.java:374)
    at org.codehaus.mojo.exec.ExecJavaMojo.lambda$execute$0(ExecJavaMojo.java:296)
    at java.base/java.lang.Thread.run(Thread.java:834)
    [WARNING] thread Thread[UrlChecker-2,5,com.example.SeleniumTest] was interrupted but is still alive after waiting at least 14997msecs
    [WARNING] thread Thread[UrlChecker-2,5,com.example.SeleniumTest] will linger despite being asked to die via interruption
    [WARNING] NOTE: 1 thread(s) did not finish despite being asked to via interruption. This is not a problem with exec:java, it
    is a problem with the running code. Although not serious, it should be remedied.
    [WARNING] Couldn’t destroy threadgroup org.codehaus.mojo.exec.ExecJavaMojo$IsolatedThreadGroup[name=com.example.SeleniumTest,maxpri=10]
    java.lang.IllegalThreadStateException
    at java.lang.ThreadGroup.destroy (ThreadGroup.java:776)
    at org.codehaus.mojo.exec.ExecJavaMojo.execute (ExecJavaMojo.java:340)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:299)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:963)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:296)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:199)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    [INFO] ————————————————————————
    [INFO] BUILD SUCCESS
    [INFO] ————————————————————————
    [INFO] Total time: 20.472 s
    [INFO] Finished at: 2024-07-12T03:17:08+06:00
    [INFO] ————————————————————————“

    Here’s my pom.xml:


    4.0.0
    com.example
    selenium-zap
    jar
    1.0-SNAPSHOT
    selenium-zap
    http://maven.apache.org

    org.seleniumhq.selenium
    selenium-java
    4.22.0

    org.zaproxy
    zap-clientapi
    1.14.0

    org.apache.maven.plugins
    maven-compiler-plugin
    3.13.0

    1.8
    1.8

    org.codehaus.mojo
    exec-maven-plugin
    3.2.0

    java

    com.example.SeleniumTest

    Here’s my SeleniumTest.java class:

    “package com.example;

    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    import org.openqa.selenium.Proxy;
    import org.zaproxy.clientapi.core.ClientApi;
    import org.zaproxy.clientapi.core.ApiResponse;
    import org.zaproxy.clientapi.core.ClientApiException;

    public class SeleniumTest {
    public static void main(String[] args) {
    // Set the path to the chromedriver executable
    System.setProperty(“webdriver.chrome.driver”, “C:\Sabbir\selenium-zap\selenium-zap\chromedriver.exe”);

    // Set WebDriver proxy
    String proxyUrl = “localhost:8080”;
    Proxy proxy = new Proxy();
    proxy.setHttpProxy(proxyUrl);
    proxy.setSslProxy(proxyUrl);

    ChromeOptions options = new ChromeOptions();
    options.setAcceptInsecureCerts(true);
    options.setProxy(proxy);

    options.addArguments(“–remote-allow-origins=*”);
    WebDriver driver = new ChromeDriver(options);

    try {
    // Launch a new browser session and navigate to a URL
    driver.get(“https://google.com/”);

    // Print the title of the page
    System.out.println(“Title: ” + driver.getTitle());

    // Initialize ZAP API client
    ClientApi clientApi = new ClientApi(“localhost”, 8080, “tcn1k1ks2345k4fbrjq555nnet”);

    // Generate ZAP report from scanned traffic
    if (clientApi != null) {
    ApiResponse res = clientApi.reports.generate(
    “Zap Security Report”, // Title
    “html”, // Report format
    null, // Theme
    “Demo zap integration with selenium”, // Description
    null, // ContextId
    null, // Sites
    null, // Sections
    null, // Include Passive Scan results
    “zap-security-report.html”, // Report Filename
    null, // Templates
    System.getProperty(“user.dir”), // Output Directory
    null, // Config
    null // ReportFile
    );
    System.out.println(“ZAP report generated successfully at ” + res.toString());
    }
    } catch (ClientApiException e) {
    e.printStackTrace();
    } finally {
    // Close the browser
    driver.quit();
    }
    }
    }

    July 12, 2024 at 6:47 am Reply
  • Yogendra Porwal

    Hi Sabbir,
    Use some other sites like “https://tutorialsninja.com/demo/” , google.com does not allow traffic to be scanned.

    July 12, 2024 at 9:53 am Reply
  • Sabbir

    [INFO] T E S T S
    [INFO] ——————————————————-
    [INFO] Running SeleniumTest
    SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    5794 [main] ERROR ZapUtil – Error during active scan.
    java.lang.IllegalStateException: Not a JSON Object: 0
    at com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:165) ~[gson-2.11.0.jar:?]
    at ZapUtil.isScanCompleted(ZapUtil.java:138) ~[test-classes/:?]
    at ZapUtil.waitForScanCompletion(ZapUtil.java:123) ~[test-classes/:?]
    at ZapUtil.testSet(ZapUtil.java:72) ~[test-classes/:?]
    at SeleniumTest.runZapTest(SeleniumTest.java:10) ~[test-classes/:?]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
    at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139) ~[testng-7.8.0.jar:7.8.0]
    at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:664) ~[testng-7.8.0.jar:7.8.0]
    at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:227) ~[testng-7.8.0.jar:7.8.0]
    at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) ~[testng-7.8.0.jar:7.8.0]
    at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:957) ~[testng-7.8.0.jar:7.8.0]
    at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:200) ~[testng-7.8.0.jar:7.8.0]
    at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148) ~[testng-7.8.0.jar:7.8.0]
    at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) ~[testng-7.8.0.jar:7.8.0]
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) [?:?]
    at org.testng.TestRunner.privateRun(TestRunner.java:848) [testng-7.8.0.jar:7.8.0]
    at org.testng.TestRunner.run(TestRunner.java:621) [testng-7.8.0.jar:7.8.0]
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:443) [testng-7.8.0.jar:7.8.0]
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:437) [testng-7.8.0.jar:7.8.0]
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:397) [testng-7.8.0.jar:7.8.0]
    at org.testng.SuiteRunner.run(SuiteRunner.java:336) [testng-7.8.0.jar:7.8.0]
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) [testng-7.8.0.jar:7.8.0]
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) [testng-7.8.0.jar:7.8.0]
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1280) [testng-7.8.0.jar:7.8.0]
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1200) [testng-7.8.0.jar:7.8.0]
    at org.testng.TestNG.runSuites(TestNG.java:1114) [testng-7.8.0.jar:7.8.0]
    at org.testng.TestNG.run(TestNG.java:1082) [testng-7.8.0.jar:7.8.0]
    at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:136) [surefire-testng-3.0.0-M5.jar:3.0.0-M5]
    at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeSingleClass(TestNGDirectoryTestSuite.java:112) [surefire-testng-3.0.0-M5.jar:3.0.0-M5]
    at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:99) [surefire-testng-3.0.0-M5.jar:3.0.0-M5]
    at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:145) [surefire-testng-3.0.0-M5.jar:3.0.0-M5]
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:428) [surefire-booter-3.0.0-M5.jar:3.0.0-M5]
    at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) [surefire-booter-3.0.0-M5.jar:3.0.0-M5]
    at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:562) [surefire-booter-3.0.0-M5.jar:3.0.0-M5]
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:548) [surefire-booter-3.0.0-M5.jar:3.0.0-M5]
    5816 [main] ERROR ZapUtil – Error generating ZAP report.
    org.zaproxy.clientapi.core.ClientApiException: Does Not Exist
    at org.zaproxy.clientapi.core.ApiResponseFactory.getResponse(ApiResponseFactory.java:50) ~[zap-clientapi-1.14.0.jar:1.14.0]
    at org.zaproxy.clientapi.core.ClientApi.callApi(ClientApi.java:390) ~[zap-clientapi-1.14.0.jar:1.14.0]
    at org.zaproxy.clientapi.core.ClientApi.callApi(ClientApi.java:379) ~[zap-clientapi-1.14.0.jar:1.14.0]
    at org.zaproxy.clientapi.gen.Reports.generate(Reports.java:114) ~[zap-clientapi-1.14.0.jar:1.14.0]
    at ZapUtil.zapReport(ZapUtil.java:91) ~[test-classes/:?]
    at SeleniumTest.runZapTest(SeleniumTest.java:14) ~[test-classes/:?]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
    at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139) ~[testng-7.8.0.jar:7.8.0]
    at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:664) ~[testng-7.8.0.jar:7.8.0]
    at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:227) ~[testng-7.8.0.jar:7.8.0]
    at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50) ~[testng-7.8.0.jar:7.8.0]
    at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:957) ~[testng-7.8.0.jar:7.8.0]
    at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:200) ~[testng-7.8.0.jar:7.8.0]
    at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148) ~[testng-7.8.0.jar:7.8.0]
    at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128) ~[testng-7.8.0.jar:7.8.0]
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) [?:?]
    at org.testng.TestRunner.privateRun(TestRunner.java:848) [testng-7.8.0.jar:7.8.0]
    at org.testng.TestRunner.run(TestRunner.java:621) [testng-7.8.0.jar:7.8.0]
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:443) [testng-7.8.0.jar:7.8.0]
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:437) [testng-7.8.0.jar:7.8.0]
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:397) [testng-7.8.0.jar:7.8.0]
    at org.testng.SuiteRunner.run(SuiteRunner.java:336) [testng-7.8.0.jar:7.8.0]
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) [testng-7.8.0.jar:7.8.0]
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95) [testng-7.8.0.jar:7.8.0]
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1280) [testng-7.8.0.jar:7.8.0]
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1200) [testng-7.8.0.jar:7.8.0]
    at org.testng.TestNG.runSuites(TestNG.java:1114) [testng-7.8.0.jar:7.8.0]
    at org.testng.TestNG.run(TestNG.java:1082) [testng-7.8.0.jar:7.8.0]
    at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:136) [surefire-testng-3.0.0-M5.jar:3.0.0-M5]
    at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeSingleClass(TestNGDirectoryTestSuite.java:112) [surefire-testng-3.0.0-M5.jar:3.0.0-M5]
    at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:99) [surefire-testng-3.0.0-M5.jar:3.0.0-M5]
    at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:145) [surefire-testng-3.0.0-M5.jar:3.0.0-M5]
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:428) [surefire-booter-3.0.0-M5.jar:3.0.0-M5]
    at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) [surefire-booter-3.0.0-M5.jar:3.0.0-M5]
    at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:562) [surefire-booter-3.0.0-M5.jar:3.0.0-M5]
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:548) [surefire-booter-3.0.0-M5.jar:3.0.0-M5]
    [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.775 s – in SeleniumTest
    [INFO]
    [INFO] Results:
    [INFO]
    [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    [INFO]
    [INFO] ————————————————————————
    [INFO] BUILD SUCCESS
    [INFO] ————————————————————————
    [INFO] Total time: 11.288 s
    [INFO] Finished at: 2024-07-12T16:57:28+06:00
    [INFO] ————————————————————————

    [INFO] BUILD SUCCESS
    [INFO] ————————————————————————
    [INFO] Total time: 11.288 s
    [INFO] Finished at: 2024-07-12T16:57:28+06:00
    [INFO] ————————————————————————
    [INFO] BUILD SUCCESS
    [INFO] ————————————————————————
    [INFO] Total time: 11.288 s
    [INFO] Finished at: 2024-07-12T16:57:28+06:00
    [INFO] BUILD SUCCESS
    [INFO] ————————————————————————
    [INFO] Total time: 11.288 s
    [INFO] BUILD SUCCESS
    [INFO] ————————————————————————
    [INFO] BUILD SUCCESS
    [INFO] BUILD SUCCESS
    [INFO] ————————————————————————
    [INFO] Total time: 11.288 s
    [INFO] Finished at: 2024-07-12T16:57:28+06:00
    [INFO] ————————————————————————

    July 12, 2024 at 10:59 am Reply
  • Yogendra Porwal

    Hi Sabbir,
    You are providing incorrent arguements to generate report method.
    refer here “https://www.zaproxy.org/docs/desktop/addons/report-generation/templates/” for all possible values.

    July 13, 2024 at 9:00 am Reply
  • X22Unisp

    Hey people!!!!!
    Good mood and good luck to everyone!!!!!

    August 13, 2024 at 6:28 pm Reply

Post a Comment