Browse Source

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
fixes/7777-menu-accelerator
Steven Kirk 4 years ago
parent
commit
0c24e54c6a
  1. 10
      samples/IntegrationTestApp/MainWindow.axaml
  2. 5
      samples/IntegrationTestApp/MainWindow.axaml.cs
  3. 60
      tests/Avalonia.IntegrationTests.Appium/MenuTests.cs

10
samples/IntegrationTestApp/MainWindow.axaml

@ -18,8 +18,6 @@
</NativeMenu> </NativeMenu>
</NativeMenu.Menu> </NativeMenu.Menu>
<DockPanel> <DockPanel>
<NativeMenuBar DockPanel.Dock="Top"/>
<TabControl TabStripPlacement="Left" Name="MainTabs"> <TabControl TabStripPlacement="Left" Name="MainTabs">
<TabItem Header="Automation"> <TabItem Header="Automation">
<StackPanel> <StackPanel>
@ -80,10 +78,10 @@
<TabItem Header="Menu"> <TabItem Header="Menu">
<DockPanel> <DockPanel>
<Menu DockPanel.Dock="Top"> <Menu DockPanel.Dock="Top">
<MenuItem Name="RootMenuItem" Header="_Root"> <MenuItem Name="FileMenu" Header="_File">
<MenuItem Name="Child1MenuItem" Header="_Child 1" InputGesture="Ctrl+O" Click="MenuClicked"/> <MenuItem Name="OpenMenu" Header="_Open..." InputGesture="Ctrl+O"/>
<MenuItem Name="Child2MenuItem" Header="C_hild 2"> <MenuItem Name="OpenRecentMenu" Header="Open _Recent">
<MenuItem Name="GrandchildMenuItem" Header="_Grandchild" Click="MenuClicked"/> <MenuItem Name="OpenRecentFile1Menu" Header="File_1.txt"/>
</MenuItem> </MenuItem>
</MenuItem> </MenuItem>
</Menu> </Menu>

5
samples/IntegrationTestApp/MainWindow.axaml.cs

@ -16,6 +16,7 @@ namespace IntegrationTestApp
InitializeViewMenu(); InitializeViewMenu();
this.AttachDevTools(); this.AttachDevTools();
AddHandler(Button.ClickEvent, OnButtonClick); AddHandler(Button.ClickEvent, OnButtonClick);
AddHandler(MenuItem.ClickEvent, OnMenuItemClick);
ListBoxItems = Enumerable.Range(0, 100).Select(x => "Item " + x).ToList(); ListBoxItems = Enumerable.Range(0, 100).Select(x => "Item " + x).ToList();
DataContext = this; 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<TextBlock>("ClickedMenuItem"); var clickedMenuItemTextBlock = this.FindControl<TextBlock>("ClickedMenuItem");
clickedMenuItemTextBlock.Text = ((MenuItem)sender!).Header.ToString(); clickedMenuItemTextBlock.Text = ((MenuItem)e.Source!).Header.ToString();
} }
private void OnButtonClick(object? sender, RoutedEventArgs e) private void OnButtonClick(object? sender, RoutedEventArgs e)

60
tests/Avalonia.IntegrationTests.Appium/MenuTests.cs

@ -29,32 +29,32 @@ namespace Avalonia.IntegrationTests.Appium
[Fact] [Fact]
public void Click_Child() public void Click_Child()
{ {
var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem"); var fileMenu = _session.FindElementByAccessibilityId("FileMenu");
rootMenuItem.SendClick(); fileMenu.SendClick();
var childMenuItem = _session.FindElementByAccessibilityId("Child1MenuItem"); var openMenu = _session.FindElementByAccessibilityId("OpenMenu");
childMenuItem.SendClick(); openMenu.SendClick();
var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Child 1", clickedMenuItem.Text); Assert.Equal("_Open...", clickedMenuItem.Text);
} }
[Fact] [Fact]
public void Click_Grandchild() public void Click_Grandchild()
{ {
var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem"); var fileMenu = _session.FindElementByAccessibilityId("FileMenu");
rootMenuItem.SendClick(); fileMenu.SendClick();
var childMenuItem = _session.FindElementByAccessibilityId("Child2MenuItem"); var openRecentMenu = _session.FindElementByAccessibilityId("OpenRecentMenu");
childMenuItem.SendClick(); openRecentMenu.SendClick();
var grandchildMenuItem = _session.FindElementByAccessibilityId("GrandchildMenuItem"); var file1Menu = _session.FindElementByAccessibilityId("OpenRecentFile1Menu");
grandchildMenuItem.SendClick(); file1Menu.SendClick();
var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Grandchild", clickedMenuItem.Text); Assert.Equal("File_1.txt", clickedMenuItem.Text);
} }
[PlatformFact(SkipOnOSX = true)] [PlatformFact(SkipOnOSX = true)]
@ -66,7 +66,7 @@ namespace Avalonia.IntegrationTests.Appium
.Perform(); .Perform();
var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Child 1", clickedMenuItem.Text); Assert.Equal("_Open...", clickedMenuItem.Text);
} }
[PlatformFact(SkipOnOSX = true)] [PlatformFact(SkipOnOSX = true)]
@ -78,7 +78,7 @@ namespace Avalonia.IntegrationTests.Appium
.Perform(); .Perform();
var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Grandchild", clickedMenuItem.Text); Assert.Equal("File_1.txt", clickedMenuItem.Text);
} }
[PlatformFact(SkipOnOSX = true)] [PlatformFact(SkipOnOSX = true)]
@ -86,11 +86,11 @@ namespace Avalonia.IntegrationTests.Appium
{ {
new Actions(_session) new Actions(_session)
.KeyDown(Keys.Alt).KeyUp(Keys.Alt) .KeyDown(Keys.Alt).KeyUp(Keys.Alt)
.SendKeys("rc") .SendKeys("fo")
.Perform(); .Perform();
var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Child 1", clickedMenuItem.Text); Assert.Equal("_Open...", clickedMenuItem.Text);
} }
[PlatformFact(SkipOnOSX = true)] [PlatformFact(SkipOnOSX = true)]
@ -98,51 +98,51 @@ namespace Avalonia.IntegrationTests.Appium
{ {
new Actions(_session) new Actions(_session)
.KeyDown(Keys.Alt).KeyUp(Keys.Alt) .KeyDown(Keys.Alt).KeyUp(Keys.Alt)
.SendKeys("rhg") .SendKeys("fr1")
.Perform(); .Perform();
var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Grandchild", clickedMenuItem.Text); Assert.Equal("File_1.txt", clickedMenuItem.Text);
} }
[PlatformFact(SkipOnOSX = true)] [PlatformFact(SkipOnOSX = true)]
public void Select_Child_With_Click_Arrow_Keys() public void Select_Child_With_Click_Arrow_Keys()
{ {
var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem"); var fileMenu = _session.FindElementByAccessibilityId("FileMenu");
rootMenuItem.SendClick(); fileMenu.SendClick();
new Actions(_session) new Actions(_session)
.SendKeys(Keys.Down + Keys.Enter) .SendKeys(Keys.Down + Keys.Enter)
.Perform(); .Perform();
var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Child 1", clickedMenuItem.Text); Assert.Equal("_Open...", clickedMenuItem.Text);
} }
[PlatformFact(SkipOnOSX = true)] [PlatformFact(SkipOnOSX = true)]
public void Select_Grandchild_With_Click_Arrow_Keys() public void Select_Grandchild_With_Click_Arrow_Keys()
{ {
var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem"); var fileMenu = _session.FindElementByAccessibilityId("FileMenu");
rootMenuItem.SendClick(); fileMenu.SendClick();
new Actions(_session) new Actions(_session)
.SendKeys(Keys.Down + Keys.Down + Keys.Right + Keys.Enter) .SendKeys(Keys.Down + Keys.Down + Keys.Right + Keys.Enter)
.Perform(); .Perform();
var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem"); var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Grandchild", clickedMenuItem.Text); Assert.Equal("File_1.txt", clickedMenuItem.Text);
} }
[PlatformFact(SkipOnOSX = true)] [PlatformFact(SkipOnOSX = true)]
public void Child_AcceleratorKey() 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)] [PlatformFact(SkipOnOSX = true)]
@ -154,8 +154,8 @@ namespace Avalonia.IntegrationTests.Appium
Assert.True(textBox.GetIsFocused()); Assert.True(textBox.GetIsFocused());
var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem"); var FileMenu = _session.FindElementByAccessibilityId("FileMenu");
rootMenuItem.MovePointerOver(); FileMenu.MovePointerOver();
Assert.True(textBox.GetIsFocused()); Assert.True(textBox.GetIsFocused());
} }

Loading…
Cancel
Save