diff --git a/samples/IntegrationTestApp/MainWindow.axaml b/samples/IntegrationTestApp/MainWindow.axaml
index c72d45783c..57f8971aab 100644
--- a/samples/IntegrationTestApp/MainWindow.axaml
+++ b/samples/IntegrationTestApp/MainWindow.axaml
@@ -5,12 +5,20 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="IntegrationTestApp.MainWindow"
Title="IntegrationTestApp">
+
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/samples/IntegrationTestApp/MainWindow.axaml.cs b/samples/IntegrationTestApp/MainWindow.axaml.cs
index 1d3ca28432..5cff7ccdbc 100644
--- a/samples/IntegrationTestApp/MainWindow.axaml.cs
+++ b/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("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);
+ }
+ }
}
}
diff --git a/tests/Avalonia.IntegrationTests.Appium/AutomationTests.cs b/tests/Avalonia.IntegrationTests.Appium/AutomationTests.cs
index 38e4a70e88..bad015506f 100644
--- a/tests/Avalonia.IntegrationTests.Appium/AutomationTests.cs
+++ b/tests/Avalonia.IntegrationTests.Appium/AutomationTests.cs
@@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Appium
[Collection("Default")]
public class AutomationTests
{
- private AppiumDriver _session;
+ private readonly AppiumDriver _session;
public AutomationTests(TestAppFixture fixture)
{
diff --git a/tests/Avalonia.IntegrationTests.Appium/ButtonTests.cs b/tests/Avalonia.IntegrationTests.Appium/ButtonTests.cs
index 8856d7f58d..2ac859e091 100644
--- a/tests/Avalonia.IntegrationTests.Appium/ButtonTests.cs
+++ b/tests/Avalonia.IntegrationTests.Appium/ButtonTests.cs
@@ -7,7 +7,7 @@ namespace Avalonia.IntegrationTests.Appium
[Collection("Default")]
public class ButtonTests
{
- private AppiumDriver _session;
+ private readonly AppiumDriver _session;
public ButtonTests(TestAppFixture fixture)
{
diff --git a/tests/Avalonia.IntegrationTests.Appium/ComboBoxTests.cs b/tests/Avalonia.IntegrationTests.Appium/ComboBoxTests.cs
index f8920e6290..746a919162 100644
--- a/tests/Avalonia.IntegrationTests.Appium/ComboBoxTests.cs
+++ b/tests/Avalonia.IntegrationTests.Appium/ComboBoxTests.cs
@@ -7,7 +7,7 @@ namespace Avalonia.IntegrationTests.Appium
[Collection("Default")]
public class ComboBoxTests
{
- private AppiumDriver _session;
+ private readonly AppiumDriver _session;
public ComboBoxTests(TestAppFixture fixture)
{
diff --git a/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs b/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs
index a2c3ee0e44..4a0e5d76ba 100644
--- a/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs
+++ b/tests/Avalonia.IntegrationTests.Appium/MenuTests.cs
@@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Appium
[Collection("Default")]
public class MenuTests
{
- private AppiumDriver _session;
+ private readonly AppiumDriver _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();
diff --git a/tests/Avalonia.IntegrationTests.Appium/NativeMenuTests.cs b/tests/Avalonia.IntegrationTests.Appium/NativeMenuTests.cs
new file mode 100644
index 0000000000..fde01f0e41
--- /dev/null
+++ b/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 _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);
+ }
+ }
+}