Generate HTML Report in Selenium WebDriver Project using Extent Reports Libraries

Here we will be going to talk about generating Html report after selenium scripts execution using TestNg and Extent Reports Libraries.

As HTML report is one of the most important part of the automation framework as it actually represents what actually happened in execution like how many of scripts got passed/failed/skipped etc.
There are many open source tools available on internet which creates customized HTML reports once scripts execution is done. However, here we will be going to generate highly customized HTML reports using Extent Reports jars. We are using following version in below example : extentreports-java-v2.41.0.


  • Download extentreports-java-v2.41.0 Jars and import them into your project
  • Import Selenium stand alone Jar into your Project
  • Create a folder name as  “HtmlReport” into your Project
  • Create a folder name as “driver-servers” and put chromedriverserver.exe into it.



import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
import com.relevantcodes.extentreports.LogStatus;

public class GenerateReport {

	WebDriver driver;
	String appUrl;

	static ExtentReports reports;
	ExtentTest test;

	public synchronized void initialize() {
		// Create an instance of ExtentsReports class and pass report storage
		// path as a parameter
		reports = new ExtentReports(System.getProperty("user.dir") + "/HtmlReport/index.html", true);

	public void setup() throws IOException {
				System.getProperty("user.dir") + "/driver-servers/chromedriver.exe");
		driver = new ChromeDriver();
		appUrl = "";

	public void testApp_1() throws IOException {
		try {
			// Start test. Mention test script name
			test = reports.startTest("test1", "Validate Page Navigation");


			// Launch URL
			test.log(LogStatus.INFO, "Application is launched");

			// Validate Home page title
			Assert.assertEquals(driver.getTitle(), "Automate Apps | Way to learn Automation");
			// Print log info in HTML report
			test.log(LogStatus.INFO, "Home Page Title Validated");

			// Clicking on Contents tab
			// Validating Contents Page title
			Assert.assertEquals(driver.getTitle(), "Contents  Automate Apps");
			// Print log info in HTML report
			test.log(LogStatus.INFO, "Contens Page Title Validated");

		} catch (Throwable t) {
			// Print fail info in HTML report
			test.log(LogStatus.FAIL, t.getMessage());
			String screenShotPath = System.getProperty("user.dir") + "/HtmlReport/Failure.png";
			// Take screen shot of page
			takeScreenShot(driver, screenShotPath);

			// Attach screen shot in HTML report
			test.log(LogStatus.INFO, "Snapshot below: " + test.addScreenCapture(screenShotPath));
			Assert.assertTrue(false, t.getMessage());



	public void tearDown() {
		// Ending Test

		// writing everything into HTML report

	public void clearingSetup() {
		// Quitting browser

	public void takeScreenShot(WebDriver driver, String filePath) {
		File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
		try {
			FileUtils.copyFile(scrFile, new File(filePath));
		} catch (IOException e) {

When you execute the above program, it will fail at following line :


Now go to HtmlReport Folder in your project and open index.html file where you will see the script logs along with screen shot and lot of other details.



Refer Extent Report documentation for more information !!!

If you really like the information provided above, please don’t forget to like us on Facebook, you can also leave the comment.

Leave a Reply

Your email address will not be published. Required fields are marked *