Atata 1.5.0 is Released

April 23, 2020 by Yevgeniy Shunevych

Atata 1.5.0 is released with new controls, enhanced FindAttribute functionality, log4net support and other new useful features.


New Features

  • major #346 Add LocalDateTimeInput<TOwner> control
  • major #347 Add Svg<TOwner> control and a set of its nested controls
  • minor #348 Add WithGlobalCapability method to driver builders
  • minor #350 Add PageSource property to PageObject<TOwner>
  • major #353 Add log4net log consumer
  • minor #355 Add LazyInitializableLogConsumer
  • minor #356 Ability to reset/change FindAttribute for control
  • major #357 Big improvement of UI components search mechanics
  • major #360 FindAttribute layers
  • minor #361 Add .NET 4.6 as target framework
  • minor #363 Add AtataContextModeOfCurrent enum with ThreadStatic, Static and AsyncLocal values

Changes and Enhancements

  • minor #351 Add extra WithArguments method to driver builders
  • major #358 FindAttribute to inherit MulticastAttribute
  • major #359 Deprecate ControlFindingAttribute
  • minor #362 Use Atata.WebDriverExtras package v1.3.0

New LocalDateTimeInput Control

Added LocalDateTimeInput<TOwner> control (inherited from Input<DateTime?, TOwner>) for handling <input type="datetime-local">.

New Svg Control

Added Svg<TOwner> control (inherited from Control<TOwner>) for handling of <svg> element.

Also, added a set of controls for main SVG elements:

  • SvgCircle<TOwner> - for <circle>.
  • SvgEllipse<TOwner> - for <ellipse>.
  • SvgLine<TOwner> - for <line>.
  • SvgPath<TOwner> - for <path>.
  • SvgPolygon<TOwner> - for <polygon>.
  • SvgPolyline<TOwner> - for <polyline>.
  • SvgRectangle<TOwner> - for <rectangle>.
  • SvgText<TOwner> - for <text>.

See #347 issue for more details.

log4net Support

Implemented Log4NetConsumer class for native Atata support of log4net library for logging. To use it, invoke one of AddLog4NetLogging overloaded methods of AtataContextBuilder.

Improvement of UI Components Search Mechanics

In addition to component’s IWebElement Scope { get; } property introduced new ISearchContext ScopeContext { get; } property. The ScopeContext for all components returns the Scope property value by default. An exception is Page<TOwner> for which Driver (RemoteWebDriver instance) is returned. For custom components, it also can be changed by overriding OnGetScopeContext method.

This improves performance of controls finding and makes the finding mechanic more stable.

See #357 issue for more details.

FindAttribute Various Improvements

There were several important improvements related to FindAttribute:

  • #356 Ability to reset/change FindAttribute for control
  • #358 FindAttribute to inherit MulticastAttribute
  • #359 Deprecate ControlFindingAttribute. Use FindAttributes instead

FindAttribute Layers

This is the new functionality that provides the ability to use many FindAtributes for a single component in a chain way. This is called layers. This feature was implemented because of the needed shadow DOM support. But can be also nicely used for other needs, like complex layered element locators.

See #360 issue for more details and usage examples.

New AsyncLocal Mode of AtataContext.Current

AsyncLocal mode was requested to use for applications that work using async/await.

Added AtataContextModeOfCurrent enum with ThreadStatic, Static and AsyncLocal values. It defines the modes of AtataContext.Current property.

Added property to AtataContext:

public static AtataContextModeOfCurrent ModeOfCurrent { get; set; }

Existing IsThreadStatic property of AtataContext becomes obsolete as ModeOfCurrent is a new recommended option that provides additional AsyncLocal mode.

See #363 issue for more details.