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); + } + } +}