284 lines
15 KiB
C#
284 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
|
|||
|
{
|
|||
|
[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; // Если окно не найдено в пределах тайм-аута
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|