Pages

Sunday, June 21, 2015

How to make custom listener class for selenium webdriver. This listener class will attach screen shot to the test NG report when ever there is failure













package ri.customListener;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.Reporter;
import ri.testBase.TestBase;


public class listener extends TestBase implements ITestListener {
private long time;

@Override
public void onFinish(ITestContext itr) {
// TODO Auto-generated method stub
long time = System.currentTimeMillis();
Reporter.log(itr.getClass() + "--test finished");
}

@Override
public void onStart(ITestContext itr) {
// TODO Auto-generated method stub
Reporter.log(itr.getClass() + "--test started");
}

@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult itr) {
// TODO Auto-generated method stub

}

@Override
public void onTestFailure(ITestResult result) {
if (!result.isSuccess()) {
String failureImageFileName = new SimpleDateFormat(
"MM-dd-yyyy_HH-ss").format(new GregorianCalendar()
.getTime())
+ ".png";
File scrFile = ((TakesScreenshot) driver)
.getScreenshotAs(OutputType.FILE);
try {
FileUtils.copyFile(scrFile, new File(failureImageFileName));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

String userDirector = System.getProperty("user.dir") + "/";
Reporter.log("<a href=\"" + userDirector + failureImageFileName
+ "\"><img src=\"file:///" + userDirector
+ failureImageFileName + "\" alt=\"\""
+ "height='100' width='100'/> " + "<br />");
Reporter.setCurrentTestResult(null);

}
}

@Override
public void onTestSkipped(ITestResult itr) {
// TODO Auto-generated method stub

}

@Override
public void onTestStart(ITestResult itr) {
// TODO Auto-generated method stub

}

@Override
public void onTestSuccess(ITestResult itr) {
// TODO Auto-generated method stub

}

}





Below is Test NG suit file configuration



<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Test suite">
<!-- Default suite -->
<listeners>
<listener class-name="ri.customListener.listener" />
</listeners>
<test name="Regression test" verbose="2">
<classes>
<class name="ri.testCases.LoginTest" />
</classes>
</test>
<!-- Default test -->
</suite>

No comments:

Post a Comment