from pages.login_page import LoginPage from pages.main_page import MainPage from pages.users_tab import UsersTab from playwright.sync_api import Page import pytest from typing import Dict class TestUsersTab: """Тесты для вкладки 'Пользователи'.""" @pytest.fixture(scope="function", autouse=True) def setup(self, browser: Page) -> None: """Подготовка тестового окружения.""" lp = LoginPage(browser) lp.do_login() mp = MainPage(browser) mp.should_be_navigation_panel() mp.click_main_navigation_panel_item("Настройки") mp.click_configuration_navigation_panel_item("Пользователи") def test_users_tab_content(self, browser: Page) -> None: """Тест содержимого вкладки 'Пользователи'.""" ut = UsersTab(browser) ut.should_be_toolbar() ut.should_be_users_table() ut.check_users_table_content(True) def test_users_tab_toolbar_buttons(self, browser: Page) -> None: """Тест кнопок на панели инструментов.""" ut = UsersTab(browser) ut.should_be_toolbar_buttons() def test_add_user_window_content(self, browser: Page) -> None: """Тест содержимого окна добавления пользователя.""" ut = UsersTab(browser) ut.open_add_user_window() ut.check_add_user_window_content() def test_add_user_window_close_buttons(self, browser: Page) -> None: """Тест кнопок закрытия окна добавления пользователя.""" ut = UsersTab(browser) ut.open_add_user_window() ut.close_add_user_window_by_toolbar_button() ut.open_add_user_window() ut.close_add_user_window() def test_edit_user_window_content(self, browser: Page) -> None: """Тест содержимого окна редактирования пользователя.""" ut = UsersTab(browser) user_name, role = ut.open_edit_user_page_by_index(0) ut.check_edit_user_window_content(user_name, role) def test_edit_user_window_close_buttons(self, browser: Page) -> None: """Тест кнопок закрытия окна редактирования пользователя.""" ut = UsersTab(browser) user_name, role = ut.open_edit_user_page_by_index(0) ut.close_edit_user_window_by_toolbar_button(user_name) 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: """Тест добавления и удаления пользователя.""" user_data: Dict[str, str] = {"name": "User", "role": "Администратор"} mp = MainPage(browser) ut = UsersTab(browser) 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"]) 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: """Тест сброса пароля пользователя.""" user_data: Dict[str, str] = {"name": "autoadmin", "role": "Администратор"} mp = MainPage(browser) ut = UsersTab(browser) ut.open_add_user_window() ut.add_new_user(user_data) mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи") ut.open_edit_user_page_by_user(user_data["name"], user_data["role"]) new_password = ut.reset_password(user_data["name"]) if len(new_password) == 0: assert False, "Unsuccessful password reset" new_lp = LoginPage(browser) new_lp.do_login(username=user_data["name"], password=new_password) new_mp = MainPage(browser) new_mp.do_logout() lp_1 = LoginPage(browser) lp_1.do_login() mp_1 = MainPage(browser) mp_1.should_be_navigation_panel() mp_1.click_main_navigation_panel_item("Настройки") mp_1.click_configuration_navigation_panel_item("Пользователи") ut_1 = UsersTab(browser) ut_1.open_edit_user_page_by_user(user_data["name"], user_data["role"]) ut_1.delete_user(user_data["name"]) mp_1.click_configuration_navigation_panel_item("Пользователи") 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: """Тест изменения роли пользователя.""" user_data: Dict[str, str] = {"name": "autooperator", "role": "Оператор"} mp = MainPage(browser) ut = UsersTab(browser) ut.open_add_user_window() ut.add_new_user(user_data) mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи") ut.open_edit_user_page_by_user(user_data["name"], user_data["role"]) new_user_data = {"role": "Контактное лицо"} ut.edit_user(user_data["name"], new_user_data) mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи") ut.should_be_user_in_table(user_data["name"], new_user_data["role"]) ut.open_edit_user_page_by_user(user_data["name"], new_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"], new_user_data["role"])