12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- using System;
- using System.Globalization;
- using System.IO;
- using System.Runtime.InteropServices;
- using OpenQA.Selenium.Appium;
- using OpenQA.Selenium.Appium.Enums;
- namespace Avalonia.IntegrationTests.Appium
- {
- public class DefaultAppFixture : IDisposable
- {
- private const string TestAppPath = @"..\..\..\..\..\samples\IntegrationTestApp\bin\Debug\net8.0\IntegrationTestApp.exe";
- private const string TestAppBundleId = "net.avaloniaui.avalonia.integrationtestapp";
- public DefaultAppFixture()
- {
- var options = new AppiumOptions();
- if (OperatingSystem.IsWindows())
- {
- ConfigureWin32Options(options);
- Session = new WindowsDriver(
- new Uri("http://127.0.0.1:4723"),
- options);
- // https://github.com/microsoft/WinAppDriver/issues/1025
- SetForegroundWindow(new IntPtr(int.Parse(
- Session.WindowHandles[0].Substring(2),
- NumberStyles.AllowHexSpecifier)));
- }
- else if (OperatingSystem.IsMacOS())
- {
- ConfigureMacOptions(options);
- Session = new MacDriver(
- new Uri("http://127.0.0.1:4723/wd/hub"),
- options);
- }
- else
- {
- throw new PlatformNotSupportedException();
- }
- }
- protected virtual void ConfigureWin32Options(AppiumOptions options, string? app = null)
- {
- options.AddAdditionalCapability(MobileCapabilityType.App, app ?? Path.GetFullPath(TestAppPath));
- options.AddAdditionalCapability(MobileCapabilityType.PlatformName, MobilePlatform.Windows);
- options.AddAdditionalCapability(MobileCapabilityType.DeviceName, "WindowsPC");
- }
- protected virtual void ConfigureMacOptions(AppiumOptions options, string? app = null)
- {
- options.AddAdditionalCapability("appium:bundleId", app ?? TestAppBundleId);
- options.AddAdditionalCapability(MobileCapabilityType.PlatformName, MobilePlatform.MacOS);
- options.AddAdditionalCapability(MobileCapabilityType.AutomationName, "mac2");
- options.AddAdditionalCapability("appium:showServerLogs", true);
- }
- public AppiumDriver Session { get; }
- public void Dispose()
- {
- try
- {
- Session.Close();
- }
- catch
- {
- // Closing the session currently seems to crash the mac2 driver.
- }
- }
- public AppiumDriver CreateNestedSession(string appName)
- {
- var options = new AppiumOptions();
- if (OperatingSystem.IsWindows())
- {
- ConfigureWin32Options(options, appName);
-
- return new WindowsDriver(new Uri("http://127.0.0.1:4723"), options);
- }
- else if (OperatingSystem.IsMacOS())
- {
- ConfigureMacOptions(options, appName);
- return new MacDriver(new Uri("http://127.0.0.1:4723/wd/hub"), options);
- }
- else
- {
- throw new PlatformNotSupportedException();
- }
- }
- [DllImport("user32.dll")]
- [return: MarshalAs(UnmanagedType.Bool)]
- private static extern bool SetForegroundWindow(IntPtr hWnd);
- }
- }
|