Pages

Tuesday, February 11, 2014

Custom Listener code in selenium webdriver that will add screen shot to testng report on failure

package TTT;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
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.openqa.selenium.WebDriver;
import org.testng.ITestContext;
import org.testng.ITestResult;
import org.testng.Reporter;
import org.testng.TestListenerAdapter;

public class CustomListener extends TestListenerAdapter{
    private int m_count = 0;
    public static WebDriver driver;
 
    @Override
public void onStart(ITestContext tr) {
    log(tr.getName()+ "--Test started\n");
   

}
 
 
     @Override
public void onFinish(ITestContext tr) {
    log(tr.getName()+ "--Test finished\n");

}

    @Override
    public void onTestFailure(ITestResult result) {
    System.out.println("result" + result);
       String methodName = result.getName();
       System.out.println(methodName);
            System.out.println(result.isSuccess());
       if (!result.isSuccess()) {
           String failureImageFileName =  new SimpleDateFormat("MM-dd-yyyy_HH-ss").format(new GregorianCalendar().getTime())+ ".png";
           File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
           System.out.println("afet this");
           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 tr) {
        log(tr.getName()+ "--Test method skipped\n");
        Reporter.log("<font color = GREEN > Test skipped </font>");
    }

    @Override
    public void onTestSuccess(ITestResult tr) {
        log(tr.getName()+ "--Test method success\n");
        Reporter.log("<font color = RED > Test success </font>");
    }

    private void log(String string) {
        System.out.print(string);
        if (++m_count % 40 == 0) {
   System.out.println("");
        }
    }

 

}


XML--------------------

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Simple Logger Suite">
 <listeners>
    <listener class-name="TTT.CustomListener" />
  </listeners>
  <test name="Tiger">
    <classes>
      <class name="WebDriver.Test1" />
    </classes>
  </test>
</suite>

No comments:

Post a Comment