• Selenium Video Tutorials

Selenium - TestNG



While we are running any automation tests using Selenium or any other tool, we will be required to view and analyze the results of the execution to conclude the number of tests which got executed, passed, failed, failure data, and so on in the form of reports.

Sometimes, the screenshots where the tests have undergone a failure are also captured in the reports. The test reports are also required to be shared with the project stakeholders on a periodic basis. For this purpose, we can take the help of the TestNG reports.

A TestNG report is a html report generated automatically once a test case built and run with the help of the TestNG. It is a unit testing framework which can be integrated with Selenium tests and used for reporting purposes.

In addition to this, the TestNG has a default reporting class called the Reporter which helps to log. This is useful in detecting the root cause of failure to debug the failed test.

Prerequisites to Create A TestNG Report

  • Install Java(version above 8) in the system and check if it is present with the command: java -version. The java version installed will be visible if installation has been completed successfully.

  • Install maven in the system and check if it is present with the command: mvn -version. The maven version installed will be visible if installation has been completed successfully.

  • Install any IDE like Eclipse, IntelliJ, and so on.

  • Add the TestNG dependencies from the link below: https://mvnrepository.com/artifact/.

  • Add the Selenium Java dependencies from the below link: selenium-java

  • Save the pom.xml with all the dependencies and update the maven project

What are the Different Ways to Generate TestNG Reports?

The difference ways to generate a TestNG report are listed below −

  • emailable-report.html

  • index.html report

  • Reporter class report

emailable-report.html

The steps to create an emailable-report.html are listed below −

Step 1 − Create a TestNG test class with the implementation of the below example where we will first click on the New User button on the Welcome Page.

Please note, we will run the test through the testng.xml file.

Selenium TestNG Report 1

On clicking the New User button, we will be navigating to the Registration page, having the Welcome, Register text as shown in the below image.

Selenium TestNG Report 2

Example

package Report;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.*;
import java.util.concurrent.TimeUnit;
import static org.testng.Assert.assertEquals;

public class TestNGTest {
   WebDriver driver;
   @BeforeTest
   public void setup() throws Exception{

      // Initiate browser driver
      driver = new ChromeDriver();
      
      // adding implicit wait of 12 secs
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      
      // Opening the webpage
      driver.get("https://www.tutorialspoint.com/selenium/practice/login.php");
   }
   @Test(priority = 1)
   public void verifyWelcomePageHeading() {
   
      // identify header then get text
      WebElement header = driver.findElement
         (By.xpath("//*[@id='signInForm']/h1"));
      String text = header.getText();
      
      // assertion to verify login page header
      assertEquals("Welcome, Login In", text);
   }
   @Test(priority = 2)
   public void moveToRegisterPage() {
   
      // identify button then click
      WebElement btn = driver.findElement
         (By.xpath("//*[@id='signInForm']/div[3]/a"));
      btn.click();
   }
   @Test(priority = 3)
   public void verifyRegisterPageHeading() {
   
      // identify header then get text
      WebElement heder = driver.findElement
         (By.xpath("//*[@id='signupForm']/h1"));
      String text = heder.getText();
      
      // assertion to verify register page header
      assertEquals("Welcome,Register", text);
   }

   @AfterTest
   public void teardown() {
      // quitting browser
      driver.quit();
   }
}

Configurations in testng.xml file.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite">
   <test verbose="2" preserve-order="true" name="TestNGTest.java">
      <classes>
         <class name="Report.TestNGTest">
            <methods>
               <include name="verifyWelcomePageHeading"/>
               <include name="moveToRegisterPage"/>
               <include name="verifyRegisterPageHeading"/>
            </methods>
         </class>
      </classes>
   </test>
</suite>

Dependencies in pom.xml file.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.example</groupId>
   <artifactId>SeleniumJava</artifactId>
   <version>1.0-SNAPSHOT</version>
   
   <properties>
      <maven.compiler.source>16</maven.compiler.source>
      <maven.compiler.target>16</maven.compiler.target>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
   
   <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
   <dependencies>
      <dependency>
         <groupId>org.seleniumhq.selenium</groupId>
         <artifactId>selenium-java</artifactId>
         <version>4.11.0</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/org.testng/testng -->
      <dependency>
         <groupId>org.testng</groupId>
         <artifactId>testng</artifactId>
         <version>7.9.0</version>
         <scope>test</scope>
      </dependency>
   </dependencies>
</project>

Project structure of the above implementation is shown in the below image −

Selenium TestNG Report 3

We will run the test through the testng.xml.

Output

===============================================
All Test Suite
Total tests run: 3, Passes: 3, Failures: 0, Skips: 0
===============================================

Process finished with exit code 0

We had taken help of the TestNG test framework, to create tests and retrieved the page headers and verified them with assertions.

The result in the console shows Total tests run: 3, as there are three methods with @Test annotations - verifyWelcomePageHeading(), moveToRegisterPage(), and verifyRegisterPageHeading().

Finally, the message Passes: 3, and Process finished with exit code 0 was received, signifying successful execution of the code.

Step 2 − Refresh the project and a new folder called the test-output should get generated in the project structure.

Selenium TestNG Report 4

Step 3 − Right-click on the emailable-report.html and select the option to open in a browser.

Selenium TestNG Report 5

The report will be opened in the browser showing the test class name - TestNGTest.java with total number passed, skipped, failed, duration of test, and so on.. Also, the test method names moveToRegisterPage, verifyRegisterPageHeading, and verifyWelcomePageHeading are also included in the report.

index.html report

The steps to create an index.html report are listed below −

Step 1 − Follow Step1 of the steps described to create emailable-report.html.

Step 2 − Refresh the project and a new folder called the test-output should get generated in the project structure.

Selenium TestNG Report 6

Step 3 − Right-click on the index.html and select the option to open in a browser.

Selenium TestNG Report 7

The report will be opened in the browser showing the testng.xml, number of test, groups, Times, Reporter output, ignored methods, and Chronological view. Also, the Results section contains the test method names moveToRegisterPage, verifyRegisterPageHeading, and verifyWelcomePageHeading with the number of methods, passed, and failed.

Report Generated From Reporter Class

TestNG gives the Reporter class for logging purposes. It has four different ways to handle the information for logging −

  • Reporter.log( String str);

  • Reporter.log( String str, Boolean logToOut);

  • Reporter.log( String str, int l);

  • Reporter.log( String str, int l, Boolean logToOut);

The steps to generate log messages in report with Reporter class are listed below −

Step 1 − Create a TestNG test class with the implementation of the below example where we will first click on the New User button on the Welcome Page.

Please note, we will run the test through the testng.xml file. Also, once the test is executed, we will have the below log messages in the reports −

  • Moving to Registration Page

  • Verified Login Page Header

  • Verified Register Page Header

Selenium TestNG Report 8

On clicking the New User button, we will be navigating to the Registration page, having the Welcome, Register text as shown in the below image.

Selenium TestNG Report 9

Please note, we will run the test through the testng.xml file. Also, once the test is executed, we will have the below log messages in the reports −

  • Moving to Registration Page

  • Verified Login Page Header

  • Verified Register Page Header

Example

package Report;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Reporter;
import org.testng.annotations.*;
import java.util.concurrent.TimeUnit;
import static org.testng.Assert.assertEquals;

public class TestNGTest {
   WebDriver driver;
   @BeforeTest
   public void setup() throws Exception{

      // Initiate browser driver
      driver = new ChromeDriver();
      
      // adding implicit wait of 12 secs
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      
      // Opening the webpage
      driver.get("https://www.tutorialspoint.com/selenium/practice/login.php");
   }
   @Test(priority = 1)
   public void verifyWelcomePageHeading() {
   
      // identify header then get text
      WebElement header = driver.findElement(By.xpath("//*[@id='signInForm']/h1"));
      String text = header.getText();
      
      // assertion to verify login page header
      assertEquals("Welcome, Login In", text);
      Reporter.log("Verified Login Page header");
   }
   @Test(priority = 2)
   public void moveToRegisterPage() {
   
      // identify button then click
      WebElement btn = driver.findElement(By.xpath("//*[@id='signInForm']/div[3]/a"));
      btn.click();
      Reporter.log("Moving to Registration Page");
   }
   @Test(priority = 3)
   public void verifyRegisterPageHeading() {
   
      // identify header then get text
      WebElement heder = driver.findElement(By.xpath("//*[@id='signupForm']/h1"));
      String text = heder.getText();
      
      // assertion to verify register page header
      assertEquals("Welcome,Register", text);
      Reporter.log("Verified Register Page header");
   }

   @AfterTest
   public void teardown() {
   // quitting browser
   driver.quit();
   }
}

Step 2 − Refresh the project and a new folder called the test-output should get generated in the project structure.

Step 3 − Right-click on the emailable-report.html and index.html to select the option to open in a browser.

The below emailable-report.html report should open in the browser showing the test class name - TestNGTest.java with total number passed, skipped, failed, duration of test, and so on. Also, the test method names moveToRegisterPage, verifyRegisterPageHeading, and verifyWelcomePageHeading are also included in the report.

At the lower section in the report, the logging messages along with the test method names were visible.

10

The below index.html report should open in the browser showing the testng.xml, number of test, groups, Times, Reporter output, ignored methods, and Chronological view. Also, the Results section contains the test method names moveToRegisterPage, verifyRegisterPageHeading, and verifyWelcomePageHeading with the number of methods, passed, and failed.

On clicking the Reporter output tab in the left, the logging messages along with the test method names were visible.

11

The below link provides a detailed description of TestNG: TestNG

This concludes our comprehensive take on the tutorial on Selenium - TestNG Report. We’ve started with describing a TestNG report, prerequisites to set up a TestNG report, and walked through steps to create a different types of TestNG reports like emailable-report.html, index.html, and reports with Reporter class with an example illustrating how to use them along with Selenium. This equips you with in-depth knowledge of the TestNG report. It is wise to keep practicing what you’ve learned and exploring others relevant to Selenium to deepen your understanding and expand your horizons.

Advertisements