Atata 1.1.0 is released with 40 enhancements and features.
Changelog
New Features
- minor
#231 Add
AssociatedControlList<TItem, TOwner> - minor
#232 Add
LabelList<TOwner> - minor
#234 Add
ChildTextNodesvalue toContentSource - minor
#235 Add
ChildTextNodesTrimmedvalue toContentSource - minor
#236 Add
ChildTextNodesTrimmedAndSpaceJoinedvalue toContentSource - minor
#237 Add
FirstChildTextNodevalue toContentSource - minor
#238 Add
LastChildTextNodevalue toContentSource - major
#239 Add
GetContent(ContentSource source)method toUIComponent<TOwner> - major
#242 Add
RefreshPageUntilmethod toPageObject<TOwner> - minor
#246 Make
UriUtilspublic - minor
#259 Add
Label<T, TOwner>control - minor
#264 Add
TestNameSanitizedproperty toAtataContextandLogEventInfo - minor
#266 Make
ActivatorExstatic class public - minor
#267 Make
ObjectExpressionStringBuilderclass public - minor
#270 Add
UseDriver(RemoteWebDriver driver)method toAtataContextBuilder
Changes and Enhancements
- minor
#228 Update
RadioButton<TOwner>.Checkmethod to avoid click when it is already checked - minor
#229 Make
SequalComponentScopeLocateResult.ScopeSourceproperty obsolete - major
#233 Remake
ContentSourceAttributeto behavior - minor
#240 Enhance
TermResolver.GetEnumTermsmethod to consider correctly enum attributes - minor
#241 Update
SentenceTermFormatterandMidSentenceTermFormatterto lowercase only first word letter - major
#244 Use
Selenium.WebDriverpackage v3.141.0 - major
#245 Use
Atata.WebDriverExtraspackage v1.2.0 - minor
#247 Add
CellXPathproperty toFindByColumnIndexStrategy - minor
#248 Add
HeaderXPathproperty toFindByColumnHeaderStrategy - minor
#249 Split
FindByColumnHeaderStrategy.Findmethod - minor
#250 Use
XPathStringinTermMatchExtensions.CreateXPathConditionmethods to handle string values containing quote character - minor
#251 Deprecate
TermMatchExtensions.GetXPathOperationFormatextension method - minor
#252 Use
ToShortIntervalStringandToLongIntervalStringTimeSpanextension methods instead ofToIntervalStringappropriately - minor
#253 Deprecate
TimeSpanExtensions.ToIntervalStringextension method - minor
#254 Add ability to declare
IFindItemAttributeat any level - minor
#255 Deprecate
IItemsControlinterface - minor
#257
OptionList<T, TOwner>.GetItemElementsmethod should throwNoSuchElementExceptionif no elements found - minor
#258 Throw more detailed exceptions in
ControlListScopeLocator - minor
#260 Throw more detailed exceptions in
StrategyScopeLocator - minor
#261 Add inner exception to
AssertionExceptionwhen thrown inIDataVerificationProviderExtensions.Satisfymethods - minor
#262 Add inner exception to
AssertionExceptionwhen thrown inIUIComponentVerificationProviderExtensions.HaveCheckedmethod - minor
#263 Make
UIComponent.ComponentNameproperty settable - minor
#265 Make
AtataContext.Currentproperty settable - minor
#268 Make
AtataContext.CleanUpActionsproperty public - minor
#269 Make
AtataContext.BaseUrlproperty settable
More Details in Exceptions
- Exceptions thrown in
Atatawere reviewed to provide as much information as possible for better failure analysis. AssertionExceptionnow can contain inner exception if there were some during assertion. It can significantly improve understanding of assertuion failures due toNoSuchElementException.- Upgrade of
Atata.WebDriverExtrasto v1.2.0 brings more details in messages ofNoSuchElementExceptionandNotMissingElementException. You can find out more in Atata.WebDriverExtras 1.2.0 Release Notes.
RefreshPageUntil Method
Added method to PageObject<TOwner>:
public TOwner RefreshPageUntil(Expression<Func<TOwner, bool>> predicateExpression, double? timeout = null, double? retryInterval = null);
Refreshes the current page until the condition specified by predicateExpression argument is met.
Usage
Go.To<SomePage>().
RefreshPageUntil(x => x.SomeControl.IsVisible, timeout: 60, retryInterval: 5);
New ContentSource Enumeration Values
New ContentSource enumeration values added:
ChildTextNodes- uses the concatenation of child nested text values.ChildTextNodesTrimmed- uses the concatenation of child nested text values trimming each text.ChildTextNodesTrimmedAndSpaceJoined- uses the concatenation of child nested text values trimming each text part and joining with" "separator.FirstChildTextNode- uses the first child nested text value.LastChildTextNode- uses the last child nested text value.
These new content source values as well as old ones (Text, TextContent, InnerHtml, Value) can be used in ContentSourceAttribute and in new GetContent(ContentSource source) method.
GetContent(ContentSource source) Method
Added method to UIComponent<TOwner>:
public DataProvider<string, TOwner> GetContent(ContentSource source);
Usage
Go.To<SomePage>().
SomeControl.GetContent(ContentSource.ChildTextNodes).Should.Equal("some value");
string content = Go.To<SomePage>().
SomeControl.GetContent(ContentSource.FirstChildTextNode);