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"}