307 lines
15 KiB
C#
307 lines
15 KiB
C#
using FlaUI.Core;
|
||
using FlaUI.Core.AutomationElements;
|
||
using FlaUI.UIA3;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using Xunit;
|
||
|
||
namespace EmployeeManagmentTests.UI
|
||
{
|
||
public class SalaryWindowTests
|
||
{
|
||
private readonly Application _application;
|
||
private readonly AutomationBase _automation;
|
||
|
||
public SalaryWindowTests()
|
||
{
|
||
_automation = new UIA3Automation();
|
||
_application = Application.Launch("C:\\Users\\kashi\\Desktop\\Univer\\7\\КПО\\Project\\EmployeeManagmentView\\bin\\Debug\\net8.0-windows\\EmployeeManagmentView.exe");
|
||
}
|
||
|
||
|
||
[Fact]
|
||
public void TestOpenViewSalaryManagementWindow()
|
||
{
|
||
var mainWindow = _application.GetMainWindow(_automation);
|
||
var salaryButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с сотрудниками")).AsButton();
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Работа с сотрудниками");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
|
||
var salaryManagementWindow = WaitForWindow("Управление сотрудниками");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Управление сотрудниками");
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Просмотр сотрудников");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||
var salaryAddWindow = WaitForWindow("Просмотр сотрудников");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Просмотр сотрудников");
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Работа с зарплатой");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||
var salaryManagmentWindow = WaitForWindow("Управление зарплатой");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Управление зарплатой");
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Просмотр зарплат");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||
var salaryCrudWindow = WaitForWindow("Список зарплат");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Список зарплат");
|
||
|
||
|
||
// Закрытие окон
|
||
salaryManagementWindow?.Close();
|
||
salaryAddWindow?.Close();
|
||
salaryManagmentWindow?.Close();
|
||
salaryCrudWindow?.Close();
|
||
mainWindow?.Close();
|
||
|
||
}
|
||
|
||
[Fact]
|
||
public void TestOpenEditSalaryManagementWindow()
|
||
{
|
||
var mainWindow = _application.GetMainWindow(_automation);
|
||
var salaryButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с сотрудниками")).AsButton();
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Работа с сотрудниками");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
|
||
var salaryManagementWindow = WaitForWindow("Управление сотрудниками");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Управление сотрудниками");
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Просмотр сотрудников");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||
var salaryAddWindow = WaitForWindow("Просмотр сотрудников");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Просмотр сотрудников");
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Работа с зарплатой");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||
var salaryManagmentWindow = WaitForWindow("Управление зарплатой");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Управление зарплатой");
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Редактирование зарплат");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||
var salaryCrudWindow = WaitForWindow("Редактирование зарплат");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Редактирование зарплат");
|
||
|
||
|
||
// Закрытие окон
|
||
salaryManagementWindow?.Close();
|
||
salaryAddWindow?.Close();
|
||
salaryManagmentWindow?.Close();
|
||
salaryCrudWindow?.Close();
|
||
mainWindow?.Close();
|
||
|
||
}
|
||
|
||
[Fact]
|
||
public void TestOpenDeleteSalaryManagementWindow()
|
||
{
|
||
var mainWindow = _application.GetMainWindow(_automation);
|
||
var salaryButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с сотрудниками")).AsButton();
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Работа с сотрудниками");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
|
||
var salaryManagementWindow = WaitForWindow("Управление сотрудниками");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Управление сотрудниками");
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Просмотр сотрудников");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||
var salaryAddWindow = WaitForWindow("Просмотр сотрудников");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Просмотр сотрудников");
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Работа с зарплатой");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||
var salaryManagmentWindow = WaitForWindow("Управление зарплатой");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Управление зарплатой");
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Удаление зарплат");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||
var salaryCrudWindow = WaitForWindow("Удаление зарплат");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Удаление зарплат");
|
||
|
||
|
||
// Закрытие окон
|
||
salaryManagementWindow?.Close();
|
||
salaryAddWindow?.Close();
|
||
salaryManagmentWindow?.Close();
|
||
salaryCrudWindow?.Close();
|
||
mainWindow?.Close();
|
||
|
||
}
|
||
|
||
[Fact]
|
||
public void TestOpenAddSalaryManagementWindow()
|
||
{
|
||
var mainWindow = _application.GetMainWindow(_automation);
|
||
var salaryButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с сотрудниками")).AsButton();
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Работа с сотрудниками");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
|
||
var salaryManagementWindow = WaitForWindow("Управление сотрудниками");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Управление сотрудниками");
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Просмотр сотрудников");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||
var salaryAddWindow = WaitForWindow("Просмотр сотрудников");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Просмотр сотрудников");
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Работа с зарплатой");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||
var salaryManagmentWindow = WaitForWindow("Управление зарплатой");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Управление зарплатой");
|
||
|
||
// Проверяем, что кнопка доступна и выполняем клик
|
||
Assert.True(salaryButton.IsEnabled, "Добавление зарплаты");
|
||
salaryButton.Invoke();
|
||
|
||
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||
var salaryCrudWindow = WaitForWindow("Добавление зарплаты");
|
||
Assert.NotNull(salaryManagementWindow);
|
||
Thread.Sleep(100);
|
||
|
||
// Проверяем, что окно доступно и готово к взаимодействию
|
||
Assert.True(salaryManagementWindow.IsEnabled, "Добавление зарплаты");
|
||
|
||
|
||
// Закрытие окон
|
||
salaryManagementWindow?.Close();
|
||
salaryAddWindow?.Close();
|
||
salaryManagmentWindow?.Close();
|
||
salaryCrudWindow?.Close();
|
||
mainWindow?.Close();
|
||
|
||
}
|
||
|
||
|
||
private Window WaitForWindow(string windowTitle, int timeout = 10000) // Увеличен таймаут
|
||
{
|
||
var startTime = DateTime.Now;
|
||
while ((DateTime.Now - startTime).TotalMilliseconds < timeout)
|
||
{
|
||
var window = _application.GetAllTopLevelWindows(_automation)
|
||
.FirstOrDefault(w => w.Title.Contains(windowTitle));
|
||
if (window != null && window.IsEnabled)
|
||
{
|
||
return window;
|
||
}
|
||
Thread.Sleep(200); // Увеличена пауза между попытками
|
||
}
|
||
return null; // Если окно не найдено в пределах тайм-аута
|
||
}
|
||
|
||
|
||
public void Dispose()
|
||
{
|
||
_application.Close();
|
||
_automation.Dispose();
|
||
}
|
||
}
|
||
}
|