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 totrue
. This is useful for quickly verifying if all steps have been defined. (#614)
Improvements:
- Added
RuleInfo
toScenarioContext
to provide information about the current rule (#454) - Assist: Added
VerifyCaseInsensitive
flag toInstanceCreationOptions
that allows for case-insensitive member verification when object instances are created from tables (#577) - Renamed
Regex
property andregex
constructor parameter for all step definition attributes toExpression
andexpression
, 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 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
NotImplementedException
as "pending" (#732) - Allow
ScenarioContext
,FeatureContext
andTestThreadContext
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
andIReqnrollOutputHelper
. (#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
inRuntimePluginTestExecutionLifecycleEvents
(#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 throughRegisterInstanceAs
/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 useITestRunner
instead. - The synchronous code invocation API (
IBindingInvoker
) has been deprecated. Please useIAsyncBindingInvoker
instead. - Removed obsolete property
ScenarioInfo.ScenarioAndFeatureTags
. Please useScenarioInfo.CombinedTags
instead. - Removed obsolete methods on
Reqnroll.Assist.Service
class:RegisterValueComparer
,UnregisterValueComparer
,RegisterValueRetriever
,UnregisterValueRetriever
useValueComparers.Register
,ValueComparers.Unregister
,ValueRetrievers.Register
,ValueRetrievers.Unregister
instead. - The methods
ScenarioContext.Pending
andScenarioContext.StepIsPending
have been deprecated and going to be removed in v4. Usethrow 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 andregex
constructor parameter for all step definition attributes toExpression
andexpression
, 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)
Contributors of this release (in alphabetical order): @304NotModified, @AdaskoTheBeAsT, @algirdasN, @clrudolphi, @DrEsteban, @gasparnagy, @loraderon, @obligaron