Skip to content

Commit 159773d

Browse files
committed
News: Roadmap update: HTML report comes next
1 parent 6f92b9f commit 159773d

File tree

3 files changed

+91
-0
lines changed

3 files changed

+91
-0
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
---
2+
layout: post
3+
title: "Roadmap update: HTML report comes next"
4+
date: 2025-06-09
5+
categories: News
6+
tags: Release Roadmap LivingDoc
7+
image: assets/images/2025/reqnroll_html_report_header.webp
8+
image_caption: "HTML report generated by Reqnroll Cucumber Messages PR"
9+
image_caption_style: "color: var(--wp--preset--color--body)"
10+
author: gasparnagy
11+
---
12+
13+
We released the last update for our V2 line in April, and then jumped into preparing for the next major release: V3. On this occasion, I would like to share some updates on our roadmap and some good news about the HTML report.
14+
15+
## TL;DR
16+
17+
Native HTML report generation is coming in V3! This will work out of the box, without additional conversion tools, and will be free and open source!
18+
19+
## V2 was about test execution
20+
21+
The V2 versions of Reqnroll focused on stabilizing the Reqnroll codebase and the test execution workflow. The SpecFlow codebase [was forked at version v4-beta](2024-02-08-from-specflow-to-reqnroll-why-and-how.md). That version was never officially released and therefore was only used by a few SpecFlow projects. It contained many changes, especially related to asynchronous execution of tests. This was a significant change affecting many aspects of execution, and because it was only tried by a limited set of users, it was not "battle tested." We could say that Reqnroll V2 is the "proper SpecFlow v4" release.
22+
23+
Another important and outstanding need that we inherited from SpecFlow was to clean up the execution workflow. Probably the most notable element of that was supporting test-level parallelization, but in the background we also had to redesign the entire resource handling, hook execution, and error handling infrastructure.
24+
25+
## V3 is about SpecFlow ecosystem parity
26+
27+
Users have seen the SpecFlow ecosystem as a homogeneous set of frameworks and supporting tools that consisted of the SpecFlow core framework, the Visual Studio and Rider extensions, the SpecFlow plugins, and the SpecFlow+ toolset — particularly the SpecFlow+ LivingDoc Generator. In reality, each of these parts and tools has its own story, and most importantly, the SpecFlow+ toolset was never open source, so we could not fork it as we did with the other assets.
28+
29+
This has been a pain point for many users, because LivingDoc Generator was the go-to tool for generating nice HTML reports about their specifications and execution results. And we could not take that over.
30+
31+
Although there are alternative solutions for generating HTML reports (notably [Allure Report](https://allurereport.org/), one of the most popular open-source reporting tools, which was one of the first to integrate with Reqnroll), we felt that we needed to provide a built-in solution as well.
32+
33+
Our strategy has been to adopt the concept of "Cucumber Messages" from the Cucumber tool family. Cucumber Messages is basically a standardized file format that can capture all execution details of a BDD framework, including step or hook executions and attachments. Our idea was that if we were able to provide a Cucumber Messages report, we would open up visualization possibilities that have already been available to Cucumber tools. We cannot talk about this feature without mentioning [Chris Rudolphi](https://github.com/clrudolphi), who made an incredible effort to bring this strategy to reality. Thank you, Chris!
34+
35+
While V3 will contain many other interesting updates, most importantly, it will include the first version of our native Reqnroll HTML report generation! With this step, we will finally reach parity with the SpecFlow ecosystem.
36+
37+
## Reqnroll HTML Report
38+
39+
While this is still in the beta phase, I would like to share some details about Reqnroll HTML report generation. The beta phase in this case means that the code has been implemented and is working, but we are in the middle of the review process and making some small fixes.
40+
41+
As mentioned above, our strategy was to be able to produce Cucumber Messages so that we could use existing tooling to turn that into HTML. We were aware of the [Cucumber React Components](https://github.com/cucumber/react-components) project, which provides HTML visualization for Cucumber Messages, but in the end, we found another important open-source component, [Cucumber HTML Formatter](https://github.com/cucumber/html-formatter/), which provides an end-to-end wrapper for producing a complete HTML report from Cucumber Messages. Exactly what we needed!
42+
43+
Have you heard of "Cucumber Formatters"? That is a feature and extensibility point in Cucumber tools that can be used to produce reports, outputs, or other results in a specific format. Since Cucumber started as a command-line tool, the concept of formatters has existed there for a long time — basically, when you executed Cucumber, it was a formatter that produced the console output and another formatter that generated the test result JSON file. As SpecFlow/Reqnroll has been executed by the .NET test execution hosts (e.g., `dotnet test` or *Visual Studio Test Explorer*), we had not implemented this particular concept before.
44+
45+
During the implementation of the Cucumber Messages output, we realized that what we were doing was essentially the same as what Cucumber calls "formatters," so we (better to say Chris) reframed our solution and implemented the formatter concept from Cucumber into Reqnroll.
46+
47+
And if we have formatters in Reqnroll, then we can implement the Cucumber Messages output as one formatter and the HTML output as another! That means we will not need any additional tool to convert Cucumber Messages to HTML (as was needed for "SpecFlow+ LivingDoc Generator"), but it will generate the HTML file out of the box! Yes, even if you run the tests from Visual Studio!
48+
49+
It is important to mention that all parts of the HTML generation toolchain (Reqnroll, formatters, Cucumber HTML formatter, Cucumber React Components) are free and open source.
50+
51+
The formatter concept has two important characteristics that make it even more appealing for Reqnroll:
52+
1. You can register multiple formatters. If you need to have both Cucumber Messages and an HTML report, you can register both!
53+
2. You can write your own formatter if you need a customized report or output format! This is all integrated into the Reqnroll Plugin infrastructure.
54+
55+
Currently, the Cucumber Messages and HTML formatters will be packaged with Reqnroll, so these can be used out of the box. Later, we might extend the set of formatters (built-in or as plugins), and I'm pretty sure there will be formatters from the community as well.
56+
57+
To use the formatters, you simply need to add a `formatters` setting to your `reqnroll.json` config file (you can also enable it with environment variables). With the current beta, this is how a sample config file looks that produces both HTML and Cucumber Messages reports:
58+
59+
```
60+
{
61+
"$schema": "https://schemas.reqnroll.net/reqnroll-config-latest.json",
62+
"formatters": {
63+
"html": {
64+
"outputFilePath": "report/reqnroll_report.html"
65+
},
66+
"messages": {
67+
"outputFilePath": "messages/reqnroll_report.ndjson"
68+
}
69+
}
70+
}
71+
```
72+
73+
This is how the report looks for a Calculator example. Pretty!
74+
75+
{% include figure.html url="/assets/images/2025/reqnroll_html_report.webp" alt="HTML report generated by Reqnroll Cucumber Messages PR" description="HTML report generated by Reqnroll Cucumber Messages PR" %}
76+
77+
## V4 is about structural changes
78+
79+
After V3, we will not stop, but continue with further structural changes that will hopefully make everyone's life easier. We have plans to consolidate the [dependency injection support plugins](https://github.com/orgs/reqnroll/discussions/472), the configuration infrastructure, and we also plan to use the Roslyn infrastructure to improve the overall workflow.
80+
81+
For V4, we will also review the range of different targets we support and deprecate those that require high maintenance costs and are not broadly used. The support for adding feature files to VB.NET projects is one candidate for deprecation.
82+
83+
*.NET Framework 4.8* is currently being used by [almost 10% of projects](2025-06-06-monthly-stats-2025-05.md), so we will need to provide support for that, but we still have to decide what is the best approach. To support *.NET Framework*, we need to keep the codebase at *.NET Standard 2.0* compatibility and cannot utilize features provided by *.NET 5* and later frameworks.
84+
85+
## TUnit and xUnit V3 support coming too
86+
87+
There are also two new unit test frameworks we plan to support: TUnit and xUnit V3. As these are additional features and not breaking changes, they can probably be included as updates for V3.
88+
89+
## Your feedback counts
90+
91+
Thank you for reading through this long post. Please share your ideas in the [Reqnroll Discussion Board](https://github.com/orgs/reqnroll/discussions/categories/ideas) or on our [Discord server](https://go.reqnroll.net/discord-invite).
47.4 KB
Loading
35.9 KB
Loading

0 commit comments

Comments
 (0)