Browse Source

Refactored Menu integration tests.

ui-automation-test
Steven Kirk 5 years ago
parent
commit
f6e06a6d15
  1. 14
      samples/IntegrationTestApp/MainWindow.axaml
  2. 7
      samples/IntegrationTestApp/MainWindow.axaml.cs
  3. 2
      tests/Avalonia.IntegrationTests.Appium/ComboBoxTests.cs
  4. 5
      tests/Avalonia.IntegrationTests.Appium/ElementExtensions.cs
  5. 50
      tests/Avalonia.IntegrationTests.Appium/MenuTests.cs

14
samples/IntegrationTestApp/MainWindow.axaml

@ -71,6 +71,20 @@
</ComboBox>
</StackPanel>
</TabItem>
<TabItem Header="Menu">
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Name="RootMenuItem" Header="_Root">0
<MenuItem Name="Child1MenuItem" Header="_Child 1" InputGesture="Ctrl+O" Click="MenuClicked"/>
<MenuItem Name="Child2MenuItem" Header="_Child 1">
<MenuItem Name="GrandchildMenuItem" Header="_Grandchild" Click="MenuClicked"/>
</MenuItem>
</MenuItem>
</Menu>
<TextBlock Name="ClickedMenuItem">None</TextBlock>
</DockPanel>
</TabItem>
</TabControl>
</DockPanel>
</Window>

7
samples/IntegrationTestApp/MainWindow.axaml.cs

@ -1,6 +1,7 @@
using System;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
namespace IntegrationTestApp
@ -37,5 +38,11 @@ namespace IntegrationTestApp
viewMenu.Menu.Items.Add(menuItem);
}
}
private void MenuClicked(object? sender, RoutedEventArgs e)
{
var clickedMenuItemTextBlock = this.FindControl<TextBlock>("ClickedMenuItem");
clickedMenuItemTextBlock.Text = ((MenuItem)sender!).Header.ToString();
}
}
}

2
tests/Avalonia.IntegrationTests.Appium/ComboBoxTests.cs

@ -26,7 +26,7 @@ namespace Avalonia.IntegrationTests.Appium
Assert.Equal(string.Empty, comboBox.Text);
((MacElement)comboBox).Click();
_session.FindElementByName("Bar").ClickListItem();
_session.FindElementByName("Bar").SendClick();
Assert.Equal("Bar", comboBox.Text);
}

5
tests/Avalonia.IntegrationTests.Appium/ElementExtensions.cs

@ -19,7 +19,7 @@ namespace Avalonia.IntegrationTests.Appium
_ => throw new ArgumentOutOfRangeException($"Unexpected IsChecked value.")
};
public static void ClickListItem(this AppiumWebElement element)
public static void SendClick(this AppiumWebElement element)
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
@ -27,7 +27,8 @@ namespace Avalonia.IntegrationTests.Appium
}
else
{
// List items don't respond to performClick on MacOS, so instead send a physical click as VoiceOver
// The Click() method seems to correspond to accessibilityPerformPress on macOS but certain controls
// such as list items don't support this action, so instead simulate a physical click as VoiceOver
// does.
var action = new Actions(element.WrappedDriver);
action.MoveToElement(element);

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

@ -8,24 +8,56 @@ namespace Avalonia.IntegrationTests.Appium
{
private readonly AppiumDriver<AppiumWebElement> _session;
public MenuTests(TestAppFixture fixture) => _session = fixture.Session;
public MenuTests(TestAppFixture fixture)
{
_session = fixture.Session;
var tabs = _session.FindElementByAccessibilityId("MainTabs");
var tab = tabs.FindElementByName("Menu");
tab.Click();
}
[Fact]
public void Click_Child()
{
var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem");
rootMenuItem.SendClick();
var childMenuItem = _session.FindElementByAccessibilityId("Child1MenuItem");
childMenuItem.SendClick();
var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Child 1", clickedMenuItem.Text);
}
[Fact]
public void File()
public void Click_Grandchild()
{
var fileMenu = _session.FindElementByAccessibilityId("FileMenu");
var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem");
rootMenuItem.SendClick();
Assert.Equal("File", fileMenu.Text);
var childMenuItem = _session.FindElementByAccessibilityId("Child2MenuItem");
childMenuItem.SendClick();
var grandchildMenuItem = _session.FindElementByAccessibilityId("GrandchildMenuItem");
grandchildMenuItem.SendClick();
var clickedMenuItem = _session.FindElementByAccessibilityId("ClickedMenuItem");
Assert.Equal("_Grandchild", clickedMenuItem.Text);
}
[PlatformFact(SkipOnOSX = true)]
public void OpenMenu_AcceleratorKey()
public void Child_AcceleratorKey()
{
var fileMenu = _session.FindElementByAccessibilityId("FileMenu");
fileMenu.Click();
var rootMenuItem = _session.FindElementByAccessibilityId("RootMenuItem");
rootMenuItem.SendClick();
var childMenuItem = _session.FindElementByAccessibilityId("Child1MenuItem");
var openMenu = fileMenu.FindElementByAccessibilityId("OpenMenu");
Assert.Equal("Ctrl+O", openMenu.GetAttribute("AcceleratorKey"));
Assert.Equal("Ctrl+O", childMenuItem.GetAttribute("AcceleratorKey"));
}
}
}

Loading…
Cancel
Save