Could you please suggest, how can we do it. Below is my listener class which extends ExtentReporter.
package test.Listener;
import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.Status;
import generic.BaseTest;
import generic.ExtentReporterNG;
import generic.GenericUtils;
public class Listeners extends BaseTest implements ITestListener {
ExtentTest test;
ExtentReports extent = ExtentReporterNG.getReportObject();
//ExtentReports extent = ExtentReporterNG.getReportObject();
@Override
public void onTestStart(ITestResult result) {
test= extent.createTest(result.getMethod().getMethodName());
}
@Override
public void onTestSuccess(ITestResult result)
{
test.log(Status.PASS,"Test Passed");
}
@Override
public void onTestFailure(ITestResult result)
{
test.fail(result.getThrowable());
try {
driver = (WebDriver) result.getTestClass().getRealClass().getField("driver")
.get(result.getInstance());
} catch (Exception e1) {
e1.printStackTrace();
}
String filePath="null";
try {
filePath = getScreenshot(result.getMethod().getMethodName(),driver);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
test.addScreenCaptureFromPath(filePath, result.getMethod().getMethodName());
}
@Override
public void onTestSkipped(ITestResult result)
{
{
test.skip(result.getThrowable());
try {
driver = (WebDriver) result.getTestClass().getRealClass().getField("driver")
.get(result.getInstance());
} catch (Exception e1) {
e1.printStackTrace();
}
String filePath="null";
try {
filePath = getScreenshot(result.getMethod().getMethodName(),driver);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
test.addScreenCaptureFromPath(filePath, result.getMethod().getMethodName());
}
}
@Override
public void onStart(ITestContext context)
{
}
@Override
public void onFinish(ITestContext context)
{
extent.flush();
}
}