Доделал тесты
This commit is contained in:
parent
3eff31e7b3
commit
2f7e26689d
191
EmployeeManagmentTests/UI/EmployeeWindowTests.cs
Normal file
191
EmployeeManagmentTests/UI/EmployeeWindowTests.cs
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
using EmployeeManagmentView.PhysicalPerson;
|
||||||
|
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 EmployeeWindowTests
|
||||||
|
{
|
||||||
|
private readonly Application _application;
|
||||||
|
private readonly AutomationBase _automation;
|
||||||
|
|
||||||
|
public EmployeeWindowTests()
|
||||||
|
{
|
||||||
|
_automation = new UIA3Automation();
|
||||||
|
_application = Application.Launch("C:\\Users\\kashi\\Desktop\\Univer\\7\\КПО\\Project\\EmployeeManagmentView\\bin\\Debug\\net8.0-windows\\EmployeeManagmentView.exe");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestOpenAddEmployeeManagementWindow()
|
||||||
|
{
|
||||||
|
var mainWindow = _application.GetMainWindow(_automation);
|
||||||
|
var employeeButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с сотрудниками")).AsButton();
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(employeeButton.IsEnabled, "Работа с сотрудниками");
|
||||||
|
employeeButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
|
||||||
|
var employeeManagementWindow = WaitForWindow("Управление сотрудниками");
|
||||||
|
Assert.NotNull(employeeManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(employeeManagementWindow.IsEnabled, "Управление сотрудниками");
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(employeeButton.IsEnabled, "Добавление сотрудника");
|
||||||
|
employeeButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||||||
|
var employeeAddWindow = WaitForWindow("Добавление сотрудника");
|
||||||
|
Assert.NotNull(employeeManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(employeeManagementWindow.IsEnabled, "Добавление сотрудника");
|
||||||
|
|
||||||
|
// Закрытие окон
|
||||||
|
employeeManagementWindow?.Close();
|
||||||
|
employeeAddWindow?.Close();
|
||||||
|
mainWindow?.Close();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestOpenDeleteEmployeeManagementWindow()
|
||||||
|
{
|
||||||
|
var mainWindow = _application.GetMainWindow(_automation);
|
||||||
|
var employeeButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с сотрудниками")).AsButton();
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(employeeButton.IsEnabled, "Работа с сотрудниками");
|
||||||
|
employeeButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
|
||||||
|
var employeeManagementWindow = WaitForWindow("Управление сотрудниками");
|
||||||
|
Assert.NotNull(employeeManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(employeeManagementWindow.IsEnabled, "Управление сотрудниками");
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(employeeButton.IsEnabled, "Удаление сотрудников");
|
||||||
|
employeeButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||||||
|
var employeeAddWindow = WaitForWindow("Удаление сотрудников");
|
||||||
|
Assert.NotNull(employeeManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(employeeManagementWindow.IsEnabled, "Удаление сотрудников");
|
||||||
|
|
||||||
|
// Закрытие окон
|
||||||
|
employeeManagementWindow?.Close();
|
||||||
|
employeeAddWindow?.Close();
|
||||||
|
mainWindow?.Close();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestOpenEditEmployeeManagementWindow()
|
||||||
|
{
|
||||||
|
var mainWindow = _application.GetMainWindow(_automation);
|
||||||
|
var employeeButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с сотрудниками")).AsButton();
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(employeeButton.IsEnabled, "Работа с сотрудниками");
|
||||||
|
employeeButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
|
||||||
|
var employeeManagementWindow = WaitForWindow("Управление сотрудниками");
|
||||||
|
Assert.NotNull(employeeManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(employeeManagementWindow.IsEnabled, "Управление сотрудниками");
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(employeeButton.IsEnabled, "Редактирование сотрудника");
|
||||||
|
employeeButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||||||
|
var employeeAddWindow = WaitForWindow("Редактирование сотрудника");
|
||||||
|
Assert.NotNull(employeeManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(employeeManagementWindow.IsEnabled, "Редактирование сотрудника");
|
||||||
|
|
||||||
|
// Закрытие окон
|
||||||
|
employeeManagementWindow?.Close();
|
||||||
|
employeeAddWindow?.Close();
|
||||||
|
mainWindow?.Close();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestOpenViewEmployeeManagementWindow()
|
||||||
|
{
|
||||||
|
var mainWindow = _application.GetMainWindow(_automation);
|
||||||
|
var employeeButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с сотрудниками")).AsButton();
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(employeeButton.IsEnabled, "Работа с сотрудниками");
|
||||||
|
employeeButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
|
||||||
|
var employeeManagementWindow = WaitForWindow("Управление сотрудниками");
|
||||||
|
Assert.NotNull(employeeManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(employeeManagementWindow.IsEnabled, "Управление сотрудниками");
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(employeeButton.IsEnabled, "Просмотр сотрудников");
|
||||||
|
employeeButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||||||
|
var employeeAddWindow = WaitForWindow("Просмотр сотрудников");
|
||||||
|
Assert.NotNull(employeeManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(employeeManagementWindow.IsEnabled, "Просмотр сотрудников");
|
||||||
|
|
||||||
|
// Закрытие окон
|
||||||
|
employeeManagementWindow?.Close();
|
||||||
|
employeeAddWindow?.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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -6,6 +6,8 @@ using FlaUI.UIA3;
|
|||||||
using Xunit;
|
using Xunit;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
using EmployeeManagmentView.PhysicalPerson;
|
||||||
|
using EmployeeManagmentView.Employee;
|
||||||
|
|
||||||
namespace EmployeeManagmentTests.UI
|
namespace EmployeeManagmentTests.UI
|
||||||
{
|
{
|
||||||
@ -21,6 +23,8 @@ namespace EmployeeManagmentTests.UI
|
|||||||
_application = Application.Launch("C:\\Users\\kashi\\Desktop\\Univer\\7\\КПО\\Project\\EmployeeManagmentView\\bin\\Debug\\net8.0-windows\\EmployeeManagmentView.exe");
|
_application = Application.Launch("C:\\Users\\kashi\\Desktop\\Univer\\7\\КПО\\Project\\EmployeeManagmentView\\bin\\Debug\\net8.0-windows\\EmployeeManagmentView.exe");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void TestOpenEmployeeManagementWindow()
|
public void TestOpenEmployeeManagementWindow()
|
||||||
{
|
{
|
||||||
@ -37,6 +41,10 @@ namespace EmployeeManagmentTests.UI
|
|||||||
|
|
||||||
// Проверяем, что окно доступно и готово к взаимодействию
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
Assert.True(employeeManagementWindow.IsEnabled, "Управление сотрудниками");
|
Assert.True(employeeManagementWindow.IsEnabled, "Управление сотрудниками");
|
||||||
|
|
||||||
|
// Закрытие окон
|
||||||
|
mainWindow?.Close();
|
||||||
|
employeeManagementWindow?.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
@ -55,8 +63,15 @@ namespace EmployeeManagmentTests.UI
|
|||||||
|
|
||||||
// Проверяем, что окно доступно и готово к взаимодействию
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
Assert.True(physicalPersonManagementWindow.IsEnabled, "Управление физическими лицами");
|
Assert.True(physicalPersonManagementWindow.IsEnabled, "Управление физическими лицами");
|
||||||
|
|
||||||
|
|
||||||
|
// Закрытие окон
|
||||||
|
mainWindow?.Close();
|
||||||
|
physicalPersonManagementWindow?.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private Window WaitForWindow(string windowTitle, int timeout = 10000) // Увеличен таймаут
|
private Window WaitForWindow(string windowTitle, int timeout = 10000) // Увеличен таймаут
|
||||||
{
|
{
|
||||||
var startTime = DateTime.Now;
|
var startTime = DateTime.Now;
|
||||||
|
188
EmployeeManagmentTests/UI/PhysicalPersonWindowTests.cs
Normal file
188
EmployeeManagmentTests/UI/PhysicalPersonWindowTests.cs
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
using EmployeeManagmentView.Employee;
|
||||||
|
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 PhysicalPersonWindowTests
|
||||||
|
{
|
||||||
|
private readonly Application _application;
|
||||||
|
private readonly AutomationBase _automation;
|
||||||
|
|
||||||
|
public PhysicalPersonWindowTests()
|
||||||
|
{
|
||||||
|
_automation = new UIA3Automation();
|
||||||
|
_application = Application.Launch("C:\\Users\\kashi\\Desktop\\Univer\\7\\КПО\\Project\\EmployeeManagmentView\\bin\\Debug\\net8.0-windows\\EmployeeManagmentView.exe");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestOpenAddPhysicalPersonManagementWindow()
|
||||||
|
{
|
||||||
|
var mainWindow = _application.GetMainWindow(_automation);
|
||||||
|
var physicalPersonButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с физ. лицами")).AsButton();
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(physicalPersonButton.IsEnabled, "Работа с физ. лицами");
|
||||||
|
physicalPersonButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
|
||||||
|
var physicalPersonManagementWindow = WaitForWindow("Управление физическими лицами");
|
||||||
|
Assert.NotNull(physicalPersonManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(physicalPersonManagementWindow.IsEnabled, "Управление физическими лицами");
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(physicalPersonButton.IsEnabled, "Добавление физического лица");
|
||||||
|
physicalPersonButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||||||
|
var physicalPersonAddWindow = WaitForWindow("Добавление физического лица");
|
||||||
|
Assert.NotNull(physicalPersonManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(physicalPersonManagementWindow.IsEnabled, "Добавление физического лица");
|
||||||
|
|
||||||
|
// Закрытие окон
|
||||||
|
physicalPersonAddWindow?.Close();
|
||||||
|
physicalPersonManagementWindow?.Close();
|
||||||
|
mainWindow?.Close();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestOpenDeletePhysicalPersonManagementWindow()
|
||||||
|
{
|
||||||
|
var mainWindow = _application.GetMainWindow(_automation);
|
||||||
|
var physicalPersonButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с физ. лицами")).AsButton();
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(physicalPersonButton.IsEnabled, "Работа с физ. лицами");
|
||||||
|
physicalPersonButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
|
||||||
|
var physicalPersonManagementWindow = WaitForWindow("Управление физическими лицами");
|
||||||
|
Assert.NotNull(physicalPersonManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(physicalPersonManagementWindow.IsEnabled, "Управление физическими лицами");
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(physicalPersonButton.IsEnabled, "Удаление физического лица");
|
||||||
|
physicalPersonButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||||||
|
var physicalPersonAddWindow = WaitForWindow("Удаление физического лица");
|
||||||
|
Assert.NotNull(physicalPersonManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(physicalPersonManagementWindow.IsEnabled, "Удаление физического лица");
|
||||||
|
|
||||||
|
// Закрытие окон
|
||||||
|
physicalPersonAddWindow?.Close();
|
||||||
|
physicalPersonManagementWindow?.Close();
|
||||||
|
mainWindow?.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestOpenEditPhysicalPersonManagementWindow()
|
||||||
|
{
|
||||||
|
var mainWindow = _application.GetMainWindow(_automation);
|
||||||
|
var physicalPersonButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с физ. лицами")).AsButton();
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(physicalPersonButton.IsEnabled, "Работа с физ. лицами");
|
||||||
|
physicalPersonButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
|
||||||
|
var physicalPersonManagementWindow = WaitForWindow("Управление физическими лицами");
|
||||||
|
Assert.NotNull(physicalPersonManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(physicalPersonManagementWindow.IsEnabled, "Управление физическими лицами");
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(physicalPersonButton.IsEnabled, "Редактирование физического лица");
|
||||||
|
physicalPersonButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||||||
|
var physicalPersonAddWindow = WaitForWindow("Редактирование физического лица");
|
||||||
|
Assert.NotNull(physicalPersonManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(physicalPersonManagementWindow.IsEnabled, "Редактирование физического лица");
|
||||||
|
|
||||||
|
// Закрытие окон
|
||||||
|
physicalPersonAddWindow?.Close();
|
||||||
|
physicalPersonManagementWindow?.Close();
|
||||||
|
mainWindow?.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestOpenViewPhysicalPersonManagementWindow()
|
||||||
|
{
|
||||||
|
var mainWindow = _application.GetMainWindow(_automation);
|
||||||
|
var physicalPersonButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с физ. лицами")).AsButton();
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(physicalPersonButton.IsEnabled, "Работа с физ. лицами");
|
||||||
|
physicalPersonButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
|
||||||
|
var physicalPersonManagementWindow = WaitForWindow("Управление физическими лицами");
|
||||||
|
Assert.NotNull(physicalPersonManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(physicalPersonManagementWindow.IsEnabled, "Управление физическими лицами");
|
||||||
|
|
||||||
|
// Проверяем, что кнопка доступна и выполняем клик
|
||||||
|
Assert.True(physicalPersonButton.IsEnabled, "Просмотр физического лица");
|
||||||
|
physicalPersonButton.Invoke();
|
||||||
|
|
||||||
|
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
|
||||||
|
var physicalPersonAddWindow = WaitForWindow("Просмотр физического лица");
|
||||||
|
Assert.NotNull(physicalPersonManagementWindow);
|
||||||
|
|
||||||
|
// Проверяем, что окно доступно и готово к взаимодействию
|
||||||
|
Assert.True(physicalPersonManagementWindow.IsEnabled, "Просмотр физического лица");
|
||||||
|
|
||||||
|
// Закрытие окон
|
||||||
|
physicalPersonAddWindow?.Close();
|
||||||
|
physicalPersonManagementWindow?.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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
306
EmployeeManagmentTests/UI/SalaryWindowTests.cs
Normal file
306
EmployeeManagmentTests/UI/SalaryWindowTests.cs
Normal file
@ -0,0 +1,306 @@
|
|||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
283
EmployeeManagmentTests/UI/VacationWindowTests.cs
Normal file
283
EmployeeManagmentTests/UI/VacationWindowTests.cs
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
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; // Если окно не найдено в пределах тайм-аута
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,4 @@
|
|||||||
|
using System.Runtime.CompilerServices;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
|
||||||
[assembly: ThemeInfo(
|
[assembly: ThemeInfo(
|
||||||
@ -8,3 +9,6 @@ using System.Windows;
|
|||||||
//(used if a resource is not found in the page,
|
//(used if a resource is not found in the page,
|
||||||
// app, or any theme specific resource dictionaries)
|
// app, or any theme specific resource dictionaries)
|
||||||
)]
|
)]
|
||||||
|
|
||||||
|
[assembly: InternalsVisibleTo("EmployeeManagmentTests")]
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:local="clr-namespace:EmployeeManagmentDataModels.Enums;assembly=EmployeeManagmentDataModels"
|
xmlns:local="clr-namespace:EmployeeManagmentDataModels.Enums;assembly=EmployeeManagmentDataModels"
|
||||||
Title="Управление зарплатами"
|
Title="Удаление зарплат"
|
||||||
Height="600" Width="800"
|
Height="600" Width="800"
|
||||||
ResizeMode="NoResize"
|
ResizeMode="NoResize"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:local="clr-namespace:EmployeeManagmentDataModels.Enums;assembly=EmployeeManagmentDataModels"
|
xmlns:local="clr-namespace:EmployeeManagmentDataModels.Enums;assembly=EmployeeManagmentDataModels"
|
||||||
Title="Управление зарплатами"
|
Title="Список зарплат"
|
||||||
Height="600" Width="800"
|
Height="600" Width="800"
|
||||||
ResizeMode="NoResize"
|
ResizeMode="NoResize"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:local="clr-namespace:EmployeeManagmentDataModels.Enums;assembly=EmployeeManagmentDataModels"
|
xmlns:local="clr-namespace:EmployeeManagmentDataModels.Enums;assembly=EmployeeManagmentDataModels"
|
||||||
Title="Управление отпусками"
|
Title="Удаление отпуска"
|
||||||
Height="600" Width="800"
|
Height="600" Width="800"
|
||||||
ResizeMode="NoResize"
|
ResizeMode="NoResize"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<Window x:Class="EmployeeManagmentView.Employee.ViewEmployeeWindow"
|
<Window x:Class="EmployeeManagmentView.Employee.ViewEmployeeWindow"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
Title="Удаление сотрудников"
|
Title="Просмотр сотрудников"
|
||||||
Height="500" Width="800"
|
Height="500" Width="800"
|
||||||
ResizeMode="NoResize"
|
ResizeMode="NoResize"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
<Grid>
|
<Grid>
|
||||||
<!-- Заголовок окна -->
|
<!-- Заголовок окна -->
|
||||||
<TextBlock Text="Список сотрудников для удаления"
|
<TextBlock Text="Список сотрудников"
|
||||||
HorizontalAlignment="Center" VerticalAlignment="Top"
|
HorizontalAlignment="Center" VerticalAlignment="Top"
|
||||||
FontSize="18" FontWeight="Bold"
|
FontSize="18" FontWeight="Bold"
|
||||||
Foreground="White"
|
Foreground="White"
|
||||||
|
@ -25,6 +25,10 @@ namespace EmployeeManagmentView
|
|||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MainWindow()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public void OpenPhysicalPersonManagementWindow(object sender, RoutedEventArgs e)
|
public void OpenPhysicalPersonManagementWindow(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
foreach (Window window in Application.Current.Windows)
|
foreach (Window window in Application.Current.Windows)
|
||||||
|
@ -30,7 +30,7 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|||||||
Margin="0,0,0,10"
|
Margin="0,0,0,10"
|
||||||
Style="{StaticResource RoundedButtonStyle}"
|
Style="{StaticResource RoundedButtonStyle}"
|
||||||
Background="#004890" Foreground="#FFFFFF"
|
Background="#004890" Foreground="#FFFFFF"
|
||||||
Click="OpenAddPhysicalPersonWindow"/>
|
Click="OpenAddPhysicalPersonWindow" RenderTransformOrigin="0.402,0.626"/>
|
||||||
|
|
||||||
<!-- Кнопка "Редактирование физического лица" -->
|
<!-- Кнопка "Редактирование физического лица" -->
|
||||||
<Button Content="Редактирование физического лица"
|
<Button Content="Редактирование физического лица"
|
||||||
|
Loading…
Reference in New Issue
Block a user