Everyone appreciates reports that are comprehensive and easy to understand, especially when analyzing and troubleshooting issues. In my search for a tool that gives me both, I discovered ChainTest Report, developed by Anshu Arora. As I explored it, I found it addresses many common challenges that testing professionals have encountered throughout their careers. The ability to organize and present test results in a clear, actionable manner was a huge reason for me to transition away from traditional tools.
ChainTest has met our evolving requirements very effectively and has helped us manage the ever-increasing pace and demands of modern software development practices. In this blog, I'll introduce you to what ChainTest is, and provide detailed setup instructions for ChainLP.
What is a ChainTest generator?
The ChainTest generator is the core component of the Chain Test Report system, responsible for translating raw test data into user-friendly, structured reports. Its primary role is to process various templates based on predefined configurations and generate test reports in the desired format. The generator works seamlessly to organize and display critical test information in a way that is easily interpretable by both technical and non-technical stakeholders.
This automated report generation reduces manual efforts, ensures consistency in reporting, and speeds up the process of delivering insights. The generator can handle different resources and configurations, offering flexibility in adapting to various testing environments and organizational needs.
How to enable ChainTest generators?
Currently, Java unit test frameworks are supported for the ChainTest generator. Organizations that rely on Java-based frameworks can easily enable the generator to begin producing insightful reports. The process of enabling the generator is straightforward and involves configuring properties files located within the classpath of the project.
For teams using JUnit5, Cucumber-JVM, or TestNG, the setup process is simple, making it easy for QA engineers to leverage the full capabilities of the ChainTest generator. By just adding the relevant configuration to the properties files, teams can immediately start generating reports that capture key test data from their frameworks.
This seamless integration with popular Java testing frameworks ensures businesses can incorporate ChainTest reporting into their existing testing practices without the need for complex setups or extensive retraining of teams.
Supported ChainTest frameworks
The ChainTest Report supports the following widely adopted Java-based testing frameworks:
- JUnit5: A powerful and flexible testing framework that provides a rich set of features for unit testing in Java applications. JUnit5 is known for its simplicity, support for parallel test execution, and detailed test reporting capabilities.
- Cucumber-JVM: A popular framework for Behavior-Driven Development (BDD) testing, Cucumber allows non-technical stakeholders to define test cases in plain English while ensuring that the system behavior meets those specifications. Chain Test’s support for Cucumber-JVM ensures that BDD testing results are efficiently reported and easily interpretable.
- TestNG: A versatile testing framework inspired by JUnit but with added functionalities like parallel test execution, data-driven testing, and enhanced reporting. Chain Test integrates with TestNG, ensuring that its rich feature set can be leveraged for better test management and reporting.
What is ChainLP?
ChainLP, named in homage to the classic LP (Long Playing) records, is a framework component that serves the crucial role of offering historical analytics within the ChainTest suite. It is a server-based solution built on Java (Spring) and includes a frontend developed with Angular. To make deployment seamless, ChainLP is distributed as a Docker image, providing flexibility and simplicity for teams to get started with minimal configuration.
Unlike simple test reporting tools, ChainLP allows users to access historical data, making it ideal for teams who need to track trends, understand test execution over time, and correlate various data points to uncover patterns in software behavior. It empowers businesses to make more informed decisions based on a comprehensive view of their testing history.
Key features of ChainLP
- Docker-based deployment: ChainLP is packaged as a Docker image, which simplifies the setup process. Developers and QA engineers can easily deploy the tool within their existing environments using Docker, with minimal overhead.
- Supports multiple databases: ChainLP can integrate with multiple Relational Database Management Systems (RDBMS). It supports:
- H2: Ideal for quick testing and development environments. However, it is not recommended for production use due to performance limitations.
- MySQL: A robust and widely used open-source database solution that offers scalability for larger datasets.
- PostgreSQL: A highly reliable and scalable RDBMS solution, perfect for more complex environments requiring high performance and data integrity.
- Historical analytics: The standout feature of ChainLP is its ability to store and analyze historical test data. This is invaluable for tracking progress, understanding recurring test failures, and identifying trends that might otherwise go unnoticed. Over time, as more test executions accumulate, the insights generated by ChainLP become even more powerful.
- Easy configuration and setup: ChainLP is designed for ease of use, with configuration settings that can be adjusted in chaintest.properties. The project name and other configurations are simple to modify, ensuring that it fits into any testing pipeline smoothly.
Is Docker required for all ChainTest reports?
• Docker is not needed for the static reports (SimpleGenerator, EmailGenerator)
• Docker is needed to host ChainLP because only is available as a Docker image
Steps for setting up ChainLP
To get started with ChainLP, follow these steps to deploy the server and integrate it with your testing workflow. ChainLP is distributed as a Docker image, and the recommended way to run it is using docker-compose, which simplifies container management and orchestration.
Step 1: Clone the repository
To begin, clone the ChainTest repository from GitHub to get the required Docker files and configurations.
Step 2: Choose your database
ChainLP supports different databases for storing historical data. Depending on your use case, choose the appropriate Docker Compose configuration for the desired database.
Docker image is available from here: https://github.com/anshooarora/chaintest/tree/main/chainlp/docker
The recommended way to run ChainLP is with docker-compose.
For H2 (Quick Testing):

H2 is quick to set up and ideal for testing purposes. However, it is not recommended for production.
For MySQL:

What do these commands do?
It will pull the given image, and it will start the container. Inside the container they have hosted a Springboot application, once the spring boot application is up and running you can check on the browser localhost:80 will give you the server is up and running. You can check it on the browser.

Step 3: Configuration
After the server is up and running, you need to configure the ChainTest plugin to point to the ChainLP server. This allows the ChainTest framework to connect to ChainLP over TCP, enabling it to send data and receive historical analytics.
Create a chaintest.properties file under resources. In the chaintest.properties configuration file, add the following:

Implementation in codebase:
Now let's move to codebase. Here we have considered a simple JAVA based testng Maven project. In the pom.xml file we need to add the dependencies like selenium, testng also needs to add the chaintest dependencies. It is officially listed on the maven centralised repository.



After clicking on Project Name, it shows the build details. User can search the build number or build name in the search bar.



What are the advantages of ChainTest report?
Here the benefits of ChainTest reports:
- Enhanced flexibility: Unlike traditional reporting tools, Chain Test Report offers superior flexibility in terms of customization and integration with different testing frameworks. This means testers can adapt the reporting structure to suit their specific project requirements.
- Comprehensive insights: The Chain Test Report provides a holistic view of test results, breaking down complex information into easy-to-understand reports. It offers detailed insights into test execution, which helps developers and testers to quickly identify and resolve issues.
- Real-time test execution tracking: With real-time tracking capabilities, Chain Test Report allows teams to monitor the progress of their test executions, providing an up-to-date overview of testing status at any given time.
- Scalability: Built with scalability in mind, the Chain Test Report is capable of handling large volumes of test data without compromising performance. This makes it an ideal choice for projects with large test suites.
- Better integration with CI/CD pipelines: Chain Test Report integrates seamlessly with Continuous Integration and Continuous Deployment (CI/CD) pipelines, enhancing the automation and efficiency of the testing process.
- User-friendly interface: The report generation process is streamlined with an intuitive, user-friendly interface, making it easier for teams to generate, interpret, and share reports.
As companies look for more sophisticated and robust reporting solutions, ChainTest Report is quickly becoming a preferred choice, replacing outdated traditional tools.