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

5
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<TextBlock>("ClickedMenuItem");
clickedMenuItemTextBlock.Text = ((MenuItem)sender!).Header.ToString();
clickedMenuItemTextBlock.Text = ((MenuItem)e.Source!).Header.ToString();
}
private void OnButtonClick(object? sender, RoutedEventArgs e)

60
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());
}

Loading…
Cancel
Save