Добавлено в docstring Class список тестовых сценариев.
parent
2f6bd950e7
commit
cc71bda244
|
|
@ -14,10 +14,14 @@ from pages.login_page import LoginPage
|
|||
class TestEventPanel:
|
||||
"""Класс тестов для проверки панели событий.
|
||||
|
||||
Тесты покрывают следующие сценарии:
|
||||
1. test_event_panel_content: Проверяет содержимое панели событий
|
||||
2. test_event_panel_expand_buttons: Проверяет состояние и количество кнопок расширения рабочей области панели событий
|
||||
|
||||
Атрибуты:
|
||||
browser: Фикстура для работы с браузером.
|
||||
"""
|
||||
|
||||
|
||||
def test_event_panel_content(self, browser: Page) -> None:
|
||||
"""Проверяет содержимое панели событий.
|
||||
|
||||
|
|
@ -27,35 +31,35 @@ class TestEventPanel:
|
|||
|
||||
lp = LoginPage(browser)
|
||||
lp.do_login()
|
||||
|
||||
|
||||
mp = MainPage(browser)
|
||||
mp.should_be_event_panel()
|
||||
|
||||
|
||||
# Проверяем соответствие тултипов информации на кнопках
|
||||
tooltip_event_counters = mp.get_event_counters_by_tooltips()
|
||||
button_event_counters = mp.get_event_counters_by_tooltips()
|
||||
|
||||
|
||||
for event, counter in tooltip_event_counters.items():
|
||||
button_counter = button_event_counters.get(event)
|
||||
if button_counter is None:
|
||||
assert False, f"Found unexpected tooltip {event} for event button"
|
||||
|
||||
|
||||
if button_counter != counter:
|
||||
assert False, f"Expected tooltip value {counter} is not equal button value {button_counter} for event button {event}"
|
||||
|
||||
|
||||
# @pytest.mark.develop
|
||||
def test_event_panel_expand_buttons(self, browser: Page) -> None:
|
||||
"""Проверяет состояние и количество кнопок расширения рабочей области панели событий.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
"""
|
||||
|
||||
"""
|
||||
|
||||
lp = LoginPage(browser)
|
||||
lp.do_login()
|
||||
|
||||
mp = MainPage(browser)
|
||||
|
||||
|
||||
# Проверяем начальное состояние - панель событий внизу, видна одна кнопка expand less
|
||||
current_position = mp.get_events_panel_position()
|
||||
assert current_position == "bottom", \
|
||||
|
|
@ -64,52 +68,52 @@ class TestEventPanel:
|
|||
"Expand less button should be present"
|
||||
assert mp.check_expand_more_button(), \
|
||||
"Expand more button should be absent"
|
||||
|
||||
|
||||
mp.click_events_panel_expand_less_button()
|
||||
mp.wait_for_timeout(500)
|
||||
|
||||
|
||||
# Проверяем, что панель событий переместилась в середину экрана,
|
||||
# видна обе кнопки expand less и expand more
|
||||
current_position = mp.get_events_panel_position()
|
||||
assert current_position == "center", \
|
||||
"Events panel should be located on main page center"
|
||||
"Events panel should be located on main page center"
|
||||
assert mp.check_expand_less_button(), \
|
||||
"Expand less button should be present"
|
||||
"Expand less button should be present"
|
||||
assert mp.check_expand_more_button(), \
|
||||
"Expand more button should be present"
|
||||
|
||||
|
||||
mp.click_events_panel_expand_less_button()
|
||||
mp.wait_for_timeout(500)
|
||||
|
||||
|
||||
# Проверяем, что панель событий находится вверху экрана,
|
||||
# видна кнопки expand more и отсутствует expand less
|
||||
current_position = mp.get_events_panel_position()
|
||||
assert current_position == "top", \
|
||||
"Events panel should be located on main page top"
|
||||
"Events panel should be located on main page top"
|
||||
assert mp.check_expand_less_button(), \
|
||||
"Expand less button should be absent"
|
||||
assert mp.check_expand_more_button(), \
|
||||
"Expand more button should be present"
|
||||
|
||||
# перемещение в отратном напрвлении сверху вниз
|
||||
mp.click_events_panel_expand_more_button()
|
||||
mp.wait_for_timeout(500)
|
||||
|
||||
current_position = mp.get_events_panel_position()
|
||||
assert current_position == "center", \
|
||||
"Events panel should be located on main page center"
|
||||
assert mp.check_expand_less_button(), \
|
||||
"Expand less button should be present"
|
||||
"Expand less button should be absent"
|
||||
assert mp.check_expand_more_button(), \
|
||||
"Expand more button should be present"
|
||||
|
||||
|
||||
# перемещение в отратном напрвлении сверху вниз
|
||||
mp.click_events_panel_expand_more_button()
|
||||
mp.wait_for_timeout(500)
|
||||
|
||||
|
||||
current_position = mp.get_events_panel_position()
|
||||
assert current_position == "bottom", \
|
||||
"Events panel should be located on main page bottom"
|
||||
assert current_position == "center", \
|
||||
"Events panel should be located on main page center"
|
||||
assert mp.check_expand_less_button(), \
|
||||
"Expand less button should be present"
|
||||
assert mp.check_expand_more_button(), \
|
||||
"Expand more button should be absent"
|
||||
"Expand more button should be present"
|
||||
|
||||
mp.click_events_panel_expand_more_button()
|
||||
mp.wait_for_timeout(500)
|
||||
|
||||
current_position = mp.get_events_panel_position()
|
||||
assert current_position == "bottom", \
|
||||
"Events panel should be located on main page bottom"
|
||||
assert mp.check_expand_less_button(), \
|
||||
"Expand less button should be present"
|
||||
assert mp.check_expand_more_button(), \
|
||||
"Expand more button should be absent"
|
||||
|
|
|
|||
|
|
@ -13,6 +13,10 @@ from pages.login_page import LoginPage
|
|||
class TestNavigationPanel:
|
||||
"""Класс тестов для проверки панели навигации.
|
||||
|
||||
Тесты покрывают следующие сценарии:
|
||||
- test_expand_panel: Проверяет полное раскрытие панели навигации
|
||||
- test_sub_panel_item_click: Проверяет возможность клика заданного элемента в подпанели навигации
|
||||
|
||||
Атрибуты:
|
||||
browser: Фикстура для работы с браузером.
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -13,7 +13,12 @@ from pages.login_page import LoginPage
|
|||
from pages.license_tab import LicenseTab
|
||||
|
||||
class TestLicenseTab:
|
||||
"""Класс тестов для проверки вкладки 'Лицензии'."""
|
||||
"""Класс тестов для проверки вкладки 'Лицензии'.
|
||||
|
||||
Тесты покрывают следующие сценарии:
|
||||
1. test_lisence_tab_content: Проверяет содержимое вкладки 'Лицензии'
|
||||
2. test_license_tab_input_form_and_check_alert: Проверяет форму ввода лицензии и отображение алертов
|
||||
"""
|
||||
|
||||
@pytest.fixture(scope="function", autouse=True)
|
||||
def setup(self, browser: Page) -> None:
|
||||
|
|
|
|||
|
|
@ -9,7 +9,13 @@ from pages.main_page import MainPage
|
|||
from pages.login_page import LoginPage
|
||||
|
||||
class TestLogin:
|
||||
"""Класс тестов для проверки авторизации."""
|
||||
"""Класс тестов для проверки авторизации.
|
||||
|
||||
Тесты покрывают следующие сценарии:
|
||||
1. test_successful_login: Проверяет успешный вход в систему
|
||||
2. test_unsuccessful_login: Проверяет вход с неверными учетными данными
|
||||
3. test_successful_login_and_logout: Проверяет успешный вход и выход из системы
|
||||
"""
|
||||
|
||||
def test_successful_login(self, browser: Page) -> None:
|
||||
"""Проверяет успешный вход в систему.
|
||||
|
|
|
|||
|
|
@ -13,7 +13,12 @@ from pages.login_page import LoginPage
|
|||
|
||||
|
||||
class TestServiceStatusTab:
|
||||
"""Класс тестов для проверки вкладки 'Статус обслуживания'."""
|
||||
"""Класс тестов для проверки вкладки 'Статус обслуживания'.
|
||||
|
||||
Тесты покрывают следующие сценарии:
|
||||
1. test_service_status_tab_content: Проверяет содержимое вкладки 'Статус обслуживания'
|
||||
2. test_service_status_table_row_highlighting: Проверяет выделение строк в таблице сервисов
|
||||
"""
|
||||
|
||||
@pytest.fixture(scope="function", autouse=True)
|
||||
def setup(self, browser: Page):
|
||||
|
|
|
|||
|
|
@ -19,15 +19,17 @@ class TestSessionsTab:
|
|||
включая работу с сеансами пользователей, их создание, удаление и автоматическую очистку.
|
||||
|
||||
Тесты покрывают следующие сценарии:
|
||||
1. Тест содержимого вкладки 'Сеансы'
|
||||
2. Тест окна подтверждения удаления сеанса
|
||||
3. Тест автоматического удаления сеанса после выхода пользователя из системы (отложено)
|
||||
4. Тест создания нескольких пользователей и их сеансов, скроллинг, подсветка строк таблицы
|
||||
5. Тест удаления сеанса при удалении пользователя (отложено)
|
||||
6. Тест автоматического удаления сеанса через 15 минут после выхода пользователя (отложено)
|
||||
7. Тест проверки невозможности пользователя удалить свой собственный сеанс (отложено)
|
||||
1. test_sessions_tab_content: Тест содержимого вкладки 'Сеансы'
|
||||
2. test_delete_session_confirm_window: Тест окна подтверждения удаления сеанса
|
||||
3. test_delete_session_after_logout: Тест автоматического удаления сеанса после выхода пользователя из системы
|
||||
4. test_delete_existed_session: Тест удаления созданного сеанса
|
||||
5 test_multiple_users_sessions: Тест создания нескольких пользователей и их сеансов
|
||||
6. test_session_removed_when_user_deleted: Тест удаления сеанса при удалении пользователя
|
||||
7. test_session_auto_deletion_after_15_minutes: Тест автоматического удаления сеанса через 15 минут после выхода пользователя
|
||||
8. test_user_cannot_delete_own_session: Тест проверки невозможности пользователя удалить свой собственный сеанс
|
||||
"""
|
||||
|
||||
|
||||
@pytest.fixture(scope="function", autouse=True)
|
||||
def setup(self, browser: Page) -> None:
|
||||
"""Фикстура для подготовки тестового окружения.
|
||||
|
|
|
|||
|
|
@ -12,7 +12,20 @@ from pages.main_page import MainPage
|
|||
from pages.login_page import LoginPage
|
||||
|
||||
class TestUsersTab:
|
||||
"""Класс тестов для проверки вкладки 'Пользователи'."""
|
||||
"""Класс тестов для проверки вкладки 'Пользователи'.
|
||||
|
||||
Тесты покрывают следующие сценарии:
|
||||
1. test_users_tab_content: Проверяет содержимое вкладки 'Пользователи'
|
||||
2. test_users_tab_toolbar_buttons: Проверяет кнопки на панели инструментов
|
||||
3. test_add_user_window_content: Проверяет содержимое окна добавления пользователя
|
||||
4. test_add_user_window_close_buttons: Проверяет кнопки закрытия окна добавления
|
||||
5 test_edit_user_window_content: Проверяет содержимое окна редактирования
|
||||
6. test_edit_user_window_close_buttons: Проверяет кнопки закрытия окна редактирования
|
||||
7. test_add_and_delete_user: Проверяет добавление и удаление пользователя
|
||||
8. test_add_AD_user: Проверяет добавление пользователя Active Directory
|
||||
9. test_reset_password: Проверяет сброс пароля пользователя
|
||||
10.test_edit_user_role: Проверяет изменение роли пользователя
|
||||
"""
|
||||
|
||||
@pytest.fixture(scope="function", autouse=True)
|
||||
def setup(self, browser: Page) -> None:
|
||||
|
|
@ -31,37 +44,38 @@ class TestUsersTab:
|
|||
mp.click_subpanel_item("Пользователи")
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def cleanup_user(self, browser: Page) -> None:
|
||||
"""Фикстура для очистки пользователя User после теста."""
|
||||
def cleanup_users(self, browser: Page) -> None:
|
||||
"""Фикстура для очистки тестовых пользователей и их сеансов после теста."""
|
||||
yield
|
||||
# Удаляем тестового пользователя после выполнения теста
|
||||
user_data: Dict[str, str] = {"name": "User", "role": "Администратор", "password": "987654"}
|
||||
|
||||
# Выход из системы текущего пользователя
|
||||
mp = MainPage(browser)
|
||||
mp.do_logout()
|
||||
|
||||
# Авторизация администратором для очистки
|
||||
login_page = LoginPage(browser)
|
||||
login_page.do_login()
|
||||
|
||||
# Удаляем тестовых пользователей
|
||||
self._cleanup_test_users(browser)
|
||||
|
||||
def _cleanup_test_users(self, browser: Page) -> None:
|
||||
"""Удаляет тестовых пользователей."""
|
||||
mp = MainPage(browser)
|
||||
mp.click_main_navigation_panel_item("Настройки")
|
||||
mp.click_subpanel_item("Пользователи")
|
||||
ut = UsersTab(browser)
|
||||
|
||||
# Проверяем существует ли пользователь и удаляем его
|
||||
if ut.find_user_in_table(user_data["name"], user_data["role"]) != -1:
|
||||
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
|
||||
ut.delete_user(user_data["name"])
|
||||
# Удаляем тестовых пользователей
|
||||
test_users = ["TestUser", "TestUserAutoOperator", "TestUserAutoAdmin"]
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def cleanup_autoadmin(self, browser: Page) -> None:
|
||||
"""Фикстура для очистки пользователя autoadmin после теста."""
|
||||
yield
|
||||
user_data: Dict[str, str] = {"name": "autoadmin", "role": "Администратор", "password": "123456"}
|
||||
ut = UsersTab(browser)
|
||||
if ut.find_user_in_table(user_data["name"], user_data["role"]) != -1:
|
||||
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
|
||||
ut.delete_user(user_data["name"])
|
||||
for user_name in test_users:
|
||||
# Проверяем существует ли пользователь и удаляем его
|
||||
user_index = ut.find_user_in_table(user_name, "Администратор")
|
||||
if user_index != -1:
|
||||
ut.open_edit_user_page_by_user(user_name, "Администратор")
|
||||
ut.delete_user(user_name)
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def cleanup_autooperator(self, browser: Page) -> None:
|
||||
"""Фикстура для очистки пользователя autooperator после теста."""
|
||||
yield
|
||||
user_data: Dict[str, str] = {"name": "autooperator", "role": "Оператор", "password": "123245"}
|
||||
ut = UsersTab(browser)
|
||||
if ut.find_user_in_table(user_data["name"], user_data["role"]) != -1:
|
||||
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
|
||||
ut.delete_user(user_data["name"])
|
||||
|
||||
def test_users_tab_content(self, browser: Page) -> None:
|
||||
"""Проверяет содержимое вкладки 'Пользователи'.
|
||||
|
|
@ -146,15 +160,15 @@ class TestUsersTab:
|
|||
ut.close_edit_user_window(user_name)
|
||||
|
||||
# @pytest.mark.develop
|
||||
def test_add_and_delete_user(self, browser: Page, cleanup_user: None) -> None:
|
||||
def test_add_and_delete_user(self, browser: Page, cleanup_users: None) -> None:
|
||||
"""Проверяет добавление и удаление пользователя.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
cleanup_user: Фикстура для очистки пользователя.
|
||||
Удаление пользователя выполняется автоматически фикстурой cleanup_users.
|
||||
"""
|
||||
|
||||
user_data: Dict[str, str] = {"name": "User", "role": "Администратор", "password": "987654"}
|
||||
user_data: Dict[str, str] = {"name": "TestUser", "role": "Администратор", "password": "987654"}
|
||||
|
||||
mp = MainPage(browser)
|
||||
ut = UsersTab(browser)
|
||||
|
|
@ -194,12 +208,12 @@ class TestUsersTab:
|
|||
ut.should_not_be_user_in_table(user_data["name"], user_data["role"])
|
||||
|
||||
# @pytest.mark.develop
|
||||
def test_add_AD_user(self, browser: Page, cleanup_user: None) -> None:
|
||||
def test_add_AD_user(self, browser: Page, cleanup_users: None) -> None:
|
||||
"""Проверяет добавление пользователя Active Directory.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
cleanup_user: Фикстура для очистки пользователя.
|
||||
Удаление пользователя выполняется автоматически фикстурой cleanup_users.
|
||||
"""
|
||||
|
||||
user_data: Dict[str, str] = {"auth_type":"active_directory",
|
||||
|
|
@ -212,15 +226,15 @@ class TestUsersTab:
|
|||
ut.open_add_user_window()
|
||||
ut.add_new_user(user_data)
|
||||
|
||||
def test_reset_password(self, browser: Page, cleanup_autoadmin: None) -> None:
|
||||
def test_reset_password(self, browser: Page, cleanup_users: None) -> None:
|
||||
"""Проверяет сброс пароля пользователя.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
cleanup_autoadmin: Фикстура для очистки пользователя autoadmin.
|
||||
Удаление пользователя выполняется автоматически фикстурой cleanup_users.
|
||||
"""
|
||||
|
||||
user_data: Dict[str, str] = {"name": "autoadmin", "role": "Администратор", "password": "123456"}
|
||||
user_data: Dict[str, str] = {"name": "TestUserAutoAdmin", "role": "Администратор", "password": "123456"}
|
||||
|
||||
mp = MainPage(browser)
|
||||
ut = UsersTab(browser)
|
||||
|
|
@ -252,15 +266,15 @@ class TestUsersTab:
|
|||
mp_1.click_subpanel_item("Пользователи")
|
||||
ut_1.should_not_be_user_in_table(user_data["name"], user_data["role"])
|
||||
|
||||
def test_edit_user_role(self, browser: Page, cleanup_autooperator: None) -> None:
|
||||
def test_edit_user_role(self, browser: Page, cleanup_users: None) -> None:
|
||||
"""Проверяет изменение роли пользователя.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
cleanup_autooperator: Фикстура для очистки пользователя autooperator.
|
||||
Удаление пользователя выполняется автоматически фикстурой cleanup_users.
|
||||
"""
|
||||
|
||||
user_data: Dict[str, str] = {"name": "autooperator", "role": "Оператор", "password": "123245"}
|
||||
user_data: Dict[str, str] = {"name": "TestUserAutoOperator", "role": "Оператор", "password": "123245"}
|
||||
|
||||
mp = MainPage(browser)
|
||||
ut = UsersTab(browser)
|
||||
|
|
|
|||
Loading…
Reference in New Issue