Atata 1.0.0 is released with new features, enhancements and fixes. Check the changelog.
Changelog
Breaking Changes
- break
#193 Change behavior of
FindSettingsAttributeandTermFindSettingsAttribute - break
#206 Fix typo in
ComponentDefinitonAttributeproperty name ofUIComponentMetadata - break
#213 Remove
PhantomJSDriverusage - break
#218 Remove
WithCapabilitiesmethod ofRemoteDriverAtataContextBuilder - break #221 Remove obsolete types and members inclusive prior v0.15.0
New Features
- minor
#185 Add
Image<TOwner>control - minor
#189 Add
RightClickParentAttributetrigger - minor
#194 Add overloaded
GetandGetAllmethods toUIComponentMetadatawithout required parameters - major
#195 Add
AttributeSettingsAttribute - minor
#196 Add
AttributeFilter<TAttribute>class - minor
#197 Add overloaded
GetandGetAllmethods toUIComponentMetadatathat useAttributeFilter<TAttribute> - minor
#210 Add
Do(Action action)method toPageObject<TOwner> - major
#212 Add
IsPresentproperty toUIComponent<TOwner> - minor
#219 Add overloaded
WithOptionsmethods toRemoteDriverAtataContextBuilder - minor
#220 Add overloaded
WithOptionsmethod toDriverAtataContextBuilder<TBuilder, TService, TOptions> - major
#224 Create
Report<TOwner>class and addReportproperty toPageObject<TOwner>
Changes and Enhancements
- major
#192 Add
IsTargetSpecifiedandTargetAnyTypeproperties toMulticastAttribute - minor
#198 Add
AttributeSettingsAttributefiltering byTargetAttributeTypestoUIComponentMetadata - minor
#199 Mark as obsolete old
GetandGetAllmethods ofUIComponentMetadata - major
#200 Make some members of
UIComponentandUIComponent<TOwner>public - major
#203 Add
Pushmethods toUIComponentMetadata - minor
#204 Update
UIComponentResolver.CreateControlForPropertymethod to push attributes into metadata - major
#205 Inherit
ScopeDefinitionAttributefromMulticastAttribute - major
#207 Dynamic resolving of
UIComponentMetadata.ComponentDefinitionAttribute - minor
#208 Enhance
SequalComponentScopeLocateResultto support multiple scope sources - minor
#209 Change types of
UIComponentResolverdictionaries toConcurrentDictionary<TKey, TValue> - major
#214 Use
Selenium.WebDriverpackage v3.14.0 - major
#215 Use
Atata.WebDriverExtraspackage v1.1.0 - major
#217 Improve
FileInput<TOwner>to handle hidden input - minor
#222 Mark as obsolete
Getmethod ofDataProvider<TData, TOwner>
Fixes
- fix #191 Incorrect applying of
MulticastAttributedefined at component level - fix #201 Incorrect handling of
nullvalue by some setters of properties ofMulticastAttribute - fix #202
FindByColumnHeaderStrategyfails for table inside another table - fix #211
NoSuchElementExceptionis thrown when accessUIComponent.IsVisibleproperty 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:
FindSettingsAttributeis inherited fromAttributeSettingsAttribute.- From now
FindSettingsAttributeandTermFindSettingsAttributedefined at class level without any target will apply to class where it defined, not children. To apply it to all children you can setTargetAnyTypeproperty totrue:[FindSettings(TargetAnyType = true)]. - Marked as obsolete non-default constructors of
FindSettingsAttributeandTermFindSettingsAttribute. From now on use default constructor instead and set target attribute viaTargetAttributeTypeproperty, e.g.:[FindSettings(TargetAttributeType = typeof(FindByNameAttribute))]. - Marked as obsolete
FindAttributeTypeproperty ofFindSettingsAttribute. It should also returnTargetAttributeTypeproperty value. FindAttributeshould findFindSettingsAttributeat any attribute level. Formerly component level was excluded.TermFindAttributeshould findTermFindSettingsAttributeat any attribute level. Formerly component level was excluded.- Removed restricted
AttributeUsagefromTermFindSettingsAttribute.
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 wrapsILogManagerand 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.Anyis set inControlDefinition.SetValueandOnClearmethods 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.