diff --git a/samples/IntegrationTestApp/MainWindow.axaml b/samples/IntegrationTestApp/MainWindow.axaml index 0b5c20b849..19ac68b15b 100644 --- a/samples/IntegrationTestApp/MainWindow.axaml +++ b/samples/IntegrationTestApp/MainWindow.axaml @@ -82,13 +82,14 @@ - + None + diff --git a/samples/IntegrationTestApp/MainWindow.axaml.cs b/samples/IntegrationTestApp/MainWindow.axaml.cs index b9e631a312..9a612aa94d 100644 --- a/samples/IntegrationTestApp/MainWindow.axaml.cs +++ b/samples/IntegrationTestApp/MainWindow.axaml.cs @@ -62,6 +62,8 @@ namespace IntegrationTestApp this.FindControl("BasicComboBox").SelectedIndex = 0; if (source?.Name == "ListBoxSelectionClear") this.FindControl("BasicListBox").SelectedIndex = -1; + if (source?.Name == "MenuClickedMenuItemReset") + this.FindControl("ClickedMenuItem").Text = "None"; } } } diff --git a/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs b/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs index 0562611a5b..763ad5f400 100644 --- a/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs +++ b/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs @@ -1,4 +1,7 @@ -using OpenQA.Selenium.Appium; +using System.Threading; +using OpenQA.Selenium; +using OpenQA.Selenium.Appium; +using OpenQA.Selenium.Interactions; using Xunit; namespace Avalonia.IntegrationTests.Appium @@ -15,6 +18,12 @@ namespace Avalonia.IntegrationTests.Appium var tabs = _session.FindElementByAccessibilityId("MainTabs"); var tab = tabs.FindElementByName("Menu"); tab.Click(); + + var reset = _session.FindElementByAccessibilityId("MenuClickedMenuItemReset"); + reset.Click(); + + var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); + Assert.Equal("None", clickedMenuItem.Text); } [Fact] @@ -48,11 +57,59 @@ namespace Avalonia.IntegrationTests.Appium Assert.Equal("_Grandchild", clickedMenuItem.Text); } + [PlatformFact(SkipOnOSX = true)] + public void Select_Child_With_Arrow_Keys() + { + new Actions(_session) + .KeyDown(Keys.Alt).KeyUp(Keys.Alt) + .SendKeys(Keys.Down + Keys.Enter) + .Perform(); + + var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); + Assert.Equal("_Child 1", clickedMenuItem.Text); + } + + [PlatformFact(SkipOnOSX = true)] + public void Select_Grandchild_With_Arrow_Keys() + { + new Actions(_session) + .KeyDown(Keys.Alt).KeyUp(Keys.Alt) + .SendKeys(Keys.Down + Keys.Down + Keys.Right + Keys.Enter) + .Perform(); + + var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); + Assert.Equal("_Grandchild", clickedMenuItem.Text); + } + + [PlatformFact(SkipOnOSX = true)] + public void Select_Child_With_Access_Keys() + { + new Actions(_session) + .KeyDown(Keys.Alt).KeyUp(Keys.Alt) + .SendKeys("rc") + .Perform(); + + var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); + Assert.Equal("_Child 1", clickedMenuItem.Text); + } + + [PlatformFact(SkipOnOSX = true)] + public void Select_Grandchild_With_Access_Keys() + { + new Actions(_session) + .KeyDown(Keys.Alt).KeyUp(Keys.Alt) + .SendKeys("rhg") + .Perform(); + + var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); + Assert.Equal("_Grandchild", clickedMenuItem.Text); + } + [PlatformFact(SkipOnOSX = true)] public void Child_AcceleratorKey() { var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem"); - + rootMenuItem.SendClick(); var childMenuItem = _session.FindElementByAccessibilityId("Child1MenuItem");