PIbd-42_Kashin_M.I_CPO_Cour.../EmployeeManagmentTests/UI/SalaryWindowTests.cs
2024-12-09 23:46:32 +04:00

307 lines
15 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
}
}
}