from pages.login_page import LoginPage from pages.main_page import MainPage from pages.session_tab import SessionsTab from pages.users_tab import UsersTab import pytest class TestSessionsTab: """Набор тестов для вкладки 'Сеансы'. Проверяет корректность отображения и функциональность элементов вкладки сеансов. """ @pytest.fixture(scope="function", autouse=True) def setup(self, browser): """Фикстура для подготовки тестового окружения. Выполняет: 1. Авторизацию в системе 2. Переход на вкладку 'Сеансы' через панель навигации """ # Авторизация в системе login_page = LoginPage(browser) login_page.do_login() # Инициализация главной страницы main_page = MainPage(browser) # Проверка и взаимодействие с элементами навигации main_page.should_be_navigation_panel() main_page.click_main_navigation_panel_item("Настройки") main_page.click_configuration_navigation_panel_item("Обслуживание и диагностика") main_page.click_maintenance_navigation_panel_item("Сеансы") def test_sessions_tab_content(self, browser): """Тест содержимого вкладки 'Сеансы'. Проверяет: 1. Наличие и корректность тулбара 2. Наличие таблицы сеансов 3. Соответствие содержимого таблицы данным из БД """ # Инициализация страницы сеансов sessions_tab = SessionsTab(browser) # Проверка элементов интерфейса sessions_tab.should_be_toolbar() sessions_tab.should_be_sessions_table() # Проверка содержимого таблицы с верификацией данных из БД sessions_tab.check_sessions_table_content(verify=True) def test_sessions_table_row_highlighting(self, browser): """Тест содержимого вкладки 'Сеансы'. Проверяет: 1. Наличие таблицы сеансов 2. Проверка подсветки строки при наведении на нее курсором """ # Инициализация страницы сеансов sessions_tab = SessionsTab(browser) # Проверка элементов интерфейса sessions_tab.should_be_sessions_table() # Получение количества строк в таблице без учета заголовка rows_count = sessions_tab.get_rows_count() # Проверка подсветки первой строки sessions_tab.check_sessions_table_row_highlighting(0) # Проверка подсветки последней строки строки (если в таблице более одной строки) if rows_count > 1: sessions_tab.check_sessions_table_row_highlighting(rows_count - 1) def test_delete_session_confirm_window(self, browser): """Тест содержимого вкладки 'Сеансы'. Проверяет: 1. Наличие таблицы сеансов 2. Проверка контента и возможности горизонтального скроллинга окна подтверждения удаления сессии """ # Инициализация страницы сеансов sessions_tab = SessionsTab(browser) # Проверка элементов интерфейса sessions_tab.should_be_sessions_table() # Проверка контента и скроллинга окна подтверждения удаления сессии sessions_tab.check_delete_session_confirm_window() #@pytest.mark.develop def test_session_for_new_user(self, browser): """Тест содержимого вкладки 'Сеансы'. Проверяет: 1. Создание нового пользователя 2. Вход нового пользователя в систему 3. Проверка наличия сессии нового пользователя 4. Выход нового пользователя из системы (logout) 5. Вход в систему первоначального пользователя 6. Проверка отсутствия сессии нового пользователя 7. Удаление нового пользователя """ user_data = {"name": "NewUser", "role": "Администратор", "password": "qwerty"} mp = MainPage(browser) ut = UsersTab(browser) # Создание нового пользователя mp.click_configuration_navigation_panel_item("Пользователи") 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"]) # Вход в систему для нового пользователя new_lp = LoginPage(browser) new_lp.do_login(username=user_data["name"], password=user_data["password"]) # Инициализация главной страницы new_mp = MainPage(browser) # Открыть вкладку Сессии new_mp.should_be_navigation_panel() new_mp.click_main_navigation_panel_item("Настройки") new_mp.click_configuration_navigation_panel_item("Обслуживание и диагностика") new_mp.click_maintenance_navigation_panel_item("Сеансы") # Инициализация страницы сеансов st = SessionsTab(browser) # Проверка элементов интерфейса st.should_be_sessions_table() # Проверка наличия записи о сессии текущего пользователя session_token = st.get_session_token() st.should_be_session_in_table(session_token) # logout new_mp.do_logout() # Авторизация в системе предыдущего пользователя prev_lp = LoginPage(browser) prev_lp.do_login() # Инициализация главной страницы prev_mp = MainPage(browser) # Открыть вкладку Сессии prev_mp.should_be_navigation_panel() prev_mp.click_main_navigation_panel_item("Настройки") prev_mp.click_configuration_navigation_panel_item("Обслуживание и диагностика") prev_mp.click_maintenance_navigation_panel_item("Сеансы") # Проверка элементов интерфейса st.should_be_sessions_table() # Проверка отсутствия записи о сессии созданного пользователя после выхода из системы st.should_not_be_session_in_table(session_token) # Удаление созданного пользователя prev_ut = UsersTab(browser) prev_ut.open_edit_user_page_by_user(user_data["name"], user_data["role"]) prev_ut.delete_user(user_data["name"])