瀏覽代碼

Additional menu integration tests.

Steven Kirk 3 年之前
父節點
當前提交
5d35ac324f

+ 2 - 1
samples/IntegrationTestApp/MainWindow.axaml

@@ -82,13 +82,14 @@
           <Menu DockPanel.Dock="Top">
             <MenuItem Name="RootMenuItem" Header="_Root">
               <MenuItem Name="Child1MenuItem" Header="_Child 1" InputGesture="Ctrl+O" Click="MenuClicked"/>
-              <MenuItem Name="Child2MenuItem" Header="_Child 1">
+              <MenuItem Name="Child2MenuItem" Header="C_hild 2">
                 <MenuItem Name="GrandchildMenuItem" Header="_Grandchild" Click="MenuClicked"/>
               </MenuItem>
             </MenuItem>
           </Menu>
           <StackPanel>
             <TextBlock Name="ClickedMenuItem">None</TextBlock>
+            <Button Name="MenuClickedMenuItemReset">Reset</Button>
             <TextBox Name="MenuFocusTest"/>
           </StackPanel>
         </DockPanel>

+ 2 - 0
samples/IntegrationTestApp/MainWindow.axaml.cs

@@ -62,6 +62,8 @@ namespace IntegrationTestApp
                 this.FindControl<ComboBox>("BasicComboBox").SelectedIndex = 0;
             if (source?.Name == "ListBoxSelectionClear")
                 this.FindControl<ListBox>("BasicListBox").SelectedIndex = -1;
+            if (source?.Name == "MenuClickedMenuItemReset")
+                this.FindControl<TextBlock>("ClickedMenuItem").Text = "None";
         }
     }
 }

+ 59 - 2
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");