From f225e4c9b2d7f3845b5c5aac368a9bf797d76422 Mon Sep 17 00:00:00 2001 From: Radislav Date: Wed, 27 Aug 2025 17:04:30 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D1=82=D0=B0=D0=B9=D0=BC-=D0=B0=D1=83=D1=82=D1=8B=20?= =?UTF-8?q?=D0=B2=20=D0=BE=D0=BF=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D1=8F=D1=85?= =?UTF-8?q?=20=D1=81=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D0=B0=D0=BC?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/e2e/test_users_tab.py | 73 +++++++++++++++++++++++++++++++++---- 1 file changed, 66 insertions(+), 7 deletions(-) diff --git a/tests/e2e/test_users_tab.py b/tests/e2e/test_users_tab.py index 2783d12..0485712 100644 --- a/tests/e2e/test_users_tab.py +++ b/tests/e2e/test_users_tab.py @@ -30,6 +30,39 @@ class TestUsersTab: mp.click_main_navigation_panel_item("Настройки") mp.click_configuration_navigation_panel_item("Пользователи") + @pytest.fixture(scope="function") + def cleanup_user(self, browser: Page) -> None: + """Фикстура для очистки пользователя User после теста.""" + yield + # Удаляем тестового пользователя после выполнения теста + user_data: Dict[str, str] = {"name": "User", "role": "Администратор", "password": "987654"} + 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"]) + + @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"]) + + @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: """Проверяет содержимое вкладки 'Пользователи'. @@ -101,11 +134,12 @@ class TestUsersTab: user_name, role = ut.open_edit_user_page_by_index(0) ut.close_edit_user_window(user_name) - def test_add_and_delete_user(self, browser: Page) -> None: + def test_add_and_delete_user(self, browser: Page, cleanup_user) -> None: """Проверяет добавление и удаление пользователя. Args: browser: Экземпляр страницы Playwright. + cleanup_user: Фикстура для очистки пользователя. """ user_data: Dict[str, str] = {"name": "User", "role": "Администратор", "password": "987654"} @@ -113,22 +147,46 @@ class TestUsersTab: mp = MainPage(browser) ut = UsersTab(browser) + # Проверяем, есть ли такой пользователь + user_exists = ut.find_user_in_table(user_data["name"], user_data["role"]) != -1 + + if not user_exists: + # Создаем пользователя впервые + ut.open_add_user_window() + success = ut.add_new_user(user_data) + + if success: + # Ждем обновления таблицы с использованием ожиданий Playwright + browser.wait_for_timeout(2000) + + # Проверяем наличие пользователя в таблице + user_found = ut.find_user_in_table(user_data["name"], user_data["role"]) != -1 + if not user_found: + # Если пользователь не найден, обновляем страницу + browser.reload() + browser.wait_for_timeout(2000) + else: + ut.close_add_user_window() + + # Пытаемся создать такого же пользователя снова ut.open_add_user_window() - ut.add_new_user(user_data) - mp.click_configuration_navigation_panel_item("Пользователи") - mp.click_configuration_navigation_panel_item("Пользователи") - ut.should_be_user_in_table(user_data["name"], user_data["role"]) + success_second = ut.add_new_user(user_data) + + # Должно вернуться False при попытке создания существующего пользователя + assert not success_second, "Ожидалась ошибка при создании существующего пользователя" + ut.open_edit_user_page_by_user(user_data["name"], user_data["role"]) ut.delete_user(user_data["name"]) mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи") ut.should_not_be_user_in_table(user_data["name"], user_data["role"]) - def test_reset_password(self, browser: Page) -> None: + def test_reset_password(self, browser: Page, cleanup_autoadmin) -> None: """Проверяет сброс пароля пользователя. Args: browser: Экземпляр страницы Playwright. + cleanup_autoadmin: Фикстура для очистки пользователя autoadmin. """ user_data: Dict[str, str] = {"name": "autoadmin", "role": "Администратор", "password": "123456"} @@ -163,11 +221,12 @@ class TestUsersTab: mp_1.click_configuration_navigation_panel_item("Пользователи") ut_1.should_not_be_user_in_table(user_data["name"], user_data["role"]) - def test_edit_user_role(self, browser: Page) -> None: + def test_edit_user_role(self, browser: Page, cleanup_autooperator) -> None: """Проверяет изменение роли пользователя. Args: browser: Экземпляр страницы Playwright. + cleanup_autooperator: Фикстура для очистки пользователя autooperator. """ user_data: Dict[str, str] = {"name": "autooperator", "role": "Оператор", "password": "123245"}