Toggling the window decorations can cause the window to be moved off screen, causing integration test failures. Until this bug is fixed, detect this and move the window to the screen origin. See #11411.
* Refactor IntegrationTestApp.
Use a `ListBox` to switch pages instead of a `TabControl`: the `TabControl` didn't adapt well to smaller screen sizes, and the `MainWindow` was getting unwieldy anyway.
* Update tests to use new pager.
Move logic for selecting the page to a base class as we may need to handle scrolling manually on macOS at some point (Appium on macOS doesn't scroll elements into view automatically).
* Add AutomationPeer.IsOffscreen.
This is needed in order for controls to be scrolled into view using WinAppDriver. The default is the same as WPF and the default value is overridden in the same controls as WPF (where present).
#Conflicts:
# samples/IntegrationTestApp/App.axaml.cs
# samples/IntegrationTestApp/MainWindow.axaml
# samples/IntegrationTestApp/MainWindow.axaml.cs
# samples/IntegrationTestApp/TopmostWindowTest.axaml.cs
# src/Avalonia.Controls/TreeViewItem.cs
# tests/Avalonia.IntegrationTests.Appium/ContextMenuTests.cs
# tests/Avalonia.IntegrationTests.Appium/PointerTests.cs
# tests/Avalonia.IntegrationTests.Appium/ScreenTests.cs
# tests/Avalonia.IntegrationTests.Appium/TrayIconTests.cs
# tests/Avalonia.IntegrationTests.Appium/WindowDecorationsTests.cs
# tests/Avalonia.IntegrationTests.Appium/WindowTests.cs
# tests/Avalonia.IntegrationTests.Appium/WindowTests_MacOS.cs
When opening a context menu and pressing the "arrow down" key, the first menu item was not selected. This issue was introduced by #11287. The fix is to make the `ContextMenu` focusable.
Added an integration test to try to prevent regressions.
Co-authored-by: Max Katz <maxkatz6@outlook.com>
* Fix native menu bar tooltip
* Make ToolTip tests more reliable
* Increase MacOS_Native_Menu_Has_ToolTip_If_Defined sleep delay
* Disable MacOS_Native_Menu_Has_ToolTip_If_Defined, as it fails way too often
* Add .NET 8 target to packable projects
* Update test projects
* Update sample projects to target .NET 8
* Update main Avalonia package to target .NET 8 as well
* Remove MSBuildEnableWorkloadResolver hack and some minor change
* Use net8.0 in nuke build as well
* Pin 8.0.0 SDK
* Adjust API validation
* Pin a valid version
* Remove net461 target from Avalonia package
* Remove unused net6.0 target from Avalonia.Designer.HostApp
* Adjust API diff
* Update ControlCatalog.Android.csproj
* Remove MSBuildEnableWorkloadResolver
* Fix Browser issues on .NET 8
* Fix .NET 8 error
* Fix merge conflicts
* Replace explicit TFMs in .csproj files with a centralized registry
* Fix merge conflict
* Fix AvsLegacyWindowsTargetFrameworks and add hacks for the tests
* Update XCode project CommandLineArgument
---------
Co-authored-by: Nikita Tsukanov <keks9n@gmail.com>
* Add integration test for access key indicators in macOS menu bar titles.
Tests for access key indicators displaying as plain underscores in macOS menu bar items.
* Exclude access key markers from native menu titles on macOS.
macOS does not support access key markers, so they just display as extra underscores.
Under the appium-mac2-driver, `FindElementByAccessibilityId` doesn't actually find elements by their accessibility ID, it also finds them by their accessibility name. Since #10531 added an automation peer for `Label` which sets the accessibility name, the wrong control was being located (e.g. it located the "Position" label instead of the `Name="Position"` text box).
Disambiguate these controls by adding a `Current` prefix to make integration tests pass again.
Integration tests for #10420:
- Adds an `--overlayPopups` command-line argument to IntegrationTestApp
- Renames `TestAppFixture` -> `DefaultAppFixture`
- Adds additional `OverlayPopupsAppFixture`
- Runs ComboBox and Menu tests in both default and overlay popups mode
- VS keeps changing the `.sln` file
We need to be explicit about which element we're talking about when there are two elements with the same content, and so use accessibility IDs rather than Name.
The previous method of relying on the order of windows returned by appium to determine window z-order proved not to be reliable. Instead use p/invoke to read `NSWindow.orderedIndex` on a timer and display it in a text box in the `ShowWindowtest` window.
This commit doesn't update the tests to use this new info though.