Browse Source

Added a NativeMenu test for macOS.

ui-automation-test
Steven Kirk 5 years ago
parent
commit
610ef6f467
  1. 18
      samples/IntegrationTestApp/MainWindow.axaml
  2. 21
      samples/IntegrationTestApp/MainWindow.axaml.cs
  3. 2
      tests/Avalonia.IntegrationTests.Appium/AutomationTests.cs
  4. 2
      tests/Avalonia.IntegrationTests.Appium/ButtonTests.cs
  5. 2
      tests/Avalonia.IntegrationTests.Appium/ComboBoxTests.cs
  6. 4
      tests/Avalonia.IntegrationTests.Appium/MenuTests.cs
  7. 37
      tests/Avalonia.IntegrationTests.Appium/NativeMenuTests.cs

18
samples/IntegrationTestApp/MainWindow.axaml

@ -5,12 +5,20 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="IntegrationTestApp.MainWindow"
Title="IntegrationTestApp">
<NativeMenu.Menu>
<NativeMenu>
<NativeMenuItem Header="File">
<NativeMenu>
<NativeMenuItem Header="Open..."/>
</NativeMenu>
</NativeMenuItem>
<NativeMenuItem Header="View">
<NativeMenu/>
</NativeMenuItem>
</NativeMenu>
</NativeMenu.Menu>
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Name="FileMenu" Header="_File">
<MenuItem Name="OpenMenu" Header="_Open..." InputGesture="Ctrl+O"/>
</MenuItem>
</Menu>
<NativeMenuBar DockPanel.Dock="Top"/>
<TabControl TabStripPlacement="Left" Name="MainTabs">
<TabItem Header="Automation">
<StackPanel>

21
samples/IntegrationTestApp/MainWindow.axaml.cs

@ -1,3 +1,4 @@
using System;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
@ -9,6 +10,7 @@ namespace IntegrationTestApp
public MainWindow()
{
InitializeComponent();
InitializeViewMenu();
this.AttachDevTools();
}
@ -16,5 +18,24 @@ namespace IntegrationTestApp
{
AvaloniaXamlLoader.Load(this);
}
private void InitializeViewMenu()
{
var mainTabs = this.FindControl<TabControl>("MainTabs");
var viewMenu = (NativeMenuItem)NativeMenu.GetMenu(this).Items[1];
foreach (TabItem tabItem in mainTabs.Items)
{
var menuItem = new NativeMenuItem
{
Header = (string)tabItem.Header!,
IsChecked = tabItem.IsSelected,
ToggleType = NativeMenuItemToggleType.Radio,
};
menuItem.Click += (s, e) => tabItem.IsSelected = true;
viewMenu.Menu.Items.Add(menuItem);
}
}
}
}

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

@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Appium
[Collection("Default")]
public class AutomationTests
{
private AppiumDriver<AppiumWebElement> _session;
private readonly AppiumDriver<AppiumWebElement> _session;
public AutomationTests(TestAppFixture fixture)
{

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

@ -7,7 +7,7 @@ namespace Avalonia.IntegrationTests.Appium
[Collection("Default")]
public class ButtonTests
{
private AppiumDriver<AppiumWebElement> _session;
private readonly AppiumDriver<AppiumWebElement> _session;
public ButtonTests(TestAppFixture fixture)
{

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

@ -7,7 +7,7 @@ namespace Avalonia.IntegrationTests.Appium
[Collection("Default")]
public class ComboBoxTests
{
private AppiumDriver<AppiumWebElement> _session;
private readonly AppiumDriver<AppiumWebElement> _session;
public ComboBoxTests(TestAppFixture fixture)
{

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

@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Appium
[Collection("Default")]
public class MenuTests
{
private AppiumDriver<AppiumWebElement> _session;
private readonly AppiumDriver<AppiumWebElement> _session;
public MenuTests(TestAppFixture fixture) => _session = fixture.Session;
@ -19,7 +19,7 @@ namespace Avalonia.IntegrationTests.Appium
}
[PlatformFact(SkipOnOSX = true)]
public void Open()
public void OpenMenu_AcceleratorKey()
{
var fileMenu = _session.FindElementByAccessibilityId("FileMenu");
fileMenu.Click();

37
tests/Avalonia.IntegrationTests.Appium/NativeMenuTests.cs

@ -0,0 +1,37 @@
using OpenQA.Selenium.Appium;
using Xunit;
namespace Avalonia.IntegrationTests.Appium
{
[Collection("Default")]
public class NativeMenuTests
{
private readonly AppiumDriver<AppiumWebElement> _session;
public NativeMenuTests(TestAppFixture fixture)
{
_session = fixture.Session;
var tabs = _session.FindElementByAccessibilityId("MainTabs");
var tab = tabs.FindElementByName("Automation");
tab.Click();
}
[PlatformFact(SkipOnWindows = true)]
public void View_Menu_Select_Button_Tab()
{
var tabs = _session.FindElementByAccessibilityId("MainTabs");
var buttonTab = tabs.FindElementByName("Button");
var menuBar = _session.FindElementByXPath("/XCUIElementTypeApplication/XCUIElementTypeMenuBar");
var viewMenu = menuBar.FindElementByName("View");
Assert.False(buttonTab.Selected);
viewMenu.Click();
var buttonMenu = viewMenu.FindElementByName("Button");
buttonMenu.Click();
Assert.True(buttonTab.Selected);
}
}
}
Loading…
Cancel
Save