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

284 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
{
[Collection("Sequential")]
public class VacationWindowTests
{
private readonly Application _application;
private readonly AutomationBase _automation;
public VacationWindowTests()
{
_automation = new UIA3Automation();
_application = Application.Launch("C:\\Users\\kashi\\Desktop\\Univer\\7\\КПО\\Project\\EmployeeManagmentView\\bin\\Debug\\net8.0-windows\\EmployeeManagmentView.exe");
}
[Fact]
public void TestOpenViewVacationManagementWindow()
{
var mainWindow = _application.GetMainWindow(_automation);
var vacationButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с сотрудниками")).AsButton();
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Работа с сотрудниками");
vacationButton.Invoke();
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
var vacationManagementWindow = WaitForWindow("Управление сотрудниками");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Управление сотрудниками");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Просмотр сотрудников");
vacationButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var vacationAddWindow = WaitForWindow("Просмотр сотрудников");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Просмотр сотрудников");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Работа с отпусками");
vacationButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var vacationManagmentWindow = WaitForWindow("Управление отпуском");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Управление отпуском");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Просмотр отпусков");
vacationButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var vacationCrudWindow = WaitForWindow("Список отпусков сотрудников");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Список отпусков сотрудников");
// Закрытие окон
vacationManagementWindow?.Close();
vacationAddWindow?.Close();
vacationManagmentWindow?.Close();
vacationCrudWindow?.Close();
mainWindow?.Close();
}
[Fact]
public void TestOpenEditVacationManagementWindow()
{
var mainWindow = _application.GetMainWindow(_automation);
var vacationButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с сотрудниками")).AsButton();
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Работа с сотрудниками");
vacationButton.Invoke();
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
var vacationManagementWindow = WaitForWindow("Управление сотрудниками");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Управление сотрудниками");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Просмотр сотрудников");
vacationButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var vacationAddWindow = WaitForWindow("Просмотр сотрудников");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Просмотр сотрудников");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Работа с отпусками");
vacationButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var vacationManagmentWindow = WaitForWindow("Управление отпуском");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Управление отпуском");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Редактирование отпуска");
vacationButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var vacationCrudWindow = WaitForWindow("Редактирование отпуска");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Редактирование отпуска");
// Закрытие окон
vacationManagementWindow?.Close();
vacationAddWindow?.Close();
vacationManagmentWindow?.Close();
vacationCrudWindow?.Close();
mainWindow?.Close();
}
[Fact]
public void TestOpenDeleteVacationManagementWindow()
{
var mainWindow = _application.GetMainWindow(_automation);
var vacationButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с сотрудниками")).AsButton();
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Работа с сотрудниками");
vacationButton.Invoke();
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
var vacationManagementWindow = WaitForWindow("Управление сотрудниками");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Управление сотрудниками");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Просмотр сотрудников");
vacationButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var vacationAddWindow = WaitForWindow("Просмотр сотрудников");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Просмотр сотрудников");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Работа с отпусками");
vacationButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var vacationManagmentWindow = WaitForWindow("Управление отпуском");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Управление зарплатой");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Удаление отпуска");
vacationButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var vacationCrudWindow = WaitForWindow("Удаление отпуска");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Удаление отпуска");
// Закрытие окон
vacationManagementWindow?.Close();
vacationAddWindow?.Close();
vacationManagmentWindow?.Close();
vacationCrudWindow?.Close();
mainWindow?.Close();
}
[Fact]
public void TestOpenAddVacationManagementWindow()
{
var mainWindow = _application.GetMainWindow(_automation);
var vacationButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с сотрудниками")).AsButton();
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Работа с сотрудниками");
vacationButton.Invoke();
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
var vacationManagementWindow = WaitForWindow("Управление сотрудниками");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Управление сотрудниками");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Просмотр сотрудников");
vacationButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var vacationAddWindow = WaitForWindow("Просмотр сотрудников");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Просмотр сотрудников");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Работа с отпусками");
vacationButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var vacationManagmentWindow = WaitForWindow("Управление отпуском");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Управление отпуском");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(vacationButton.IsEnabled, "Добавление отпуска");
vacationButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var vacationCrudWindow = WaitForWindow("Добавление отпуска");
Assert.NotNull(vacationManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(vacationManagementWindow.IsEnabled, "Добавление отпуска");
// Закрытие окон
vacationManagementWindow?.Close();
vacationAddWindow?.Close();
vacationManagmentWindow?.Close();
vacationCrudWindow?.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; // Если окно не найдено в пределах тайм-аута
}
}
}