Adieu Extent Report: Bienvenue ChainTest for Next-Level Automation Reporting
Updated: May 12, 2025
Introduction
Indeed, it's the buzz around town: Extent reports are being phased out. Automation testing techniques are evolving to meet the increasing demands, and the Extent Reporting Library for Java is being discontinued.Therefore, there will be no new releases or fixes. Chain Test is the successor to Extent Report
Flashback
A long-time favourite, Extent Reports is/was an open-source reporting library useful for test automation. Its ability to easily integrate with major testing frameworks to produce detailed HTML logs has made it a popular reporting tool among the automation community.
Why ExtentReport is Deprecated?
With increasing demand for reporting capabilities in terms of flexibility, scalability, and reporting analytics, the author of Extent Report (Anshoo Arora) came up with a design to address the limitations of ExtentReports. Therefore, a new era of reporting framework, ChainTest, is emerging.
Depreciation note from the author for Extent Report
Github repo for ChainTest Framework :
How is it different from ExtentReport?
ChainTest, though in its developing stage, has tried to work out things more comprehensively and compactly by using templates and inbuilt listener support. The limitations of ExtentReport that have been addressed by ChainTest are
Real-time Analytics: Provides improved insights into test executions for quicker decision-making.
Enhanced Integration: Seamlessly integrates with modern CI/CD tools like Jenkins and GitLab.
Scalability: Capably manages large-scale test suites, making it suitable for enterprise-level applications.
Extensibility: Features a modular architecture, enabling teams to customize and expand functionality as required.
Historical Data Tracking: Allows viewing of performance trends and run results across various builds.
Docker-Enabled Setup: ChainTest can be set up using Docker. The Chain LP server can be launched by pulling the Docker image.
Simple Configuration: ChainTest configuration is straightforward by setting up the chaintest.properties file. Users can define project names, server URLs, and report options through the UI.
𝐂𝐡𝐚𝐢𝐧 𝐓𝐞𝐬𝐭 𝐑𝐞𝐩𝐨𝐫𝐭
This comprehensive report offers three types of reports:
𝟏. 𝐒𝐢𝐦𝐩𝐥𝐞 (𝐒𝐭𝐚𝐭𝐢𝐜): Comparable to the spark report in Extent, it produces a 𝐬𝐭𝐚𝐭𝐢𝐜 𝐡𝐭𝐦𝐥 report.
𝟐. 𝐄𝐦𝐚𝐢𝐥 𝐟𝐨𝐫𝐦𝐚𝐭 𝐑𝐞𝐩𝐨𝐫𝐭: Chain Test provides a brief Email format Report.
𝟑. 𝐂𝐡𝐚𝐢𝐧 𝐋𝐏 𝐑𝐞𝐩𝐨𝐫𝐭: It employs 𝐂𝐥𝐢𝐞𝐧𝐭 𝐬𝐞𝐫𝐯𝐞𝐫 architecture for real-time report tracking. This allows for monitoring (History) of 𝐦𝐮𝐥𝐭𝐢𝐩𝐥𝐞 𝐛𝐮𝐢𝐥𝐝𝐬 and can serve as a 𝐒𝐢𝐧𝐠𝐥𝐞 𝐃𝐚𝐬𝐡𝐛𝐨𝐚𝐫𝐝 𝐟𝐨𝐫 𝐌𝐮𝐥𝐭𝐢𝐩𝐥𝐞 𝐏𝐫𝐨𝐣𝐞𝐜𝐭𝐬 within an Organization. The b𝐚𝐜𝐤𝐞𝐧𝐝 (Server) of the chain test report is based on Spring Boot, and the f𝐫𝐨𝐧𝐭𝐄𝐧𝐝 (Client) is based on Angular. To set up the server, the developer of 𝐂𝐡𝐚𝐢𝐧𝐓𝐞𝐬𝐭 has provided a Docker image containing both the Server and Client. By using a 𝐝𝐨𝐜𝐤𝐞𝐫 𝐜𝐨𝐦𝐩𝐨𝐬𝐞 𝐟𝐢𝐥𝐞, we can establish this server and utilize it as a Dashboard to view Reports.
Lets see how to generate chain test report in a BDD and TestNG framework in the following sections.
How to generate chain test report for cucumber BDD framework?
The recommended way to run ChainLP is with docker-compose. For testing purposes, we have used H2, which is an open-source, Java-based relational database management system (RDBMS) that is known for its lightweight and in-memory capabilities.
Step 1:
Git clone the repository of chaintest.
Step 2:
Navigate to folder docker
cd chaintest/chainlp/docker
Step 3:
Install Docker Desktop on your computer by downloading it. You can use this link to assist with installing Docker on MAC/Windows. https://docs.docker.com/desktop/setup/install/mac-install/
Launch Docker Desktop to initiate the Docker engine. Run command docker compose "docker compose -f docker-compose-h2.yml up" to spin the container being on the path 'chaintest/chainlp/docker' .
Docker-compose is a tool provided by Docker that allows you to define and manage multi-container Docker applications. With docker-compose, you can use a YAML file (usually named docker-compose.yml) to configure your application’s services. This YAML file specifies the services, networks, and volumes that make up the application, and you can then create and start all of the services from your configuration using a single command.
Step 4:
Launch your browser and go to http://localhost (or the specified port). At first, no project details will be visible, but after completing up to step 8, you will begin to see the project details .
An example screenshot of the url

Step 5 :
Add the chain test cucumber jvm dependencies in the pom xml .Freemarker is added to avoid the conflict with extent report dependencies.
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>chaintest-cucumber-jvm</artifactId>
<version>1.0.10</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.33</version>
</dependency>
Step 6:
Add chaintest.properties to your classpath, example: src/test/resources/chaintest.properties
Set the default value to true for the following fields to generate the report, as shown below.
chaintest.generator.chainlp.enabled=true
chaintest.generator.simple.enabled=true
chaintest.generator.email.enabled=true
You can enter your project name in the field as shown below
chaintest.project.name=Quality Questers DSAlgo BDD
An example screenshot of the chaintest properties

Step 7:
You can enable listeners by adding "com.aventstack.chaintest.plugins.ChainTestCucumberListener:" to the runner class
Listeners added to the testrunner class

Step 8:
Run your test with maven test. The console log will contain the debug logs for the chaintest listeners.
An example screenshot of the console output sample
INFO] Scanning for projects...
[INFO]
[INFO] [1m-----------< [0;36mDSALGO_QualityQuesters:DSALGO_QualityQuesters[0;1m >------------[m
[INFO] [1mBuilding DSALGO_QualityQuesters 0.0.1-SNAPSHOT[m
[INFO] from pom.xml
[36mDSALGO_QualityQuesters[0;1m ---[m
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 1 resource from src/main/resources to target/classes
[INFO] Using auto detected provider org.apache.maven.surefire.testng.TestNGProvider
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running [1mTestSuite[m
11:21:31.988 [main] DEBUG c.a.c.service.ChainPluginService - Found configuration entry chaintest.generator.email.enabled, will use chaintest.generator.email.class-name to resolve class
11:21:31.991 [main] DEBUG c.a.c.service.ChainPluginService - Found configuration entry chaintest.generator.chainlp.enabled, will use chaintest.generator.chainlp.class-name to resolve class
11:21:31.991 [main] DEBUG c.a.c.service.ChainPluginService - Found configuration entry chaintest.generator.simple.enabled, will use chaintest.generator.simple.class-name to resolve class
11:21:31.992 [main] DEBUG c.a.c.generator.FileGenerator - Loading template index.ftl for class class com.aventstack.chaintest.generator.ChainTestEmailGenerator with basePackagePath email/
11:21:32.238 [main] DEBUG c.a.chaintest.http.HttpRetryHandler - Creating HttpRetryHandler instance for 3 retry attempts
11:21:32.266 [main] DEBUG c.a.c.http.ChainTestApiClient - Created request for entity Build with body:
11:21:32.531 [main] DEBUG c.a.c.generator.FileGenerator - Loading template index.ftl for class class com.aventstack.chaintest.generator.ChainTestSimpleGenerator with basePackagePath simple
ChainTest report for BDD

How to generate chain test report for TestNG framework?
Adhere to the identical procedure for chain test report creation from Step 1 to Step 4 from the section below
Step 5:
Add the chain test TestNG dependencies in the pom xml (note that remove your extend report dependencies for cucumber from the pom since chain test and extent both are not supported together).If you wish to have extent report as well then add the free marker dependencies as well to run with noth extent and chain test dependencies on the pom xml.
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>chaintest-testng</artifactId>
<version>1.0.10</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.33</version>
</dependency>
Step 6:
1.. Add chaintest.properties to your classpath, example: src/test/resources/chaintest.properties
An example screenshot of chaintest properties

Step 7 :
You can enable listners in 2 ways.
Include ChainTestListener in the @Listeners annotation of your Base test class
Add the listeners to the testng.xml
Listners added to the base class

Listeners added to the testng xml

Step 8:
Execute your test as a Maven test.
Chaintest report for TestNG

An example screenshot details for failed test cases shown in the build metrics

A sample screenshot illustrating the option to filter build results by a date range

How to include a screenshot for failed test cases in a chain test report for the TestNG framework?
In Simple Generator, screenshots are saved locally in the 𝐜𝐡𝐚𝐢𝐧𝐭𝐞𝐬𝐭/𝐫𝐞𝐬𝐨𝐮𝐫𝐜𝐞𝐬 directory, allowing Simple Report to reference them effortlessly.Attaching screenshots for failed test cases is accomplished by utilizing the 'embed' method from the class 'ChainTestListener'. This method is used to embed screenshots of failed test cases into the reports during testing. Adding logs can be accomplished by the method 'log' from the class 'ChainTestListener'.The log method can be used to log messages or data during the execution of your tests or operations.
The following steps outline how to attach screenshots for failed test cases and include chaintest logs for those failed cases.
Step 1:
Create a listener class as shown below

Step2:
Add the created listener to the @Listeners annotation along with the chaintestlistener and run you test.

You can find your html reports in the folder target/chaintest after the test run


Note: Chaintest report is in development face you can lookout for issues and enhancements they are working on in 'https://github.com/anshooarora/chaintest/issues'
Happy reading!


