diff --git a/samples/IntegrationTestApp/MainWindow.axaml b/samples/IntegrationTestApp/MainWindow.axaml
index fe1487a7f2..0b5c20b849 100644
--- a/samples/IntegrationTestApp/MainWindow.axaml
+++ b/samples/IntegrationTestApp/MainWindow.axaml
@@ -87,7 +87,10 @@
- None
+
+ None
+
+
diff --git a/tests/Avalonia.IntegrationTests.Appium/ElementExtensions.cs b/tests/Avalonia.IntegrationTests.Appium/ElementExtensions.cs
index 15e22f4424..290811d2a1 100644
--- a/tests/Avalonia.IntegrationTests.Appium/ElementExtensions.cs
+++ b/tests/Avalonia.IntegrationTests.Appium/ElementExtensions.cs
@@ -29,6 +29,12 @@ namespace Avalonia.IntegrationTests.Appium
_ => throw new ArgumentOutOfRangeException($"Unexpected IsChecked value.")
};
+ public static bool GetIsFocused(this AppiumWebElement element)
+ {
+ var active = element.WrappedDriver.SwitchTo().ActiveElement() as AppiumWebElement;
+ return element.Id == active?.Id;
+ }
+
public static void SendClick(this AppiumWebElement element)
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
@@ -44,6 +50,11 @@ namespace Avalonia.IntegrationTests.Appium
}
}
+ public static void MovePointerOver(this AppiumWebElement element)
+ {
+ new Actions(element.WrappedDriver).MoveToElement(element).Perform();
+ }
+
public static string GetAttribute(AppiumWebElement element, string windows, string macOS)
{
return element.GetAttribute(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? windows : macOS);
diff --git a/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs b/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs
index e9a433b975..0562611a5b 100644
--- a/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs
+++ b/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs
@@ -59,5 +59,20 @@ namespace Avalonia.IntegrationTests.Appium
Assert.Equal("Ctrl+O", childMenuItem.GetAttribute("AcceleratorKey"));
}
+
+ [Fact]
+ public void PointerOver_Does_Not_Steal_Focus()
+ {
+ // Issue #7906
+ var textBox = _session.FindElementByAccessibilityId("MenuFocusTest");
+ textBox.Click();
+
+ Assert.True(textBox.GetIsFocused());
+
+ var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem");
+ rootMenuItem.MovePointerOver();
+
+ Assert.True(textBox.GetIsFocused());
+ }
}
}