package com.aventstack.extentreports.common; import org.testng.ITestContext; import org.testng.ITestListener; import org.testng.ITestResult; import com.aventstack.extentreports.ExtentReports; import com.aventstack.extentreports.ExtentTest; public class ExtentTestNGITestListener implements ITestListener { private static ExtentReports extent = ExtentManager.createInstance("test-output/ITestListener.html"); private static ThreadLocal<ExtentTest> parentTest = new ThreadLocal<ExtentTest>(); private static ThreadLocal<ExtentTest> test = new ThreadLocal<ExtentTest>(); @Override public synchronized void onStart(ITestContext context) { ExtentTest parent = extent.createTest(getClass().getName()); parentTest.set(parent); } @Override public synchronized void onFinish(ITestContext context) { extent.flush(); } @Override public synchronized void onTestStart(ITestResult result) { ExtentTest child = parentTest.get().createNode(result.getMethod().getMethodName()); test.set(child); } @Override public synchronized void onTestSuccess(ITestResult result) { test.get().pass("Test passed"); } @Override public synchronized void onTestFailure(ITestResult result) { test.get().fail(result.getThrowable()); } @Override public synchronized void onTestSkipped(ITestResult result) { test.get().skip(result.getThrowable()); } @Override public synchronized void onTestFailedButWithinSuccessPercentage(ITestResult result) { } }