Atata 1.0.0 is released with new features, enhancements and fixes. Check the changelog.
Changelog
Breaking Changes
- break
#193 Change behavior of
FindSettingsAttribute
andTermFindSettingsAttribute
- break
#206 Fix typo in
ComponentDefinitonAttribute
property name ofUIComponentMetadata
- break
#213 Remove
PhantomJSDriver
usage - break
#218 Remove
WithCapabilities
method ofRemoteDriverAtataContextBuilder
- break #221 Remove obsolete types and members inclusive prior v0.15.0
New Features
- minor
#185 Add
Image<TOwner>
control - minor
#189 Add
RightClickParentAttribute
trigger - minor
#194 Add overloaded
Get
andGetAll
methods toUIComponentMetadata
without required parameters - major
#195 Add
AttributeSettingsAttribute
- minor
#196 Add
AttributeFilter<TAttribute>
class - minor
#197 Add overloaded
Get
andGetAll
methods toUIComponentMetadata
that useAttributeFilter<TAttribute>
- minor
#210 Add
Do(Action action)
method toPageObject<TOwner>
- major
#212 Add
IsPresent
property toUIComponent<TOwner>
- minor
#219 Add overloaded
WithOptions
methods toRemoteDriverAtataContextBuilder
- minor
#220 Add overloaded
WithOptions
method toDriverAtataContextBuilder<TBuilder, TService, TOptions>
- major
#224 Create
Report<TOwner>
class and addReport
property toPageObject<TOwner>
Changes and Enhancements
- major
#192 Add
IsTargetSpecified
andTargetAnyType
properties toMulticastAttribute
- minor
#198 Add
AttributeSettingsAttribute
filtering byTargetAttributeTypes
toUIComponentMetadata
- minor
#199 Mark as obsolete old
Get
andGetAll
methods ofUIComponentMetadata
- major
#200 Make some members of
UIComponent
andUIComponent<TOwner>
public - major
#203 Add
Push
methods toUIComponentMetadata
- minor
#204 Update
UIComponentResolver.CreateControlForProperty
method to push attributes into metadata - major
#205 Inherit
ScopeDefinitionAttribute
fromMulticastAttribute
- major
#207 Dynamic resolving of
UIComponentMetadata.ComponentDefinitionAttribute
- minor
#208 Enhance
SequalComponentScopeLocateResult
to support multiple scope sources - minor
#209 Change types of
UIComponentResolver
dictionaries toConcurrentDictionary<TKey, TValue>
- major
#214 Use
Selenium.WebDriver
package v3.14.0 - major
#215 Use
Atata.WebDriverExtras
package v1.1.0 - major
#217 Improve
FileInput<TOwner>
to handle hidden input - minor
#222 Mark as obsolete
Get
method ofDataProvider<TData, TOwner>
Fixes
- fix #191 Incorrect applying of
MulticastAttribute
defined at component level - fix #201 Incorrect handling of
null
value by some setters of properties ofMulticastAttribute
- fix #202
FindByColumnHeaderStrategy
fails for table inside another table - fix #211
NoSuchElementException
is thrown when accessUIComponent.IsVisible
property of hidden/missing element - fix #216 Navigation using relative URL fails on Linux
Changed Behavior of FindSettingsAttribute and TermFindSettingsAttribute
The basic idea is to force all attributes to work in the same manner (MulticastAttribute
with targets).
FindSettingsAttribute
and TermFindSettingsAttribute
had specific behavior before and were updated to work using new common approaches:
FindSettingsAttribute
is inherited fromAttributeSettingsAttribute
.- From now
FindSettingsAttribute
andTermFindSettingsAttribute
defined at class level without any target will apply to class where it defined, not children. To apply it to all children you can setTargetAnyType
property totrue
:[FindSettings(TargetAnyType = true)]
. - Marked as obsolete non-default constructors of
FindSettingsAttribute
andTermFindSettingsAttribute
. From now on use default constructor instead and set target attribute viaTargetAttributeType
property, e.g.:[FindSettings(TargetAttributeType = typeof(FindByNameAttribute))]
. - Marked as obsolete
FindAttributeType
property ofFindSettingsAttribute
. It should also returnTargetAttributeType
property value. FindAttribute
should findFindSettingsAttribute
at any attribute level. Formerly component level was excluded.TermFindAttribute
should findTermFindSettingsAttribute
at any attribute level. Formerly component level was excluded.- Removed restricted
AttributeUsage
fromTermFindSettingsAttribute
.
PhantomJSDriver Removed
Removed usage of PhantomJSDriver
as it was removed in Selenium.WebDriver
v3.14.0.
New Report Property of PageObject<TOwner>
-
Created
Report<TOwner>
class that wrapsILogManager
and duplicates its methods but with returning ofTOwner
. Is useful for reporting inside tests within a fluent chain. -
Added property to
PageObject<TOwner>
:public Report<TOwner> Report { get; }
Usage
Go.To<SomePage>().
Report.Trace("tracemessage").
Report.Debug("debugmessage").
Report.Info("infomessage").
Report.Warn("warnmessage").
Report.Error(errorException).
Report.Error("errormessage", errorException).
Report.Error("errormessage", exceptionStackTrace).
Report.Fatal(fatalException).
Report.Fatal("fatalmessage", fatalException).
Report.Start("Some section").
// Do something within section.
Report.EndSection().
Report.Screenshot().
Report.Screenshot("sometitle");
New Image<TOwner> Control
Added Image<TOwner> control for <img>
element.
FileInput<TOwner> Now Handles Hidden <input>
FileInput<TOwner>
is updated to handle hidden <input>
as file inputs often made invisible/transparent.
Visibility = Visibility.Any
is set inControlDefinition
.SetValue
andOnClear
methods are overridden to handle visible and hidden inputs.
Members of UIComponent That Became Public
public UIComponent Owner { get; }
public UIComponent Parent { get; }
public ScopeSource ScopeSource { get; }
public string ComponentName { get; }
public string ComponentTypeName { get; }
public string ComponentFullName { get; }
public UIComponentMetadata Metadata { get; }
Members of UIComponent<TOwner> That Became Public
public new TOwner Owner { get; }
public new UIComponent<TOwner> Parent { get; }
public UIComponentChildrenList<TOwner> Controls { get; }
public TComponentToFind GetAncestor<TComponentToFind>();
public TComponentToFind GetAncestorOrSelf<TComponentToFind>();
ScopeDefinitionAttribute is Inherited from MulticastAttribute
ScopeDefinitionAttribute
is inherited from MulticastAttribute
to add support of advanced targeting functionality for ControlDefinitionAttribute
, PageObjectDefinitionAttribute
and other inherited attributes.