Getting Started
extentreports-cucumber4-adapter
does all the heavy-lifting for you and can output information. Continue reading for more details.
Download
Start using the Cucumber4 adapter for Extent Framework by adding the dependency below.
Maven
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports-cucumber4-adapter</artifactId>
<version>${version}</version>
</dependency>
If you are using the professional version and would like to add the extentreports
dependency from systemPath:
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports-cucumber4-adapter</artifactId>
<version>${version}</version>
</dependency>
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
<version>${version}</version>
<scope>system</scope>
<systemPath>/usr/extentreports-${version}.jar</systemPath>
</dependency>
If the above does not work, you can exclude the extentreports
dependency from the adapter and explicitly add the depedency from systemPath:
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports-cucumber4-adapter</artifactId>
<version>${version}</version>
<exclusions>
<exclusion>
<groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
<version>${version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
<version>${version}</version>
<scope>system</scope>
<systemPath>/usr/extentreports-${version}.jar</systemPath>
</dependency>
Gradle
dependencies {
compile "com.aventstack:extentreports-cucumber4-adapter:${version}"
}
GitHub
extentreports-cucumber4-adapter
Usage
To begin using the adapter, add the com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter
plugin to the runner.
@RunWith(Cucumber.class)
@CucumberOptions(plugin = {"com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:"})
public class RunCukesTest {
// ..
}
Adding Reporters
Reporters can be added using an external properties file or System.setProperty()
.
Properties
The Extent-TestNG listener looks for the following file in your classpath:extent.properties
The properties files have 3 core components where ${name}
is the name of the reporter (avent, bdd, logger, email etc.):
extent.reporter.${name}.start
: [true/false] used to indicate the listener whether the reporter will be usedextent.reporter.${name}.config
: [path of the config file] path of the reporter configuration.xml (Note: Klov uses a properties configuration). Reporter's XML configuration can be found in the reporter's docs under Configuration/XML.extent.reporter.${name}.out
: [output path] path where the report will be stored (Note: Klov does not use this key as no files are written to disk)
Initialization Properties
Below are the comprehensive properties to intialize reporters:
#extent.properties
extent.reporter.avent.start=true
extent.reporter.bdd.start=true
extent.reporter.cards.start=true
extent.reporter.email.start=true
extent.reporter.html.start=true
extent.reporter.klov.start=true
extent.reporter.logger.start=true
extent.reporter.tabular.start=true
extent.reporter.avent.config=avent-config.xml
extent.reporter.bdd.config=bdd-config.xml
extent.reporter.cards.config=cards-config.xml
extent.reporter.html.config=html-config.xml
extent.reporter.klov.config=klov.properties
extent.reporter.logger.config=logger-config.xml
extent.reporter.tabular.config=tabular-config.xml
extent.reporter.avent.out=test-output/AventReport/
extent.reporter.bdd.out=test-output/BddReport/
extent.reporter.cards.out=test-output/CardsReport/
extent.reporter.email.out=test-output/EmailReport/ExtentEmail.html
extent.reporter.html.out=test-output/HtmlReport/ExtentHtml.html
extent.reporter.logger.out=test-output/LoggerReport/
extent.reporter.tabular.out=test-output/TabularReport/
If you use only the Avent reporter, your property file would now look like:
#extent.properties
extent.reporter.avent.start=true
extent.reporter.avent.config=avent-config.xml
extent.reporter.avent.out=test-output/AventReport/
If you use Avent with Klov, your property file would now look like:
#extent.properties
extent.reporter.avent.start=true
extent.reporter.avent.config=avent-config.xml
extent.reporter.avent.out=test-output/AventReport/
extent.reporter.klov.start=true
extent.reporter.klov.config=klov.properties
System.setProperty()
It is possible to start reporters, provide configuration and output values through the use of System.setProperty("k", "v");
. The keys as described in Initialization Properties section define the context which can be used with System.setProperty
also.
If you are using System.setProperty()
, make sure extent.properties
is not in your classpath. These properties file are loaded by default causing configuration clashes with the supplied System settings.
public class SomeTestClass extends SomeBaseClass {
static {
System.setProperty("extent.reporter.avent.start", "true");
System.setProperty("extent.reporter.avent.config", "avent-config.xml");
System.setProperty("extent.reporter.avent.out", "test-output/AventReport/");
System.setProperty("extent.reporter.klov.start", "true");
System.setProperty("extent.reporter.klov.config", "klov.properties");
}
// .. tests
}
or directly in your BaseClass:
public abstract class SomeBaseClass {
static {
System.setProperty("extent.reporter.avent.start", "true");
System.setProperty("extent.reporter.avent.config", "avent-config.xml");
System.setProperty("extent.reporter.avent.out", "test-output/AventReport/");
System.setProperty("extent.reporter.klov.start", "true");
System.setProperty("extent.reporter.klov.config", "klov.properties");
}
// .. some code
}
Changelog
Version 4.0.0
Released on September 30, 2018
Initial