Reputation: 31
I have a complex problem, please read - I wanted to run the extent report with my framework which is created using cucumber, testng and java.
I am running the testng file to run the test class file which will eventually run the @CucumberOptions and features added in it.
My test class is extended with AbstractTestNGCucumberTests to support testng with cucumber.
Now everything is working fine. basic testng report is getting generated. note : I am running some tests parallel and they are also working fine.
Now i wanted to implement the extent report in my framework. Can you tell me how to do it using plugin which which add the logs same as the cucumber statement added in the feature file.
ps : I have gone through some link which shows me how to run the extent report with junit using @AfterClass, but how to use this with testng.
What I have tried -
libraries used - com.aventstack --> extentreports and com.vimalselvam --> cucumber-extentsreport
Error - cucumber.runtime.CucumberException: Couldn't load plugin class: com.vimalselvam.cucumber.ExtentCucumberFormatter
used plugin - plugin = {"com.vimalselvam.cucumber.ExtentCucumberFormatter:output/report.html"}
and code added under @AfterTest is : Reporter.loadXMLConfig(new File("xml path")
PLEASE HELP !!! I wanted to generate extent report which will also support parallel execution.
Upvotes: 1
Views: 3764
Reputation: 1
For me it worked by adding following two dependencies in pom.xml
file.
<dependency>
<groupId>tech.grasshopper</groupId>
<artifactId>extentreports-cucumber7-adapter</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.36</version>
<scope>provided</scope>
</dependency>
Modified my TestRunner.java
@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resources", monochrome = true, glue = {
"stepdefinitions", "config" }, plugin = {
"pretty",
"json:target/cucumber-report.json", "html:target/Test_Report.html",
"com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:" }, tags = "@Smoke")
public class TestRunner {
}
Added extent.properties
in src/test/resources
extent.reporter.avent.start=true
extent.reporter.bdd.start=true
extent.reporter.cards.start=false
extent.reporter.email.start=true
extent.reporter.html.start=true
extent.reporter.klov.start=false
extent.reporter.logger.start=false
extent.reporter.tabular.start=false
extent.reporter.pdf.start=true
extent.reporter.spark.start=true
extent.reporter.avent.config=src/test/resources/report-configs/avent-config.xml
extent.reporter.bdd.config=src/test/resources/report-configs/bdd-config.xml
extent.reporter.cards.config=
extent.reporter.email.config=src/test/resources/report-configs/email-config.xml
extent.reporter.html.config=src/test/resources/report-configs/html-config.xml
extent.reporter.klov.config=
extent.reporter.logger.config=
extent.reporter.tabular.config=
extent.reporter.spark.config=src/test/resources/report-configs/spark-config.xml
extent.reporter.avent.out=test-results/AventReport/JioID_UI_Test_Report.html
extent.reporter.bdd.out=test-results/BddReport/JioID_UI_Test_Report.html
extent.reporter.cards.out=test-results/CardsReport/
extent.reporter.email.out=test-resultst/EmailReport/JioID_UI_Test_Report.html
extent.reporter.html.out=test-results/HtmlReport/JioID_UI_Test_Report.html
extent.reporter.spark.out=test-results/SparkReport/JioID_UI_Test_Report.html
extent.reporter.logger.out=test-results/LoggerReport/
extent.reporter.tabular.out=test-results/TabularReport/
extent.reporter.pdf.out=test-results/PDFReport/JioID_UI_Test_Report.pdf
Created report-configs
folder under src/test/resources
folder and added below config files (Look for xml configuration on respective pages) Make sure the paths match extent.properties file
, you can keep config files in src/test/resources in that case change the paths in extent.properties
avent-config.xml https://extentreports.com/docs/versions/4/net/avent-reporter.html
bdd-config.xml https://extentreports.com/docs/versions/4/java/bdd-reporter.html
email-config.xml https://extentreports.com/docs/versions/4/java/email-reporter.html
spark-config.xml https://extentreports.com/docs/versions/4/java/spark-reporter.html
html-config.xml https://extentreports.com/docs/versions/4/net/html-reporter.html
Upvotes: 0
Reputation: 1938
I assume you are using cucumber-extentsreport.*.jar as dependency. You must specify the extent properties @beforesuite method. ExtentProperties extentProperties = ExtentProperties.INSTANCE; extentProperties.setReportPath();
you will also need to add plugin - com.cucumber.listener.ExtentCucumberFormatter:
Upvotes: 0
Reputation: 1996
If you want to run test cases in parallel and want to have stable extent report, please go for cucumber 4.x.x version and there are 2 ways of implementing extent report in Cucumber
1. Using Cucumber-JVM 4 adapter for Extent Framework(extentreports-cucumber4-adapter) & below are the steps to implement - (Beauty - You do not need to write any code any where to generate report this way except from setting adapter in runner below)
Add adapter dependency under POM.XML
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports-cucumber4-adapter</artifactId>
<version>1.0.6</version>
</dependency>
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 {
// ..
}
Report Output Directory - ../Project Directory/test-output/HtmlReport
2. Adding aventstack dependency under POM.XML
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
<version>3.1.5</version>
</dependency>
In this workflow, Do not Add the com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter plugin to the runner.
Upvotes: 2