Files
proton-bridge/tests/e2e/ui_tests/windows_os/TestSession.cs

87 lines
2.6 KiB
C#

using System;
using System.Threading;
using FlaUI.Core.AutomationElements;
using FlaUI.Core;
using FlaUI.UIA3;
using ProtonMailBridge.UI.Tests.TestsHelper;
using FlaUI.Core.Input;
using System.Diagnostics;
namespace ProtonMailBridge.UI.Tests
{
public class TestSession
{
public static Application App;
protected static Application Service;
protected static Window Window;
protected static Window ChromeWindow;
protected static Window FileExplorerWindow;
protected static void ClientCleanup()
{
App.Kill();
App.Dispose();
// Give some time to properly exit the app
Thread.Sleep(10000);
}
public static void switchToFileExplorerWindow()
{
var _automation = new UIA3Automation();
var desktop = _automation.GetDesktop();
var _explorerWindow = desktop.FindFirstDescendant(cf => cf.ByClassName("CabinetWClass"));
// If the File Explorer window is not found, fail the test
if (_explorerWindow == null)
{
throw new Exception("File Explorer window not found.");
}
// Cast the found element to a Window object
FileExplorerWindow = _explorerWindow.AsWindow();
// Focus on the File Explorer window
FileExplorerWindow.Focus();
}
public static void switchToChromeWindow()
{
var _automation = new UIA3Automation();
var desktop = _automation.GetDesktop();
var _chromeWindow = desktop.FindFirstDescendant(cf => cf.ByClassName("Chrome_WidgetWin_1"));
// If the Chrome window is not found, fail the test
if (_chromeWindow == null)
{
throw new Exception("Google Chrome window not found.");
}
// Cast the found element to a Window object
ChromeWindow = _chromeWindow.AsWindow();
// Focus on the Chrome window
ChromeWindow.Focus();
}
public static void LaunchApp()
{
string appExecutable = TestData.AppExecutable;
Application.Launch(appExecutable);
Wait.UntilInputIsProcessed(TestData.FiveSecondsTimeout);
App = Application.Attach("bridge-gui.exe");
try
{
Window = App.GetMainWindow(new UIA3Automation(), TestData.ThirtySecondsTimeout);
}
catch (System.TimeoutException)
{
Assert.Fail("Failed to get window of application!");
}
}
}
}