reporting.java ( iam mentioned ) code is ---> package com.internetbanking.utilities;
//Listener class used to generate Extent reports
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.testng.ITestContext;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;
import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.Status;
import com.aventstack.extentreports.markuputils.ExtentColor;
import com.aventstack.extentreports.markuputils.MarkupHelper;
import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
//import com.aventstack.extentreports.reporter.configuration.ChartLocation;
import com.aventstack.extentreports.reporter.configuration.Theme;
public class Reporting extends TestListenerAdapter
{
public ExtentHtmlReporter htmlReporter;
public ExtentReports extent;
public ExtentTest logger;
public void onStart(ITestContext testContext)
{
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());//time stamp
String repName="Test-Report-"+timeStamp+".html";
htmlReporter=new ExtentHtmlReporter(System.getProperty("user.dir")+ "/test-output/"+repName);//specify location of the report
htmlReporter.loadXMLConfig(System.getProperty("user.dir")+ "/extent-config.xml");
extent=new ExtentReports();
extent.attachReporter(htmlReporter);
extent.setSystemInfo("Host name","localhost");
extent.setSystemInfo("Environemnt","QA");
extent.setSystemInfo("user","nagesh");
htmlReporter.config().setDocumentTitle("InetBanking Test Project"); // Tile of report
htmlReporter.config().setReportName("Functional Test Automation Report"); // name of the report
//htmlReporter.config().setTestViewChartLocation(ChartLocation.TOP); //location of the chart
htmlReporter.config().setTheme(Theme.DARK);
}
public void onTestSuccess(ITestResult tr)
{
logger=extent.createTest(tr.getName()); // create new entry in th report
logger.log(Status.PASS,MarkupHelper.createLabel(tr.getName(),ExtentColor.GREEN)); // send the passed information to the report with GREEN color highlighted
}
public void onTestFailure(ITestResult tr)
{
logger=extent.createTest(tr.getName()); // create new entry in th report
logger.log(Status.FAIL,MarkupHelper.createLabel(tr.getName(),ExtentColor.RED)); // send the passed information to the report with GREEN color highlighted
String screenshotPath=System.getProperty("user.dir")+"\\Screenshots\\"+tr.getName()+".png";
File f = new File(screenshotPath);
if(f.exists())
{
try {
logger.fail("Screenshot is below:" + logger.addScreenCaptureFromPath(screenshotPath));
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
public void onTestSkipped(ITestResult tr)
{
logger=extent.createTest(tr.getName()); // create new entry in th report
logger.log(Status.SKIP,MarkupHelper.createLabel(tr.getName(),ExtentColor.ORANGE));
}
public void onFinish(ITestContext testContext)
{
extent.flush();
}
}
-----------------------------------------------------------------
how to use this code my project this class Above code in genert Extents reports
package com.internetbanking.testcases;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;
import com.internetbanking.utilities.ReadConfig;
public class basesclass {
//static ExtentTest test;
public ExtentReports extent;
public ExtentTest test;
//static ExtentReports report;
ReadConfig readconfig=new ReadConfig();
public String baseURL=readconfig.getApplicationURL();
public String username=readconfig.getUsername();
public String password=readconfig.getPassword();
public static WebDriver driver;
public static Logger logger;
@Parameters("browser")
@BeforeClass
public void setup(String br) throws IOException
{
logger = Logger.getLogger("ebanking");
PropertyConfigurator.configure("Log4j.properties");
//System.setProperty("webdriver.chrome.driver",readconfig.getChromePath());
//driver=new ChromeDriver();
if(br.equals("chrome"))
{
System.setProperty("webdriver.chrome.driver",readconfig.getChromePath());
driver=new ChromeDriver();
}
else if(br.equals("firefox"))
{
System.setProperty("webdriver.gecko.driver",readconfig.getFirefoxPath());
driver = new FirefoxDriver();
}
else if(br.equals("ie"))
{
System.setProperty("webdriver.ie.driver",readconfig.getIEPath());
driver = new InternetExplorerDriver();
}
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.get(baseURL);
logger.info("usernametext box&password text &Forgotpassword textbox& button ");
if(driver.findElement(By.xpath("//input[@id='user_name']")).isDisplayed()||driver.findElement(By.xpath("//input[@id='password']")).isDisplayed()||driver.findElement(By.xpath("//a[@class='forgot']")).isDisplayed()||driver.findElement(By.xpath("//button[@type='submit']")).isDisplayed() )
{
Assert.assertTrue(true);
logger.info("username,password,forgot password, button is displayed");
}
else
{
captureScreen(driver, br);
Assert.assertTrue(false);
logger.info("username,password,forgot password, button is not displayed");
}
logger.info("usernametext box&password text &Forgotpassword textbox& button displayed ");
// Logger logger = Logger.getLogger("ebanking");
//PropertyConfigurator.configure("Log4j.properties");
}
@AfterClass
public void tearDown()
{
driver.quit();
}
public void captureScreen(WebDriver driver, String tname) throws IOException {
TakesScreenshot ts = (TakesScreenshot) driver;
File source = ts.getScreenshotAs(OutputType.FILE);
File target = new File(System.getProperty("user.dir") + "/Screenshots/" + tname + ".png");
FileUtils.copyFile(source, target);
System.out.println("Screenshot taken");
}
}
------------------------------------------------------------------------------------------------------------------------------
Some website saying we can this way
import org.testng.Assert;
import org.testng.ITestResult;
import org.testng.SkipException;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.Status;
import com.aventstack.extentreports.markuputils.ExtentColor;
import com.aventstack.extentreports.markuputils.MarkupHelper;
import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
import com.aventstack.extentreports.reporter.configuration.ChartLocation;
import com.aventstack.extentreports.reporter.configuration.Theme;
public class ExtentReportsClassVersion3{
ExtentHtmlReporter htmlReporter;
ExtentReports extent;
ExtentTest logger;
@BeforeTest
public void startReport(){
htmlReporter = new ExtentHtmlReporter(System.getProperty("user.dir") +"/test-output/STMExtentReport.html");
extent = new ExtentReports ();
extent.attachReporter(htmlReporter);
extent.setSystemInfo("Host Name", "SoftwareTestingMaterial");
extent.setSystemInfo("Environment", "Automation Testing");
extent.setSystemInfo("User Name", "Rajkumar SM");
htmlReporter.config().setDocumentTitle("Title of the Report Comes here");
htmlReporter.config().setReportName("Name of the Report Comes here");
htmlReporter.config().setTestViewChartLocation(ChartLocation.TOP);
htmlReporter.config().setTheme(Theme.STANDARD);
}
@Test
public void passTest(){
logger = extent.createTest("passTest");
Assert.assertTrue(true);
logger.log(Status.PASS, MarkupHelper.createLabel("Test Case Passed is passTest", ExtentColor.GREEN));
}
@Test
public void failTest(){
logger = extent.createTest("failTest");
Assert.assertTrue(false);
logger.log(Status.PASS, "Test Case (failTest) Status is passed");
logger.log(Status.PASS, MarkupHelper.createLabel("Test Case (failTest) Status is passed", ExtentColor.GREEN));
}
@Test
public void skipTest(){
logger = extent.createTest("skipTest");
throw new SkipException("Skipping - This is not ready for testing ");
}
@AfterMethod
public void getResult(ITestResult result){
if(result.getStatus() == ITestResult.FAILURE){
//logger.log(Status.FAIL, "Test Case Failed is "+result.getName());
//MarkupHelper is used to display the output in different colors
logger.log(Status.FAIL, MarkupHelper.createLabel(result.getName() + " - Test Case Failed", ExtentColor.RED));
logger.log(Status.FAIL, MarkupHelper.createLabel(result.getThrowable() + " - Test Case Failed", ExtentColor.RED));
}else if(result.getStatus() == ITestResult.SKIP){
//logger.log(Status.SKIP, "Test Case Skipped is "+result.getName());
logger.log(Status.SKIP, MarkupHelper.createLabel(result.getName() + " - Test Case Skipped", ExtentColor.ORANGE));
}
}
@AfterTest
public void endReport(){
extent.flush();
}
}
----------------------------------------------------------------------------------------------------------------------
This code is same class mention website
-------------------------------------------------------------------------------------------------------------------------------------
Any one please help me how to generate report used reportings mention each testcase it is diffcult ,how to use please help