From 77f535f49d6bff0ccbfd431c87ca796a249788ef Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Fri, 12 Nov 2021 15:34:34 +0100 Subject: [PATCH] Trying to use a shared project for win32/mac integration tests. --- .../AutomationTests.cs | 4 +- .../Avalonia.IntegrationTests.Win32.csproj | 2 +- .../ButtonTests.cs | 4 +- .../CheckBoxTests.cs | 4 +- .../ComboBoxTests.cs | 4 +- .../MenuTests.cs | 4 +- .../TestAppFixture.cs | 47 ++++++++++++++----- 7 files changed, 45 insertions(+), 24 deletions(-) diff --git a/tests/Avalonia.IntegrationTests.Win32/AutomationTests.cs b/tests/Avalonia.IntegrationTests.Win32/AutomationTests.cs index 045a4f08d1..735214426f 100644 --- a/tests/Avalonia.IntegrationTests.Win32/AutomationTests.cs +++ b/tests/Avalonia.IntegrationTests.Win32/AutomationTests.cs @@ -1,4 +1,4 @@ -using OpenQA.Selenium.Appium.Windows; +using OpenQA.Selenium.Appium; using Xunit; namespace Avalonia.IntegrationTests.Win32 @@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Win32 [Collection("Default")] public class AutomationTests { - private WindowsDriver _session; + private AppiumDriver _session; public AutomationTests(TestAppFixture fixture) { diff --git a/tests/Avalonia.IntegrationTests.Win32/Avalonia.IntegrationTests.Win32.csproj b/tests/Avalonia.IntegrationTests.Win32/Avalonia.IntegrationTests.Win32.csproj index f38f8b0ce1..095f0e63e0 100644 --- a/tests/Avalonia.IntegrationTests.Win32/Avalonia.IntegrationTests.Win32.csproj +++ b/tests/Avalonia.IntegrationTests.Win32/Avalonia.IntegrationTests.Win32.csproj @@ -1,7 +1,7 @@  - netcoreapp3.1 + net6.0 enable diff --git a/tests/Avalonia.IntegrationTests.Win32/ButtonTests.cs b/tests/Avalonia.IntegrationTests.Win32/ButtonTests.cs index 21c2b1a7e3..d44d1db1a2 100644 --- a/tests/Avalonia.IntegrationTests.Win32/ButtonTests.cs +++ b/tests/Avalonia.IntegrationTests.Win32/ButtonTests.cs @@ -1,4 +1,4 @@ -using OpenQA.Selenium.Appium.Windows; +using OpenQA.Selenium.Appium; using Xunit; namespace Avalonia.IntegrationTests.Win32 @@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Win32 [Collection("Default")] public class ButtonTests { - private WindowsDriver _session; + private AppiumDriver _session; public ButtonTests(TestAppFixture fixture) { diff --git a/tests/Avalonia.IntegrationTests.Win32/CheckBoxTests.cs b/tests/Avalonia.IntegrationTests.Win32/CheckBoxTests.cs index ebf7408eab..fdc3f10415 100644 --- a/tests/Avalonia.IntegrationTests.Win32/CheckBoxTests.cs +++ b/tests/Avalonia.IntegrationTests.Win32/CheckBoxTests.cs @@ -1,4 +1,4 @@ -using OpenQA.Selenium.Appium.Windows; +using OpenQA.Selenium.Appium; using Xunit; namespace Avalonia.IntegrationTests.Win32 @@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Win32 [Collection("Default")] public class CheckBoxTests { - private WindowsDriver _session; + private AppiumDriver _session; public CheckBoxTests(TestAppFixture fixture) { diff --git a/tests/Avalonia.IntegrationTests.Win32/ComboBoxTests.cs b/tests/Avalonia.IntegrationTests.Win32/ComboBoxTests.cs index 6764343c02..b920974b5c 100644 --- a/tests/Avalonia.IntegrationTests.Win32/ComboBoxTests.cs +++ b/tests/Avalonia.IntegrationTests.Win32/ComboBoxTests.cs @@ -1,4 +1,4 @@ -using OpenQA.Selenium.Appium.Windows; +using OpenQA.Selenium.Appium; using Xunit; namespace Avalonia.IntegrationTests.Win32 @@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Win32 [Collection("Default")] public class ComboBoxTests { - private WindowsDriver _session; + private AppiumDriver _session; public ComboBoxTests(TestAppFixture fixture) { diff --git a/tests/Avalonia.IntegrationTests.Win32/MenuTests.cs b/tests/Avalonia.IntegrationTests.Win32/MenuTests.cs index 3d93afec12..c95bc405e8 100644 --- a/tests/Avalonia.IntegrationTests.Win32/MenuTests.cs +++ b/tests/Avalonia.IntegrationTests.Win32/MenuTests.cs @@ -1,4 +1,4 @@ -using OpenQA.Selenium.Appium.Windows; +using OpenQA.Selenium.Appium; using Xunit; namespace Avalonia.IntegrationTests.Win32 @@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Win32 [Collection("Default")] public class MenuTests { - private WindowsDriver _session; + private AppiumDriver _session; public MenuTests(TestAppFixture fixture) => _session = fixture.Session; diff --git a/tests/Avalonia.IntegrationTests.Win32/TestAppFixture.cs b/tests/Avalonia.IntegrationTests.Win32/TestAppFixture.cs index b179aea6a9..6fdc7acd96 100644 --- a/tests/Avalonia.IntegrationTests.Win32/TestAppFixture.cs +++ b/tests/Avalonia.IntegrationTests.Win32/TestAppFixture.cs @@ -3,32 +3,53 @@ using System.Globalization; using System.IO; using System.Runtime.InteropServices; using OpenQA.Selenium.Appium; +using OpenQA.Selenium.Appium.Enums; +using OpenQA.Selenium.Appium.Mac; using OpenQA.Selenium.Appium.Windows; namespace Avalonia.IntegrationTests.Win32 { public class TestAppFixture : IDisposable { - private const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723"; - private const string TestAppPath = @"..\..\..\..\..\samples\IntegrationTestApp\bin\Debug\net6.0\IntegrationTestApp.exe"; + private const string TestAppPath = @"..\..\..\..\..\samples\IntegrationTestApp\bin\Debug\net6.0\IntegrationTestApp"; public TestAppFixture() { var opts = new AppiumOptions(); var path = Path.GetFullPath(TestAppPath); - opts.AddAdditionalCapability("app", path); - opts.AddAdditionalCapability("deviceName", "WindowsPC"); - Session = new WindowsDriver( - new Uri(WindowsApplicationDriverUrl), - opts); - - // https://github.com/microsoft/WinAppDriver/issues/1025 - SetForegroundWindow(new IntPtr(int.Parse( - Session.WindowHandles[0].Substring(2), - NumberStyles.AllowHexSpecifier))); + + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + opts.AddAdditionalCapability(MobileCapabilityType.App, path + ".exe"); + opts.AddAdditionalCapability(MobileCapabilityType.PlatformName, MobilePlatform.Windows); + opts.AddAdditionalCapability(MobileCapabilityType.DeviceName, "WindowsPC"); + + Session = new WindowsDriver( + new Uri("http://127.0.0.1:4723"), + opts); + + // https://github.com/microsoft/WinAppDriver/issues/1025 + SetForegroundWindow(new IntPtr(int.Parse( + Session.WindowHandles[0].Substring(2), + NumberStyles.AllowHexSpecifier))); + } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + opts.AddAdditionalCapability(MobileCapabilityType.App, path + ".exe"); + opts.AddAdditionalCapability(MobileCapabilityType.PlatformName, MobilePlatform.MacOS); + opts.AddAdditionalCapability(MobileCapabilityType.AutomationName, "mac2"); + + Session = new MacDriver( + new Uri("http://127.0.0.1:4723/wd/hub"), + opts); + } + else + { + throw new NotSupportedException("Unsupported platform."); + } } - public WindowsDriver Session { get; } + public AppiumDriver Session { get; } public void Dispose() => Session.Close();