173 lines
8.2 KiB
Python
173 lines
8.2 KiB
Python
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"])
|