Atata 1.1.0 is Released

May 2, 2019 by Yevgeniy Shunevych


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 ChildTextNodes value to ContentSource
  • minor #235 Add ChildTextNodesTrimmed value to ContentSource
  • minor #236 Add ChildTextNodesTrimmedAndSpaceJoined value to ContentSource
  • minor #237 Add FirstChildTextNode value to ContentSource
  • minor #238 Add LastChildTextNode value to ContentSource
  • major #239 Add GetContent(ContentSource source) method to UIComponent<TOwner>
  • major #242 Add RefreshPageUntil method to PageObject<TOwner>
  • minor #246 Make UriUtils public
  • minor #259 Add Label<T, TOwner> control
  • minor #264 Add TestNameSanitized property to AtataContext and LogEventInfo
  • minor #266 Make ActivatorEx static class public
  • minor #267 Make ObjectExpressionStringBuilder class public
  • minor #270 Add UseDriver(RemoteWebDriver driver) method to AtataContextBuilder

Changes and Enhancements

  • minor #228 Update RadioButton<TOwner>.Check method to avoid click when it is already checked
  • minor #229 Make SequalComponentScopeLocateResult.ScopeSource property obsolete
  • major #233 Remake ContentSourceAttribute to behavior
  • minor #240 Enhance TermResolver.GetEnumTerms method to consider correctly enum attributes
  • minor #241 Update SentenceTermFormatter and MidSentenceTermFormatter to lowercase only first word letter
  • major #244 Use Selenium.WebDriver package v3.141.0
  • major #245 Use Atata.WebDriverExtras package v1.2.0
  • minor #247 Add CellXPath property to FindByColumnIndexStrategy
  • minor #248 Add HeaderXPath property to FindByColumnHeaderStrategy
  • minor #249 Split FindByColumnHeaderStrategy.Find method
  • minor #250 Use XPathString in TermMatchExtensions.CreateXPathCondition methods to handle string values containing quote character
  • minor #251 Deprecate TermMatchExtensions.GetXPathOperationFormat extension method
  • minor #252 Use ToShortIntervalString and ToLongIntervalString TimeSpan extension methods instead of ToIntervalString appropriately
  • minor #253 Deprecate TimeSpanExtensions.ToIntervalString extension method
  • minor #254 Add ability to declare IFindItemAttribute at any level
  • minor #255 Deprecate IItemsControl interface
  • minor #257 OptionList<T, TOwner>.GetItemElements method should throw NoSuchElementException if 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 AssertionException when thrown in IDataVerificationProviderExtensions.Satisfy methods
  • minor #262 Add inner exception to AssertionException when thrown in IUIComponentVerificationProviderExtensions.HaveChecked method
  • minor #263 Make UIComponent.ComponentName property settable
  • minor #265 Make AtataContext.Current property settable
  • minor #268 Make AtataContext.CleanUpActions property public
  • minor #269 Make AtataContext.BaseUrl property settable

More Details in Exceptions

  • Exceptions thrown in Atata were reviewed to provide as much information as possible for better failure analysis.
  • AssertionException now can contain inner exception if there were some during assertion. It can significantly improve understanding of assertuion failures due to NoSuchElementException.
  • Upgrade of Atata.WebDriverExtras to v1.2.0 brings more details in messages of NoSuchElementException and NotMissingElementException. 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);