forked from Silverfish/proton-bridge
87 lines
2.6 KiB
C#
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!");
|
|
}
|
|
}
|
|
}
|
|
} |