From 0c24e54c6abccfa45376a4bdae2f3364e2d4dc40 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sat, 9 Apr 2022 16:36:58 +0200 Subject: [PATCH] Refactor menu integration tests. - Remove the `NativeMenuBar` as it's not needed on Windows and mac uses the native menu - Make the menu structure look more like a real menu --- samples/IntegrationTestApp/MainWindow.axaml | 10 ++-- .../IntegrationTestApp/MainWindow.axaml.cs | 5 +- .../MenuTests.cs | 60 +++++++++---------- 3 files changed, 37 insertions(+), 38 deletions(-) diff --git a/samples/IntegrationTestApp/MainWindow.axaml b/samples/IntegrationTestApp/MainWindow.axaml index 19ac68b15b..c58a405e5a 100644 --- a/samples/IntegrationTestApp/MainWindow.axaml +++ b/samples/IntegrationTestApp/MainWindow.axaml @@ -18,8 +18,6 @@ - - @@ -80,10 +78,10 @@ - - - - + + + + diff --git a/samples/IntegrationTestApp/MainWindow.axaml.cs b/samples/IntegrationTestApp/MainWindow.axaml.cs index 9a612aa94d..28d1329cdf 100644 --- a/samples/IntegrationTestApp/MainWindow.axaml.cs +++ b/samples/IntegrationTestApp/MainWindow.axaml.cs @@ -16,6 +16,7 @@ namespace IntegrationTestApp InitializeViewMenu(); this.AttachDevTools(); AddHandler(Button.ClickEvent, OnButtonClick); + AddHandler(MenuItem.ClickEvent, OnMenuItemClick); ListBoxItems = Enumerable.Range(0, 100).Select(x => "Item " + x).ToList(); DataContext = this; } @@ -46,10 +47,10 @@ namespace IntegrationTestApp } } - private void MenuClicked(object? sender, RoutedEventArgs e) + private void OnMenuItemClick(object? sender, RoutedEventArgs e) { var clickedMenuItemTextBlock = this.FindControl("ClickedMenuItem"); - clickedMenuItemTextBlock.Text = ((MenuItem)sender!).Header.ToString(); + clickedMenuItemTextBlock.Text = ((MenuItem)e.Source!).Header.ToString(); } private void OnButtonClick(object? sender, RoutedEventArgs e) diff --git a/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs b/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs index 98fb335061..5cbe6622be 100644 --- a/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs +++ b/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs @@ -29,32 +29,32 @@ namespace Avalonia.IntegrationTests.Appium [Fact] public void Click_Child() { - var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem"); + var fileMenu = _session.FindElementByAccessibilityId("FileMenu"); - rootMenuItem.SendClick(); + fileMenu.SendClick(); - var childMenuItem = _session.FindElementByAccessibilityId("Child1MenuItem"); - childMenuItem.SendClick(); + var openMenu = _session.FindElementByAccessibilityId("OpenMenu"); + openMenu.SendClick(); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); - Assert.Equal("_Child 1", clickedMenuItem.Text); + Assert.Equal("_Open...", clickedMenuItem.Text); } [Fact] public void Click_Grandchild() { - var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem"); + var fileMenu = _session.FindElementByAccessibilityId("FileMenu"); - rootMenuItem.SendClick(); + fileMenu.SendClick(); - var childMenuItem = _session.FindElementByAccessibilityId("Child2MenuItem"); - childMenuItem.SendClick(); + var openRecentMenu = _session.FindElementByAccessibilityId("OpenRecentMenu"); + openRecentMenu.SendClick(); - var grandchildMenuItem = _session.FindElementByAccessibilityId("GrandchildMenuItem"); - grandchildMenuItem.SendClick(); + var file1Menu = _session.FindElementByAccessibilityId("OpenRecentFile1Menu"); + file1Menu.SendClick(); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); - Assert.Equal("_Grandchild", clickedMenuItem.Text); + Assert.Equal("File_1.txt", clickedMenuItem.Text); } [PlatformFact(SkipOnOSX = true)] @@ -66,7 +66,7 @@ namespace Avalonia.IntegrationTests.Appium .Perform(); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); - Assert.Equal("_Child 1", clickedMenuItem.Text); + Assert.Equal("_Open...", clickedMenuItem.Text); } [PlatformFact(SkipOnOSX = true)] @@ -78,7 +78,7 @@ namespace Avalonia.IntegrationTests.Appium .Perform(); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); - Assert.Equal("_Grandchild", clickedMenuItem.Text); + Assert.Equal("File_1.txt", clickedMenuItem.Text); } [PlatformFact(SkipOnOSX = true)] @@ -86,11 +86,11 @@ namespace Avalonia.IntegrationTests.Appium { new Actions(_session) .KeyDown(Keys.Alt).KeyUp(Keys.Alt) - .SendKeys("rc") + .SendKeys("fo") .Perform(); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); - Assert.Equal("_Child 1", clickedMenuItem.Text); + Assert.Equal("_Open...", clickedMenuItem.Text); } [PlatformFact(SkipOnOSX = true)] @@ -98,51 +98,51 @@ namespace Avalonia.IntegrationTests.Appium { new Actions(_session) .KeyDown(Keys.Alt).KeyUp(Keys.Alt) - .SendKeys("rhg") + .SendKeys("fr1") .Perform(); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); - Assert.Equal("_Grandchild", clickedMenuItem.Text); + Assert.Equal("File_1.txt", clickedMenuItem.Text); } [PlatformFact(SkipOnOSX = true)] public void Select_Child_With_Click_Arrow_Keys() { - var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem"); - rootMenuItem.SendClick(); + var fileMenu = _session.FindElementByAccessibilityId("FileMenu"); + fileMenu.SendClick(); new Actions(_session) .SendKeys(Keys.Down + Keys.Enter) .Perform(); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); - Assert.Equal("_Child 1", clickedMenuItem.Text); + Assert.Equal("_Open...", clickedMenuItem.Text); } [PlatformFact(SkipOnOSX = true)] public void Select_Grandchild_With_Click_Arrow_Keys() { - var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem"); - rootMenuItem.SendClick(); + var fileMenu = _session.FindElementByAccessibilityId("FileMenu"); + fileMenu.SendClick(); new Actions(_session) .SendKeys(Keys.Down + Keys.Down + Keys.Right + Keys.Enter) .Perform(); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); - Assert.Equal("_Grandchild", clickedMenuItem.Text); + Assert.Equal("File_1.txt", clickedMenuItem.Text); } [PlatformFact(SkipOnOSX = true)] public void Child_AcceleratorKey() { - var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem"); + var fileMenu = _session.FindElementByAccessibilityId("FileMenu"); - rootMenuItem.SendClick(); + fileMenu.SendClick(); - var childMenuItem = _session.FindElementByAccessibilityId("Child1MenuItem"); + var openMenu = _session.FindElementByAccessibilityId("OpenMenu"); - Assert.Equal("Ctrl+O", childMenuItem.GetAttribute("AcceleratorKey")); + Assert.Equal("Ctrl+O", openMenu.GetAttribute("AcceleratorKey")); } [PlatformFact(SkipOnOSX = true)] @@ -154,8 +154,8 @@ namespace Avalonia.IntegrationTests.Appium Assert.True(textBox.GetIsFocused()); - var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem"); - rootMenuItem.MovePointerOver(); + var FileMenu = _session.FindElementByAccessibilityId("FileMenu"); + FileMenu.MovePointerOver(); Assert.True(textBox.GetIsFocused()); }