this.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
Due to assumptions made in the Coded UI Test framework for User Interface Automation (UIA), Infragistics UIA-enabled controls that are also control containers may fail to replay on Infragistics controls contained within these containers.
Affected containers:
ControlContainerEditor (any Infragistics control that allows specifying an embeddable editor)
ControlContainerTool and PopupControlContainerTool ( UltraToolbarsManager)
Control Container Group ( UltraExplorerBar).
Modify the script to ensure the proper hierarchy for the contained control.
Due to underlying UIA hierarchy changing during a drag operation, repositioning toolbars from one dock area to another is not supported. During the recording of a drag operation, the Coded UI Test builder records the drop point based on the structure at the time of the drop. However, during playback, the drop point calculation occurs prior to the drag operation resulting in the UIA structure being out of alignment with the expected hierarchy.
No workaround is available at this time. Currently in research.
During the same recording session, moving the Quick Access Toolbar below a collapsed ribbon may cause some actions performed on the QuickCustomizeButton to fail to replay. This is due to the CUIT framework attempting to use the same UITestControl
for different automation elements without remapping the native elements.
Modify scripts so that the UltraUiaButton for the QuickCustomizeButton includes the AlwaysSearch
field option from the SearchConfiguration class of Microsoft.VisualStudio.TestTools.UITest.Extension
.
In C#:
this.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
In Visual Basic:
Me.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch)
Records click instead of drag in UltraTrackBar when the mouse up is not on the thumb.
Be sure to MouseUp
on the Thumb after dragging the Thumb or do a SetValue
on the UltraTrackBar directly from the script.
Clicking on a dropdown or editor button in a grid cell does not play back properly.
By default, buttons in cells do not display until the mouse moves over the cell. You can change this behavior using the CellDisplayStyle
property of the UltraGridColumn. However, when the buttons are not displayed, Coded UI Test will be unable to find them during playback because Coded UI Test does not record every mouse movement.
When recording, always click on the cell itself so that the mouse is within the cell’s bound before clicking on the button.
Due to the opaque windows used as drag indicators during a drag operation, the Coded UI Test Framework is unable to determine properly the correct drop location.
To work around this issue, you must modify the script to change the destination UITestControl to be another header instead of the desktop.
A generated code similar to:
In C#:
// Move 'Title' HeaderItem from (56, 11) to 'Desktop' client (38, 14)
uIDesktopClient.EnsureClickable(new Point(38, 14));
Mouse.StartDragging(uITitleHeaderItem, new Point(56, 11));
Mouse.StopDragging(uIDesktopClient, new Point(38, 14));
In Visual Basic:
' Move 'Title' HeaderItem from (56, 11) to 'Desktop' client (38, 14)
uIDesktopClient.EnsureClickable(New Point(38, 14))
Mouse.StartDragging(uITitleHeaderItem, New Point(56, 11))
Mouse.StopDragging(uIDesktopClient, New Point(38, 14))
Should be changed to:
In C#:
// Move 'Title' HeaderItem from (56, 11) to 'LastName' HeaderItem (14, 16)
uILastNameHeaderItem.EnsureClickable(new Point(14, 16));
Mouse.StartDragging(uITitleHeaderItem, new Point(56, 11));
Mouse.StopDragging(uILastNameHeaderItem, new Point(14, 16));
In Visual Basic:
' Move 'Title' HeaderItem from (56, 11) to 'LastName' HeaderItem (14, 16)
uILastNameHeaderItem.EnsureClickable(New Point(14, 16))
Mouse.StartDragging(uITitleHeaderItem, New Point(56, 11))
Mouse.StopDragging(uILastNameHeaderItem, New Point(14, 16))
Observe in the code above, that the drop point is relative to the drop header location.
Similar issues exist with dragging columns to and from the GroupByBox, which are similarly handled.
When recording a script against two or more different DropDowns (ValueList
), playback may fail because it is unable to locate the appropriate ValueListItem
property. This is due to the playback process caching and reusing the same dropdown window instead of locating the new instance of it.
Modify the script so the WinWindow
for the DropDown window (often named UIValueListDropDownWindow
) includes the AlwaysSearch
option of the SearchConfiguration.
In C#:
this.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
In Visual Basic:
Me.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch)
When multiple controls with the same control name exist within the same form (such as when using multiple instances of the same user control), the UITestControl
may match the wrong instance of the control during playback.
Modify the script so that the WinWindow
parenting the control contains the correct instance number.
In C#:
this.SearchProperties[UITestControl.PropertyNames.Instance] = instance_number;
In Visual Basic:
Me.SearchProperties(UITestControl.PropertyNames.Instance) = instance_number
If a grid on a Multi-document Interface (MDI) child form displays a dropdown ValueList
(such as a FilterRow or column using an EditorWithCombo ), playback will fail to locate and select any of the value list items that are scrolled out of view on the ValueList
.
Work around this by modifying the script to call EnsureClickable method on the control type ListItem (UltraUiaListItem) of UITestControl
prior to the Mouse.Click
event.
When adding asserts (Verification for changes) to controls that are disabled the UITestControl
for the control wrapper selects (WinWindow
) instead of the lowest provider at the mouse position. This is most likely due to the transition between Microsoft Active Accessibility: Architecture (MSAA) and UIA, and the framework looking for interactive UI object.
Access the child providers in the Assertion Window via the Navigation Arrows.
In general, the CUIT framework does not record actions performed on scrollbars. However due to their identification methods, it does not recognize our scrollbars as scrollbars they should ignore and records the user interactions with them.
The user can delete the recorded scrollbar actions allowing the TechnologyManager to use the proper UIA scrolling patterns.