Skip to content

Releases: reqnroll/Reqnroll

v3.3.0 - 2025-12-17

17 Dec 14:24

Choose a tag to compare

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 ReqnrollUseIntermediateOutputPathForCodeBehind MSBuild property to true. (#947)
  • Support for linked feature files (files used from outside of the project folder). To use this feature, the ReqnrollUseIntermediateOutputPathForCodeBehind flag 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/addNonParallelizableMarkerForTags does 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

07 Nov 16:23

Choose a tag to compare

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

21 Oct 16:50
3183204

Choose a tag to compare

Improvements:

  • Step definition snippets (aka, skeletons) can be generated as async methods by setting treace/stepDefinitionSkeletonStyle to AsyncCucumberExpressionAttribute or AsyncRegexAttribute. (#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

07 Oct 15:06

Choose a tag to compare

Bug fixes:

  • Fix: MsTest: Friendly names are generated for scenario outline examples, even if generator/disableFriendlyTestNames is 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

29 Sep 14:13
8be7741

Choose a tag to compare

Improvements:

Bug fixes:

  • Fix: Mismatch in Cucumber.HtmlFormatter version between package and project causing build warnings (#868)

Contributors of this release (in alphabetical order): @jdb0123

v3.1.0 - 2025-09-26

26 Sep 13:47

Choose a tag to compare

New features:

  • Added xUnit 3 support. In order to use Reqnroll with xUnit v3, you need to use the Reqnroll.xunit.v3 package. (#405, #538)
  • Disabling parallel execution with the addNonParallelizableMarkerForTags efature 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/disableFriendlyTestNames setting in reqnroll.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.Generation NuGet 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/stopAtFirstError is 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

17 Sep 12:49

Choose a tag to compare

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/stopAtFirstError is 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

08 Sep 17:14
ef2c4c0

Choose a tag to compare

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

05 Sep 09:49

Choose a tag to compare

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 TestRunFinished Cucumber 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

21 Aug 21:57

Choose a tag to compare

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 .ndjson file. 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.TUnit in 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_RUN environment variable to true. This is useful for quickly verifying if all steps have been defined. (#614)

Improvements:

  • Added RuleInfo to ScenarioContext to provide information about the current rule (#454)
  • Assist: Added VerifyCaseInsensitive flag to InstanceCreationOptions that allows for case-insensitive member verification when object instances are created from tables (#577)
  • Renamed Regex property and regex constructor parameter for all step definition attributes to Expression and expression, as it represents a cucumber expression or a regular expression (regex) that matches the step text. (#639)
  • Added ExpressionType option (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 BuildMetadata class to encapsulate CI metadata properties such as ProductName, BuildUrl, BuildNumber, Remote, Revision, Branch, and Tag. 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 NotImplementedException as "pending" (#732)
  • Allow ScenarioContext, FeatureContext and TestThreadContext to 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 PendingStepException and IReqnrollOutputHelper. (#781)
  • Improved performance of test execution by optimizing telemetry sending (#629)

Improvements for plugins:

  • Refactored ExecutionEvent classes and event publishing. Events carry more context information; publication is now async. (#621)
  • Provide AsyncEventHandler in RuntimePluginTestExecutionLifecycleEvents (#634)

Bug fixes:

  • Fix: Exception in an AfterFeature hook causes the next first test failure in the next feature (#597)
  • Fix: Disposed ObjectContainer can be accessed through RegisterInstanceAs/RegisterFactoryAs/RegisterTypeAs (#594)
  • Fix: Namespace clash in generated files if no RootNamespace is defined in the project file (#633)
  • Fix: Missing source link and deterministic compilation for Reqnroll.CustomPlugin package (#719)
  • Fix: Rule tags are not generated as test categories (#731)

Deprecations:

  • The synchronous test runner API (ISyncTestRunner) has been removed. Please use ITestRunner instead.
  • The synchronous code invocation API (IBindingInvoker) has been deprecated. Please use IAsyncBindingInvoker instead.
  • Removed obsolete property ScenarioInfo.ScenarioAndFeatureTags. Please use ScenarioInfo.CombinedTags instead.
  • Removed obsolete methods on Reqnroll.Assist.Service class: RegisterValueComparer, UnregisterValueComparer, RegisterValueRetriever, UnregisterValueRetriever use ValueComparers.Register, ValueComparers.Unregister, ValueRetrievers.Register, ValueRetrievers.Unregister instead.
  • The methods ScenarioContext.Pending and ScenarioContext.StepIsPending have been deprecated and going to be removed in v4. Use throw new PendingStepException() instead.
  • Removed unused Culture property 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 Regex property and regex constructor parameter for all step definition attributes to Expression and expression, as it represents a cucumber expression or a regular expression (regex) that matches the step text. (#639)
  • Removed unused Culture property 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 __pickleIndex inserted before the exampleTags parameter 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 from 0. 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