From cab21b608430771eac07d4fdf87fca4a136fbe32 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Fri, 12 Nov 2021 23:21:56 +0100 Subject: [PATCH] Start making automation tests work on macOS. --- .../AutomationTests.cs | 2 +- .../ElementExtensions.cs | 16 ++++++++++++++++ .../TestAppFixture.cs | 7 ++++--- 3 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 tests/Avalonia.IntegrationTests.Win32/ElementExtensions.cs diff --git a/tests/Avalonia.IntegrationTests.Win32/AutomationTests.cs b/tests/Avalonia.IntegrationTests.Win32/AutomationTests.cs index 735214426f..42fc019e72 100644 --- a/tests/Avalonia.IntegrationTests.Win32/AutomationTests.cs +++ b/tests/Avalonia.IntegrationTests.Win32/AutomationTests.cs @@ -33,7 +33,7 @@ namespace Avalonia.IntegrationTests.Win32 var labeledTextBox = _session.FindElementByAccessibilityId("LabeledByTextBox"); Assert.Equal("Label for TextBox", label.Text); - Assert.Equal("Label for TextBox", labeledTextBox.GetAttribute("Name")); + Assert.Equal("Label for TextBox", labeledTextBox.GetName()); } } } diff --git a/tests/Avalonia.IntegrationTests.Win32/ElementExtensions.cs b/tests/Avalonia.IntegrationTests.Win32/ElementExtensions.cs new file mode 100644 index 0000000000..545a2741bf --- /dev/null +++ b/tests/Avalonia.IntegrationTests.Win32/ElementExtensions.cs @@ -0,0 +1,16 @@ +using System; +using System.Runtime.InteropServices; +using OpenQA.Selenium.Appium; + +namespace Avalonia.IntegrationTests.Win32 +{ + internal static class ElementExtensions + { + public static string GetName(this AppiumWebElement element) => GetAttribute(element, "Name", "title"); + + public static string GetAttribute(AppiumWebElement element, string windows, string macOS) + { + return element.GetAttribute(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? windows : macOS); + } + } +} diff --git a/tests/Avalonia.IntegrationTests.Win32/TestAppFixture.cs b/tests/Avalonia.IntegrationTests.Win32/TestAppFixture.cs index 6fdc7acd96..e8f73ec82d 100644 --- a/tests/Avalonia.IntegrationTests.Win32/TestAppFixture.cs +++ b/tests/Avalonia.IntegrationTests.Win32/TestAppFixture.cs @@ -11,7 +11,8 @@ namespace Avalonia.IntegrationTests.Win32 { public class TestAppFixture : IDisposable { - private const string TestAppPath = @"..\..\..\..\..\samples\IntegrationTestApp\bin\Debug\net6.0\IntegrationTestApp"; + private const string TestAppPath = @"..\..\..\..\..\samples\IntegrationTestApp\bin\Debug\net6.0\IntegrationTestApp.exe"; + private const string TestAppBundleId = "net.avaloniaui.avalonia.integrationtestapp"; public TestAppFixture() { @@ -20,7 +21,7 @@ namespace Avalonia.IntegrationTests.Win32 if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { - opts.AddAdditionalCapability(MobileCapabilityType.App, path + ".exe"); + opts.AddAdditionalCapability(MobileCapabilityType.App, path); opts.AddAdditionalCapability(MobileCapabilityType.PlatformName, MobilePlatform.Windows); opts.AddAdditionalCapability(MobileCapabilityType.DeviceName, "WindowsPC"); @@ -35,7 +36,7 @@ namespace Avalonia.IntegrationTests.Win32 } else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { - opts.AddAdditionalCapability(MobileCapabilityType.App, path + ".exe"); + opts.AddAdditionalCapability("appium:bundleId", TestAppBundleId); opts.AddAdditionalCapability(MobileCapabilityType.PlatformName, MobilePlatform.MacOS); opts.AddAdditionalCapability(MobileCapabilityType.AutomationName, "mac2");