Releases: reqnroll/Reqnroll
v3.3.0 - 2025-12-17
Improvements:
- NUnit dependencies are updated to v4.4.0 in templates. This does not impact Reqnroll compatibility. (#846)
- Formatters: configured OutputFilePath may now contain variable substitution parameters for build metadata, timestamp, and environment variables. See https://docs.reqnroll.net/latest/installation/formatter-configuration.html#available-substitution-variables for details. (#930)
- Improved packaging of Reqnroll NuGet packages (#914)
- Improved up-to-date checking for feature files that results in faster builds. As part of this the code-behind files are deleted on clean or rebuild. (#941)
- Support for storing the code-behind files in the intermediate output folder (obj folder) by setting the
ReqnrollUseIntermediateOutputPathForCodeBehindMSBuild property totrue. (#947) - Support for linked feature files (files used from outside of the project folder). To use this feature, the
ReqnrollUseIntermediateOutputPathForCodeBehindflag must be enabled (see above). (#948) - Updated TUnit integration to support TUnit v1.3.25 and .NET 10 SDK compatibility (#918)
- Updated Cucumber.HtmlFormatter to version 22 to support HTML reports on non-https URLs (#962)
- Updated Cucumber.Messages to version 30 (#962)
- NotImplementedException thrown by the tests is no longer treated as a "pending" outcome (reverting to v2 behavior). (#954)
Bug fixes:
- Fix: Error during build "System.TypeLoadException: Method 'DisposeAsync' in type 'System.Text.Json.Utf8JsonWriter" (partial fix for some occurrences) (#921, #914)
- Fix: The configuration setting
generator/addNonParallelizableMarkerForTagsdoes not work for xUnit 3 (#917) - Fix: Improve error handling in OnTestRunEnd when test runners are still executing (#957)
Contributors of this release (in alphabetical order): @304NotModified, @AdaskoTheBeAsT, @clrudolphi, @Code-Grump, @copilot, @gasparnagy, @markk-df, @obligaron
v3.2.1 - 2025-11-07
Bug fixes:
- Fix: AfterScenario hook is not called when a scenario end in inconclusive or skipped status (#883, #900)
- Fix: Feature-level tags are not generating MSTest TestCategory attributes for scenarios (#910)
Contributors of this release (in alphabetical order): @clrudolphi, @PaysPlat
v3.2.0 - 2025-10-21
Improvements:
- Step definition snippets (aka, skeletons) can be generated as async methods by setting
treace/stepDefinitionSkeletonStyletoAsyncCucumberExpressionAttributeorAsyncRegexAttribute. (#876) - Added Support for MsTest v4 (#703, #889, #894, #896)
Bug fixes:
Contributors of this release (in alphabetical order): @clrudolphi, @Code-Grump, @gasparnagy, @kant2002
v3.1.2 - 2025-10-07
Bug fixes:
- Fix: MsTest: Friendly names are generated for scenario outline examples, even if
generator/disableFriendlyTestNamesis set to true, causing a Reqnroll v2 compatiblility issue (#867) - Fix: Performance issue caused by the fix #862 in v3.1.0 (#874)
Contributors of this release (in alphabetical order): @clrudolphi, @konarx
v3.1.1 - 2025-09-29
v3.1.0 - 2025-09-26
New features:
- Added xUnit 3 support. In order to use Reqnroll with xUnit v3, you need to use the
Reqnroll.xunit.v3package. (#405, #538) - Disabling parallel execution with the
addNonParallelizableMarkerForTagsefature now also applies to scenario-level tags for frameworks supporting method-level isolation (NUnit, MsTest V2, TUnit). (#826) - Generating "friendly names" for generated test methods by default can be disabled by the
generator/disableFriendlyTestNamessetting inreqnroll.json. This can help to avoid compatiblity issues with tools like VsTest retry. For MsTest this setting restores the behavior of Reqnroll v2. (#854)
Improvements:
- Reqnroll.Verify: Support for Verify v29+ (Verify.Xunit v29.0.0 or later). For earlier versions use 3.0.3 version of the plugin that is compatible with Reqnroll v3.*. The support for custom snapshot files with global VerifySettings has been removed, see plugin documentation for details and workarounds. (#572)
- Dependencies: Updated to Cucumber Gherkin v35, Cucumber Messages v29 and Cucumber CompatibilityKit v23 (#841)
- Improved
Reqnroll.Tools.MsBuild.GenerationNuGet package: reduced size by optimizing included dependencies, consolidated MsBuild assets (#812)
Bug fixes:
- Fix: Formatters: Test execution fails when formatters were disabled due to a generation error (#861)
- Fix: Exceptions from before scenario plugin hook events (RuntimePluginTestExecutionLifecycleEvents.BeforeScenario) are not shown (#856)
- Fix: Before scenario hooks are not raised immediately when
runtime/stopAtFirstErroris true, but handled delayed (#857) - Fix: Dry Run mode doesn't work properly if the project contains hooks that register & inject custom dependencies (#862)
Contributors of this release (in alphabetical order): @chekkan, @Code-Grump, @DrEsteban, @gasparnagy, @konarx
v3.0.3 - 2025-09-17
Improvements:
- Formatters: Enchanced logging of exception information when file-based formatters throw exceptions (#842)
Bug fixes:
- Fix: Step execution improperly handles error flows when
runtime/stopAtFirstErroris true, resulting in skipped step events and hence invalid reports (#819)
Contributors of this release (in alphabetical order): @clrudolplhi
v3.0.2 - 2025-09-08
Bug fixes:
- Fix: Unnecessary build output messages are shown during build (#815)
Contributors of this release (in alphabetical order): @gasparnagy
v3.0.1 - 2025-09-05
Bug fixes:
- Fix: Formatters: Formatters fail under .NET Framework when OutputFilePath is not configured (#797)
- Fix: Formatters: Build URL is invalid in HTML report for Azure DevOps builds (#795)
- Fix: Build fails with "error CS8103: Combined length of user strings used by the program exceeds allowed limit." when a project contains many long feature files. (#785)
- Fix: Embedded feature file resource generates different resource names in Windows/Linux (#799)
- Fix: Formatters: The Build Info banner of HTML reports shows UNKNOWN banner when the Build Server cannot be determined (#800)
- Fix: Formatters: Success flag in
TestRunFinishedCucumber message is set to true when before/after test run hook fails (Cucumber/Cucumber-compatibility-Kit v21.0.0) (#801)
Contributors of this release (in alphabetical order): @gasparnagy, @clrudolphi
v3.0.0 - 2025-08-21
New features:
- Formatters: An infrastructure for implementing integrated reporting formatters has been introduced. The infrastructure allows writing custom formatters, but Reqnroll provides two built-in formatters as well: the HTML and Message formatters. (#233)
- HTML Formatter: A formatter that can produce single page HTML reports using the Cucumber React components. This formatter can be used as a replacement for the "SpecFlow+ LivingDoc Generator"
- Message Formatter: A formatter that can produce Cucumber Messages
.ndjsonfile. Cucumber messages contain all information about the test run, therefore this formatter can be used to integrate Reqnroll with other tools.
- Support for TUnit test framework. Use the package
Reqnroll.TUnitin a TUnit project to enable Reqnroll TUnit support. Can be used with TUnit v0.55.23 and later. (#442) - Allow test execution without invoking binding (step definition, hook, step argument transformation) code by setting the
REQNROLL_DRY_RUNenvironment variable totrue. This is useful for quickly verifying if all steps have been defined. (#614)
Improvements:
- Added
RuleInfotoScenarioContextto provide information about the current rule (#454) - Assist: Added
VerifyCaseInsensitiveflag toInstanceCreationOptionsthat allows for case-insensitive member verification when object instances are created from tables (#577) - Renamed
Regexproperty andregexconstructor parameter for all step definition attributes toExpressionandexpression, as it represents a cucumber expression or a regular expression (regex) that matches the step text. (#639) - Added
ExpressionTypeoption (CucumberExpression/RegularExpression) to[Given],[When]and[Then]attributes (#663) - Use scenario names for generated MsTest tests instead of the method name (#588)
- Ensure that the runtime plugins are loaded in an alphabetic order based on file name on Unix-based platforms. (#519)
- Warnings can be logged during test generation (build) to indicate potential issues (#624)
- Upgrade to Gherkin v34 from v30 (see Gherkin changelog) (#489)
- Improved test feature context and feature hook handling for non-parallel or class-parallel scenarios where the scenarios of the feature are not executed in sequence (#638)
- Introduced a new
BuildMetadataclass to encapsulate CI metadata properties such asProductName,BuildUrl,BuildNumber,Remote,Revision,Branch, andTag. These will be used to populate data in reports (e.g. html and message formatter). (#658) - Updated Reqnroll project template to add TUnit test framework support, to remove EOL .NET versions (6.0, 7.0), and to add .NET 9.0 support (#701)
- Allow detecting skipped or pending execution status by the unit test providers, treat
NotImplementedExceptionas "pending" (#732) - Allow
ScenarioContext,FeatureContextandTestThreadContextto be resolved or injected through their interfaces, e.g.IScenarioContext(#761) - Updated step definition template that is shown on test output when an undefined step is executed by using
PendingStepExceptionandIReqnrollOutputHelper. (#781) - Improved performance of test execution by optimizing telemetry sending (#629)
Improvements for plugins:
- Refactored
ExecutionEventclasses and event publishing. Events carry more context information; publication is now async. (#621) - Provide
AsyncEventHandlerinRuntimePluginTestExecutionLifecycleEvents(#634)
Bug fixes:
- Fix: Exception in an
AfterFeaturehook causes the next first test failure in the next feature (#597) - Fix: Disposed
ObjectContainercan be accessed throughRegisterInstanceAs/RegisterFactoryAs/RegisterTypeAs(#594) - Fix: Namespace clash in generated files if no
RootNamespaceis defined in the project file (#633) - Fix: Missing source link and deterministic compilation for
Reqnroll.CustomPluginpackage (#719) - Fix: Rule tags are not generated as test categories (#731)
Deprecations:
- The synchronous test runner API (
ISyncTestRunner) has been removed. Please useITestRunnerinstead. - The synchronous code invocation API (
IBindingInvoker) has been deprecated. Please useIAsyncBindingInvokerinstead. - Removed obsolete property
ScenarioInfo.ScenarioAndFeatureTags. Please useScenarioInfo.CombinedTagsinstead. - Removed obsolete methods on
Reqnroll.Assist.Serviceclass:RegisterValueComparer,UnregisterValueComparer,RegisterValueRetriever,UnregisterValueRetrieveruseValueComparers.Register,ValueComparers.Unregister,ValueRetrievers.Register,ValueRetrievers.Unregisterinstead. - The methods
ScenarioContext.PendingandScenarioContext.StepIsPendinghave been deprecated and going to be removed in v4. Usethrow new PendingStepException()instead. - Removed unused
Cultureproperty from step definition attributes (Given,When,Then,StepDefinition) (#671) - Removed
[Serializable]from Reqnroll exceptions (#738) - Removed support for end-of-life .NET frameworks (.NET 6, .NET 7, .NET Core) (#706)
- Removed deprecated
<summary>from NuGet packages (#766)
Breaking changes:
- Renamed
Regexproperty andregexconstructor parameter for all step definition attributes toExpressionandexpression, as it represents a cucumber expression or a regular expression (regex) that matches the step text. (#639) - Removed unused
Cultureproperty from step definition attributes (Given,When,Then,StepDefinition) (#671) - Use scenario names for generated MsTest tests instead of the method name (#588)
- The method names generated by Reqnroll for scenario outlines have changed: an additional parameter
__pickleIndexinserted before theexampleTagsparameter to the position one before last. The pickle index corresponds to the index of the executable tests (scenarios or scenario outline examples) within the feature file, starting from0. The parameter contains the string formatted version of the index.
Contributors of this release (in alphabetical order): @304NotModified, @AdaskoTheBeAsT, @algirdasN, @clrudolphi, @DrEsteban, @gasparnagy, @loraderon, @obligaron