# Changelog

## 5.0.0 (2024-12-08)
### Breaking changes
  * Removed support for .NET Standard, .NET Core 3.1, .NET 5
### Enhancements
  * Added support for .NET 8
  * Updated Dependencies
  * Add screenshot to testresult for XML report (thanks @igorrecioh)
  * Add delay after pressing keyboard modifiers (thanks @louislefevre)
  * Added new flag to define usage of screenshots (thanks Igor Recio)
  * Added nullable annotations (thanks @jonasdoerr)
### Bug fixes
  * Fixed very large combo boxes (thanks @tomersalem)
  * Fix Mouse.Scroll not working in .NET 9 (thanks @matthew-a-thomas)

## 4.0.0 (2022-09-24)
### Breaking changes
  * Removed support for .NET Framework below 4.8
### Enhancements
  * Added Support for .NET 5.0 and 6.0
  * Allow to skip logging missing frames info
  * Added support for some more properties in XPath
  * Added MixedAttributeValue
  * Made TryGetClickablePoint more resilend and added a Fallback to BoundingRectangle.Center
  * Extended ConditionFactory (thanks @bence-nagy)
### Bug fixes
  * Fix mistype in RightDoubleClick mouse method (thanks @kungfux)
  * Fixed Bug Alt+Tab in OverlayForm (thanks @erimeurer)

## 3.2.0 (2020-07-16)
### Breaking changes
  * None
### Enhancements
  * Add params on Process.Start (thanks @brunofmeurer)
  * Added .NET Core 3.1 Target Framework (thanks @torepaulsson)
### Bug fixes
  * Fixed GID Handle leak (thanks @ChrisZhang95)
  * Fixed .NET Core issue were the MainWindowHandle is not refreshed (thanks @torepaulsson)

## 3.1.0 (2020-05-19)
### Breaking changes
  * None
### Enhancements
  * Added ByFrameworkType condition
  * Allow xpath to find unknown types by mapping them to custom
  * Added support for Qt framework type
  * Added support for WinForms spinner (thanks @ddeltasolutions)
  * Added Capture.ScreensWithElement
  * Added customization of InfoOverlay font (thanks @petrsapak)
  * Added calendar support (thanks @ddeltasolutions)
  * Added date time picker support (thanks @ddeltasolutions)
  * Added support for large lists (thanks @ddeltasolutions)
  * Added application CloseTimeout and killIfCloseFails flag
  * Made the mouse movement speeds settable
### Bug fixes
  * Fixed null error in FrameworkId
  * Fix moving the mouse by 0 distance
  * Fixed search by AccessibilityRole

## 3.0.0 (2019-12-09)
### Introduction
This release combines all changes from the 2.x pre-release versions and also new features.
The main feature is the .NET Core/.NET Standard compatibility for FlaUI.Core and FlaUI.UIA3.
### Breaking changes
  * Renamed BasicAutomationElementBase to FrameworkAutomationElementBase
  * Consistent naming for the *Id interfaces/classes (eg. IDockPatternProperties to IDockPatternPropertyIds)
  * Reworked events
  * The `Find...` methods not do not use Retry anymore, the developer himself needs to decide if he wants to use a retry or not.
  * Moved DrawHighlight to extension methods so that they are fluent and can be made null-safe.
  * Reworked Retry
    * New flag: throwOnTimeout - Defines if Retry should throw when the timeout is reached.
    * New flag: ignoreException - Defines if Retry should continue in case of an exception.
    * New flag: lastValueOnTimeout - Defines if Retry should return the last successful value when it gets to a timeout.
    * New flag: defaultOnTimeout - Defines if Retry should return the default value on a timeout.
    * New Property: timeoutMessage - Allows adding a custom message when a timeout occurs when retrying.
    * Renamed Retry.While to Retry.WhileTrue
    * Added new Retry methods: WhileNull, WhileNotNull, WhileEmpty, Retry.WhileFalse
    * Added a `RetryResult` object that is returned on the `Retry` methods which contains information about the execution of the current `Retry`
    * Added tests
  * Moved AutomationElement one up in the namespace tree
  * Made the `As` methods extension methods again
  * Removed custom Point/Rectangle and use the one from System.Drawing
  * Moved `Capture` into the `Capturing` namespace
  * All `FindIndexed` are consistently renamed to `FindAt`
  * Renamed `Retry.Interval` to `Retry.DefaultInterval`
  * Renamed `Retry.Timeout` to `Retry.DefaultTimeout`
### Enhancements
  * .NET Core and Standard compatibility
  * Added capture overlays (mouse and info bar)
  * Added a video recorder (see [Capturing](https://github.com/Roemer/FlaUI/wiki/Capturing))
  * Updated the interop dlls
  * Added missing features from .NET 4.7.1 in UIA2
  * Added missing features from newer interop in UIA3
    * Transaction- and ConnectionTimeout
    * Selection2 pattern
    * New text attributes
    * New automation properties (CenterPoint, FillColor, ... see f2b444ef7d422344b63a187151112b77ca3299f5 for more)
    * FindWithOptions
    * New events
    * UIA3TextRange3
    * ConnectionRecoveryBehaviorOptions and CoalesceEventsOptions
    * MatchSubstring for property searching
  * Code cleanups
  * Added generic `AsType`
  * Use `UtcNow` instead of `Now` for `Retry`
  * `Wait.UntilInputIsProcessed` now has an optional timespan parameter
  * Reworked `OperationSystems` a bit
  * Retry, WaitWhileBusy, WaitWhilemainHandleIsMissing return a bool now to indicate success or failure
  * Capture does not focus the element anymore before capturing as this could have side effects
  * Added missing events
  * Added TextRange3
  * Made log levels configurable, added a logger where you can notify for logging events, added an NUnitProgressLogger which logs in real time to the nunit console
  * Added WaitUntilClickable and WaitUntilEnabled
  * Default value for ControlType (thanks to @lukasvogel)
  * Implemented mouse drag from point to point
  * Added a condition to search by a Framework Id (thanks to @SSHenninger)
  * Added `AnimationDuration` to `ComboBox`
  * Added a timeout message to `Retry`
  * Added `TextAttributeLibrary`
  * Added `Retry.Search` methods
  * Added `IsAvailable` property
  * Added `.As<T>` method
  * Enhanced `DataGrid` support for WPF (thanks @sparerd)
  * More documentation
  * Added various fallbacks to Win32 methods when UIA fails (thanks @ddeltasolutions)
  * Added Touch input support
  * Exposed MovePixelsPerMillisecond and MovePixelsPerStep in Mouse
  * Added IsChecked property for menu item (thanks @ddeltasolutions)
### Bug fixes
  * Added some sleeps to the mouse drag
  * Made xpath searching more robust (thanks to @lukasvogel)
  * Correctly use collapse in the expand pattern
  * Fixed `LabeledBy` property
  * Fixed null exception when getting the mouse cursor
  * Fixed an issue that the mouse cursor was not set correctly on multi-monitor environments

## 1.3.1 (2017-10-19)
### Bug fixes
  * Re-added install.ps1 to UIA3 NuGet package

## 1.3.0 (2017-10-19)
### Breaking changes
  * Renamed Helpers.WaitXXX to Wait.XXX
  * Project now only compiles on VS2017.3 or higher
  * Renamed scrollbars (VScrollBar -> VerticalScrollBar, HScrollBar -> HorizontalScrollBar)
  * Renamed ScreenCapture to Capture
  * Renamed ComCallWrapper to Com
  * Changed child collections from various namings to ".Items" (eg. in Menus)
  * Renamed State to ToggleState
### Enhancements
  * Switched build system to cake build
  * Various code cleanups and documentation improvements
  * Added signed versions (as separate nuget packages)
  * Added some convenience properties to the AutomationElement (IsEnabled, IsOffscreen, ...)
  * Added HasExited and ExitCode to Application.
  * Cleaned SystemProductNameFetcher and added support for Server 2016
  * Added IsSupported to AutomationProperty
  * Added Parent property
  * Added BoundingRectangle,ActualWidth,ActualHeight,ItemStatus and HelpText to AutomationElement
  * Implemented FindAt / FindIndexed
  * Added ByValue condition
  * Added IsReadOnly to ComboBox
  * Implemented ToggleButton
  * Implemented ListBox and ListBoxItem
  * Added IsToggled to ToggleAutomationElement, added IsChecked to ChechBox
  * Added DataGridView
  * Reworked the Capture class
### Bug fixes
  * Correctly handle manually pressed modifiers when using Keyboard.Type
  * Added missing property in RegisterPropertyChangedEvent
  * Fixed finding the ScrollBars
  * Fixed typo in IPropertyLibrary

## 1.2.0 (2017-05-24)
### Breaking changes
  * Moved FlaUInspect to its own repository (see https://github.com/FlauTech/FlaUInspect)
### Enhancements
  * [Core] Added ENTER synonym for RETURN and ESC for ESCAPE
  * [Core] Made IsWin32Menu property on menu public

## 1.1.0 (2017-04-28)
### Enhancements
  * [Core] Added Select (index and string) for ComboBox
  * [Core] Added SelectedItem(s) and Select by cell value to Grid
  * [Core] Added a FindCellByText to GridRow
  * [Core] Implemented MenuItems with a string indexer
  * [Core] Added AutomationElement constructor which is based on another AutomationElement
  * [Core] Changed loglevel of "Closing application" to debug
  * [Core] Added overload for FindFirstChild and FindFirstDescendant with a string (AutomationId) parameter
### Bug fixes
  * [Core] Fix for WinForms where ComboBox does not support the SelectionPattern
  * [Core]Fix when directly setting the text in the combobox in uia2/winforms

## 1.0.0 (2017-04-13)
### Enhancements
  * [Core] Reworked the keyboard class a bit (e.g. allow simultaneous presses)
  * [All] More code documentation
### Bug fixes
  * [All] Fixed almost all ReSharper warnings

## 1.0.0-rc1 (2017-03-23)
### Breaking changes
  * [UIA3] Used Client interop instead of Core for UIA3
### Enhancements
  * [Core] Various code cleanups
  * [UIA3] Wrapped some more calls in ComCallWrapper
### Bug fixes
  * [Core] Fixed null exception on Window.Close without TitleBar.CloseButton
  * [All] Fixed .net 4.5 libraries in the packages

## 1.0.0-beta3 (2017-03-14)
### Breaking changes
  * [Core] Moved As... methods into the AutomationElement
### Enhancements
  * [Core] Added XMLDoc (also to nuget packages)
  * [Core] Return true/false if the application closed normally / forcefully
  * [Core] Reworked timeouts on Application.Wait methods (default to infinite)
  * [Core] Implemented ComboBoxItem (to correctly get the text for default WPF comboboxes)
  * [Core] Added AsHScrollBar and AsVScrollBar

## 1.0.0-beta2 (2017-03-13)
### Breaking changes
  * [Core] WaitWhileBusy and WaitWhileMainHandleIsMissing are now public and to not block endlessly
### Enhancements
  * [Core] Cleaned the Retry a bit
  * [Core] Refactored logging (thanks to [jmaxxz](https://github.com/jmaxxz))
### Bug fixes
  * [Core] Fallback to property for clickable point if GetClickablePoint fails
  * [Core] Fixed XPath when getting it for an element (eg. in FlaUInspect)

## 1.0.0-beta1 (2017-03-02)
### Breaking changes
  * [Core] Merged Table into Grid
  * [All] Properties are now wrapped in an AutomationProperty object which provides Value, ValorOrDefault and TryGetValue
  * [Al] Patterns are now wrapped in an IAutomationPattern object which provides Pattern, PatternOrDefault, TryGetPattern and IsSupported
  * [Core] Properties in the PropertyLibrary now do not contain the name "Property" anymore
  * [Core] Renamed .Information to .Properties
### Enhancements
  * [Inspect] Added Table Patterns support
  * [Code] Various code cleanups
  * [Core] Added search by XPath
  * [All] Implemented caching

## 0.6.2 (2017-02-10)
### Enhancements
  * [Core] Set move mouse to false by default
  * [Core] Added NoScroll ScrollPatternConstant for SetScrollPercent
  * [Inspect] Made supported patterns bold, added more pattern details
  * [Core] Added GetAllTopLevelWindows to Application
### Bug fixes
  * [Core] Fixed AndCondition.ToString

## 0.6.1 (2016-12-15)
### Breaking changes
  * Made ModalWindows a property
### Enhancements
  * Walk the parents to get a FrameworkType if no FrameWorkType was found
  * Added XAML FrameworkType (UWP apps)
  * Implemented WPF Popup
  * Fixed single items added multiple times (FlaUInspect)
  * Added some more pattern information (FlaUInspect)
### Bug fixes
  * Fixed UIA2 tree walker
  * Fixed role and state of LegacyIAccessiblePattern

## 0.6.0 (2016-11-11)
### Enhancements
  * Added .NET 3.5 and 4.0 versions of FlaUI

## 0.5.2 (2016-11-11)
### Enhancements
  * Added more convenience methods to chain the searching
  * Added search methods without conditions
  * Theoretical support for Win32 scrollbars

## 0.5.1 (2016-11-03)
### Enhancements
  * Added more convenience methods to chain the searching

## 0.5.0 (2016-11-03)
### Breaking changes
  * Removed made mouse and keyboard static, removed their interfaces
  * Renamed ListView to Grid
  * Renamed the retry methods
### Enhancements
  * Implemented Table
  * Added caching to TreeWalkers
### Bug fixes
  * Further reduced the amount of classes created

## 0.4.1 (2016-10-31)
### Enhancements
  * Implemented all text patterns
  * Exposed all property, event and textAttrbute ids
  * Implemented ScrollBars
  * Changed the OverlayManager to WinForms (faster and needs less memory than the WPF one)
### Bug fixes
  * Reduced the amount of classes created

## 0.4.0 (2016-10-20)
### Enhancements
  * Exposed AddToSelection and RemoveFromSelection
  * Improved the logic for ContextMenu finding (you can manually pass the desired logic)
  * Implemented ComboBox
  * Implemented TreeWalkers
### Bug fixes
  * Fixed a bug with the retry to speed things up quite a bit

## 0.3.4 (2016-10-18)
### Enhancements
  * Added some convenience methods for searching
### Bug fixes
  * Tests now run on German Windows
  * ControlType is now properly reported for UIA2
  * DoubleClick now does a real double click

## 0.3.3 (2016-10-14)
### Enhancements
  * Added many more patterns
  * Implemented ContextMenu on Window
  * Implemented ListView
  * Added True-/FalseCondition
### Bug fixes
  * Fixed UIA3 package to correctly install the interop assembly

## 0.3.2 (2016-10-07)

### Bug fixes

  * Fixed UIA3 package to correctly install the interop assembly