Atata 1.3.0 is released with aggregate (multiple) assertion functionality.
Changelog
New Features
- minor
#299 Add 2 extra
Warnmethods toILogManager - minor
#300 Add 2 extra
Warnmethods toReport<TOwner> - minor
#303 Add
ResolveComponentFullNamemethod toUIComponentResolver - minor
#304 Add
AssertionResultsproperty toAtataContext - major #305 Aggregate (multiple) assertion functionality
- major
#306 Add
FindByAltAttribute - major
#307 Add
ImageInput<TOwner>control - major
#308 Add
ImageInput<TNavigateTo, TOwner>control - minor
#310 Add
Forproperty toLabel<T, TOwner>
Changes and Enhancements
- minor
#297 Add and use
InvokeStaticAsLambdaextension methods forMethodInfo - minor
#298 Add and use
InvokeAsLambdaextension methods forMethodInfo - minor
#309 Add extra constructor to
ScreenshotAttribute - minor
#311 Support
VerifyTitleSettingsAttributeat more metadata levels
Aggregate Assertion
Aggregate (multiple) assertion functionality was added to allow execution of several Should.* assertions,
collect the failed results and produce a single exception containing a set of failed assertions.
Each failed assertion in scope of aggregate assert is also written to log.
2 strategies/approaches of aggregate assertion were implement:
- Native - default Atata approach. Should be used when you don’t use NUnit with Atata.
- NUnit - uses
Assert.Multipleand other related methods of NUnit to provide an NUnit’s assertion handling.
Custom approach can also be implemented by implementing IAggregateAssertionStrategy.
Usage
New AggregateAssert methods were added to PageObject<TOwner> and AtataContext.
Aggregate Assert Page Object
Go.To<SomeUserPage>()
.AggregateAssert(x => x
.ContactDetails.FirstName.Should.Equal("John")
.ContactDetails.LastName.Should.Equal("Smith"));
Or:
Go.To<SomeUserPage>()
.AggregateAssert(x =>
{
x.ContactDetails.FirstName.Should.Equal("John");
x.ContactDetails.LastName.Should.Equal("Smith");
});
Aggregate Assert Component
Go.To<SomeUserPage>()
.AggregateAssert(x => x.ContactDetails, x =>
{
x.FirstName.Should.Equal("John");
x.LastName.Should.Equal("Smith");
});
Aggregate Assert Block
AtataContext.Current.AggregateAssert(() =>
{
Go.To<SomeUserPage>()
.ContactDetails.FirstName.Should.Equal("John")
.ContactDetails.LastName.Should.Equal("Smith");
// Do other assertions...
});
Configuration
The following methods are added to AtataContextBuilder for configuring aggregate assertion functionality:
public AtataContextBuilder UseAggregateAssertionExceptionType(Type exceptionType);
public AtataContextBuilder UseAggregateAssertionExceptionType<TException>()
where TException : Exception;
public AtataContextBuilder UseAggregateAssertionStrategy(IAggregateAssertionStrategy strategy);
public AtataContextBuilder UseAggregateAssertionStrategy<TAggregateAssertionStrategy>()
where TAggregateAssertionStrategy : IAggregateAssertionStrategy, new();
public AtataContextBuilder UseNUnitAggregateAssertionStrategy();
Apply NUnit Aggregate Assertion Strategy
When using NUnit, it is recommended to invoke UseNUnitAggregateAssertionStrategy() during AtataContext configuration in order to enable NUnit’s built-in multiple assert functionality.
For other testing frameworks (xUnit, MSTest) the native Atata assertion functionality will work well by default.
AtataContext.Configure()
// Do some initialization.
.UseNUnitAggregateAssertionStrategy()
.Build();