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;
namespace Avalonia.IntegrationTests.Win32
@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Win32
[Collection("Default")]
public class AutomationTests
{
private WindowsDriver<WindowsElement> _session;
private AppiumDriver<AppiumWebElement> _session;
public AutomationTests(TestAppFixture fixture)
{

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

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

4
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<WindowsElement> _session;
private AppiumDriver<AppiumWebElement> _session;
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;
namespace Avalonia.IntegrationTests.Win32
@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Win32
[Collection("Default")]
public class CheckBoxTests
{
private WindowsDriver<WindowsElement> _session;
private AppiumDriver<AppiumWebElement> _session;
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;
namespace Avalonia.IntegrationTests.Win32
@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Win32
[Collection("Default")]
public class ComboBoxTests
{
private WindowsDriver<WindowsElement> _session;
private AppiumDriver<AppiumWebElement> _session;
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;
namespace Avalonia.IntegrationTests.Win32
@ -6,7 +6,7 @@ namespace Avalonia.IntegrationTests.Win32
[Collection("Default")]
public class MenuTests
{
private WindowsDriver<WindowsElement> _session;
private AppiumDriver<AppiumWebElement> _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.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<WindowsElement>(
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<AppiumWebElement>(
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<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();

Loading…
Cancel
Save