Browse Source

Trying to use a shared project for win32/mac integration tests.

ui-automation-test
Steven Kirk 4 years ago
parent
commit
77f535f49d
  1. 4
      tests/Avalonia.IntegrationTests.Win32/AutomationTests.cs
  2. 2
      tests/Avalonia.IntegrationTests.Win32/Avalonia.IntegrationTests.Win32.csproj
  3. 4
      tests/Avalonia.IntegrationTests.Win32/ButtonTests.cs
  4. 4
      tests/Avalonia.IntegrationTests.Win32/CheckBoxTests.cs
  5. 4
      tests/Avalonia.IntegrationTests.Win32/ComboBoxTests.cs
  6. 4
      tests/Avalonia.IntegrationTests.Win32/MenuTests.cs
  7. 47
      tests/Avalonia.IntegrationTests.Win32/TestAppFixture.cs

4
tests/Avalonia.IntegrationTests.Win32/AutomationTests.cs

@ -1,4 +1,4 @@
using OpenQA.Selenium.Appium.Windows; using OpenQA.Selenium.Appium;
using Xunit; using Xunit;
namespace Avalonia.IntegrationTests.Win32 namespace Avalonia.IntegrationTests.Win32
@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Win32
[Collection("Default")] [Collection("Default")]
public class AutomationTests public class AutomationTests
{ {
private WindowsDriver<WindowsElement> _session; private AppiumDriver<AppiumWebElement> _session;
public AutomationTests(TestAppFixture fixture) public AutomationTests(TestAppFixture fixture)
{ {

2
tests/Avalonia.IntegrationTests.Win32/Avalonia.IntegrationTests.Win32.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>

4
tests/Avalonia.IntegrationTests.Win32/ButtonTests.cs

@ -1,4 +1,4 @@
using OpenQA.Selenium.Appium.Windows; using OpenQA.Selenium.Appium;
using Xunit; using Xunit;
namespace Avalonia.IntegrationTests.Win32 namespace Avalonia.IntegrationTests.Win32
@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Win32
[Collection("Default")] [Collection("Default")]
public class ButtonTests public class ButtonTests
{ {
private WindowsDriver<WindowsElement> _session; private AppiumDriver<AppiumWebElement> _session;
public ButtonTests(TestAppFixture fixture) public ButtonTests(TestAppFixture fixture)
{ {

4
tests/Avalonia.IntegrationTests.Win32/CheckBoxTests.cs

@ -1,4 +1,4 @@
using OpenQA.Selenium.Appium.Windows; using OpenQA.Selenium.Appium;
using Xunit; using Xunit;
namespace Avalonia.IntegrationTests.Win32 namespace Avalonia.IntegrationTests.Win32
@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Win32
[Collection("Default")] [Collection("Default")]
public class CheckBoxTests public class CheckBoxTests
{ {
private WindowsDriver<WindowsElement> _session; private AppiumDriver<AppiumWebElement> _session;
public CheckBoxTests(TestAppFixture fixture) public CheckBoxTests(TestAppFixture fixture)
{ {

4
tests/Avalonia.IntegrationTests.Win32/ComboBoxTests.cs

@ -1,4 +1,4 @@
using OpenQA.Selenium.Appium.Windows; using OpenQA.Selenium.Appium;
using Xunit; using Xunit;
namespace Avalonia.IntegrationTests.Win32 namespace Avalonia.IntegrationTests.Win32
@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Win32
[Collection("Default")] [Collection("Default")]
public class ComboBoxTests public class ComboBoxTests
{ {
private WindowsDriver<WindowsElement> _session; private AppiumDriver<AppiumWebElement> _session;
public ComboBoxTests(TestAppFixture fixture) public ComboBoxTests(TestAppFixture fixture)
{ {

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

@ -1,4 +1,4 @@
using OpenQA.Selenium.Appium.Windows; using OpenQA.Selenium.Appium;
using Xunit; using Xunit;
namespace Avalonia.IntegrationTests.Win32 namespace Avalonia.IntegrationTests.Win32
@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Win32
[Collection("Default")] [Collection("Default")]
public class MenuTests public class MenuTests
{ {
private WindowsDriver<WindowsElement> _session; private AppiumDriver<AppiumWebElement> _session;
public MenuTests(TestAppFixture fixture) => _session = fixture.Session; public MenuTests(TestAppFixture fixture) => _session = fixture.Session;

47
tests/Avalonia.IntegrationTests.Win32/TestAppFixture.cs

@ -3,32 +3,53 @@ using System.Globalization;
using System.IO; using System.IO;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using OpenQA.Selenium.Appium; using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Enums;
using OpenQA.Selenium.Appium.Mac;
using OpenQA.Selenium.Appium.Windows; using OpenQA.Selenium.Appium.Windows;
namespace Avalonia.IntegrationTests.Win32 namespace Avalonia.IntegrationTests.Win32
{ {
public class TestAppFixture : IDisposable 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";
private const string TestAppPath = @"..\..\..\..\..\samples\IntegrationTestApp\bin\Debug\net6.0\IntegrationTestApp.exe";
public TestAppFixture() public TestAppFixture()
{ {
var opts = new AppiumOptions(); var opts = new AppiumOptions();
var path = Path.GetFullPath(TestAppPath); var path = Path.GetFullPath(TestAppPath);
opts.AddAdditionalCapability("app", path);
opts.AddAdditionalCapability("deviceName", "WindowsPC"); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
Session = new WindowsDriver<WindowsElement>( {
new Uri(WindowsApplicationDriverUrl), opts.AddAdditionalCapability(MobileCapabilityType.App, path + ".exe");
opts); opts.AddAdditionalCapability(MobileCapabilityType.PlatformName, MobilePlatform.Windows);
opts.AddAdditionalCapability(MobileCapabilityType.DeviceName, "WindowsPC");
// https://github.com/microsoft/WinAppDriver/issues/1025
SetForegroundWindow(new IntPtr(int.Parse( Session = new WindowsDriver<AppiumWebElement>(
Session.WindowHandles[0].Substring(2), new Uri("http://127.0.0.1:4723"),
NumberStyles.AllowHexSpecifier))); 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<AppiumWebElement>(
new Uri("http://127.0.0.1:4723/wd/hub"),
opts);
}
else
{
throw new NotSupportedException("Unsupported platform.");
}
} }
public WindowsDriver<WindowsElement> Session { get; } public AppiumDriver<AppiumWebElement> Session { get; }
public void Dispose() => Session.Close(); public void Dispose() => Session.Close();

Loading…
Cancel
Save