Git Product home page Git Product logo

cucumberextentreporter's Introduction

Cucumber Extent Reporter

This tool helps you to generate the custom cucumber-jvm report using ExtentReports plugin.

The ExtentReports plugin is developed by Anshoo Arora. This is one of the best reporting plugin available for testing world. This plugin can be used with any Test Apis.

Build Status

Build Status

Usage

If you are using a maven based project, you can directly add this library as a dependency:

<dependency>
    <groupId>com.vimalselvam</groupId>
    <artifactId>cucumber-extentsreport</artifactId>
    <version>3.0.2</version>
</dependency>

Please note that Java 8+ and adding the dependency of ExtentReport v3.1.1+ is mandatory.

I've been receiving queries often that the extent report class not found. As I mentioned in my last statement, you will have to explicitly add ExtentReport as a maven dependency. To do that, paste the following in your pom.xml:

<dependency>
    <groupId>com.aventstack</groupId>
    <artifactId>extentreports</artifactId>
    <version>3.1.1</version>
</dependency>

If you are not using maven, download the jar from here.

Release Notes

For more details, look at Changelog.

Getting Started

Runner Class example:

Create a runner class and add the com.cucumber.listener.ExtentCucumberFormatter:output/report.html as a plugin followed by the report file as input (optional parameter).

A sample example is shown below:

package com.cucumber.runner;

import com.cucumber.listener.Reporter;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.AfterClass;
import org.junit.runner.RunWith;

import java.io.File;

/**
 * A sample test to demonstrate
 */
@RunWith(Cucumber.class)
@CucumberOptions(
    features = {"src/test/resources/features"},
    glue = {"com.cucumber.stepdefinitions"},
    plugin = {"com.cucumber.listener.ExtentCucumberFormatter:output/report.html"}
)
public class RunCukesTest {
    @AfterClass
    public static void teardown() {
        Reporter.loadXMLConfig(new File("src/test/resources/extent-config.xml"));
        Reporter.setSystemInfo("user", System.getProperty("user.name"));
        Reporter.setSystemInfo("os", "Mac OSX");
        Reporter.setTestRunnerOutput("Sample test runner output message");
    }
}

The above setup will generate the report in output directory with the name of report.html. There are 3 ways to configure the report location:

  • As shown above, pass the report file path along with com.cucumber.listener.ExtentCucumberFormatter:

  • If in case you want a dynamic location, you can leave the file path parameter empty while configuring the plugin. For example: plugin = {"com.cucumber.listener.ExtentCucumberFormatter:"} This will generate the report file in the location output/Run_<Current Time Stamp>/report.html.

  • You can also configure the report location by using ExtentProperties enum as follows. Leave the plugin configuration empty, and configure the report location in your @BeforeClass method:

    plugin = {"com.cucumber.listener.ExtentCucumberFormatter:"}
    ......
    ......
    @BeforeClass
    public static void setup() {
        ExtentProperties extentProperties = ExtentProperties.INSTANCE;
        extentProperties.setReportPath("output/myreport.html");
    }

The above example shows a JUnit runner. However, you can use the TestNG runner too. Refer more examples here. Also make sure the loadXMLConfig, setSystemInfo and setTestRunnerOutput methods should be in your @AfterClass method.

Setting up ExtentX

The current release added a support for ExtentX. The results of your execution can be sent to ExtentX dashboard.

The ExtentX configurations can be set up using ExtentProperties enum as follows:

plugin = {"com.cucumber.listener.ExtentCucumberFormatter:"}
......
......
@BeforeClass
public static void setup() {
    ExtentProperties extentProperties = ExtentProperties.INSTANCE;
    extentProperties.setReportPath("output/myreport.html");
    extentProperties.setExtentXServerUrl("http://localhost:1337");
    extentProperties.setProjectName("MyProject");
}

You can either setup ExtentX in your local / remote machine using:

Setting up Klov

The current release added a support for Klov. The results of your execution can be sent to Klov dashboard.

The Klov configurations can be set up using ExtentProperties enum as follows:

plugin = {"com.cucumber.listener.ExtentCucumberFormatter:"}
......
......
@BeforeClass
public static void setup() {
    ExtentProperties extentProperties = ExtentProperties.INSTANCE;
    extentProperties.setKlovServerUrl("http://localhost");
    // specify project
    // ! you must specify a project, other a "Default project will be used"
    extentProperties.setKlovProjectName("MyProject");
    // you must specify a reportName otherwise a default timestamp will be used
    extentProperties.setKlovReportName("TestReport");
    
    // Mongo DB Configuration
    extentProperties.setMongodbHost("localhost");
    extentProperties.setMongodbPort("27017");
    extentProperties.setMongodbDatabase("klov");
    
    // If mongo Db is running in Authentication mode provide username and password 
    extentProperties.setMongodbUsername("username");
    extentProperties.setMongodbPassword("password");
}

You can set up Klov on local using: Klov Demo

Logging

User can add logs at any step and those logs will be captured and attached to the corresponding step. The log should be added as follows:

Reporter.addStepLog("Step Log message goes here");

In case any log to be added at the scenario level, the following can be done:

Reporter.addScenarioLog("Scenario Log message goes here");

Adding screenshot / screen cast

The screenshot or screen cast can be added from any of the step as follows. Please note that the plugin will not take the screenshot, instead it helps you to attach the screenshot file which should be already available in the mentioned path. If you are looking for on how to take the screenshot using Selenium, please refer this:

Reporter.addScreenCaptureFromPath("absolute screenshot path");
Reporter.addScreenCastFromPath("absolute screen cast path");

Assigning Authors to the Scenario

You can assign authors to the scenario using Reporter.assignAuthor("author1", "author2", ...);.

Ideally this should be added at the hooks level. For example, the following sample shows how to assign author to a particular scenario using Before hook:

@Before
public void beforeScenario(Scenario scenario) {
    if (scenario.getName().equals("Some scenario name")) {
        Reporter.assignAuthor("Author1");
    }
}

Demo

Report

Fore more details, kindly visit http://www.vimalselvam.com/cucumber-extent-reporter/.

cucumberextentreporter's People

Contributors

email2vimalraj avatar anshooarora avatar msingh3 avatar misl avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.