Актуализированы тесты для вкладок Сеансы/Текущие и Сеансы/Настройки
parent
632cf4ee40
commit
eb7fe13b02
|
|
@ -0,0 +1,92 @@
|
|||
"""Модуль компонента формы ввода и отображения полей настроек. Содержит класс для работы с формами ввода
|
||||
и отображения полей настроек,их элементами и проверками."""
|
||||
|
||||
from playwright.sync_api import Page
|
||||
from tools.logger import get_logger
|
||||
from locators.settings_form_locators import SettingsFormLocators
|
||||
from elements.button_element import Button
|
||||
from components.toolbar_component import ToolbarComponent
|
||||
from components.base_component import BaseComponent
|
||||
|
||||
logger = get_logger("MODAL_WINDOW")
|
||||
|
||||
|
||||
class SettingsFormComponent(BaseComponent):
|
||||
"""Компонент формы ввода и отображения полей настроек. Предоставляет методы для взаимодействия с формой,
|
||||
ее содержимым и проверок."""
|
||||
|
||||
def __init__(self, page: Page):
|
||||
super().__init__(page)
|
||||
self.toolbar = ToolbarComponent(page, "")
|
||||
self.content_items = {}
|
||||
self.buttons = []
|
||||
|
||||
# Действия:
|
||||
def add_content_item(self, name: str, item: object) -> None:
|
||||
"""Добавляет элемент содержимого в форму по заданному имени."""
|
||||
|
||||
self.content_items[name] = item
|
||||
|
||||
def get_content_item(self, name: str) -> object | None:
|
||||
"""Возвращает элемент содержимого по имени или None, если не найден."""
|
||||
|
||||
return self.content_items.get(name)
|
||||
|
||||
def add_toolbar_title(self, title: str) -> None:
|
||||
"""Добавляет заголовок в панель инструментов модального окна."""
|
||||
|
||||
self.toolbar.add_title(title)
|
||||
|
||||
def add_button(self, locator: str, name: str) -> None:
|
||||
"""Добавляет кнопку в форму."""
|
||||
|
||||
self.buttons.append(Button(self.page, locator, name))
|
||||
|
||||
def get_button_by_name(self, name: str) -> Button | None:
|
||||
"""Ищет и возвращает кнопку по имени или None, если не найдена."""
|
||||
|
||||
for button in self.buttons:
|
||||
if button.name == name:
|
||||
return button
|
||||
return None
|
||||
|
||||
def click_button(self, name: str) -> None:
|
||||
"""Кликает по кнопке с заданным именем. Вызывает ошибку, если не найдена."""
|
||||
|
||||
button = self.get_button_by_name(name)
|
||||
if button is None:
|
||||
assert False, f"Button with name '{name}' not found"
|
||||
button.click()
|
||||
|
||||
def scroll_form_down(self) -> None:
|
||||
"""Прокручивает содержимое окна вниз."""
|
||||
|
||||
self.scroll_down(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER)
|
||||
|
||||
def scroll_form_up(self) -> None:
|
||||
"""Прокручивает содержимое окна вверх."""
|
||||
|
||||
self.scroll_up(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER)
|
||||
|
||||
# Проверки:
|
||||
def check_form_vertical_scrolling(self) -> bool:
|
||||
"""Проверяет возможность вертикальной прокрутки окна."""
|
||||
|
||||
return self.is_scrollable_vertically(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER)
|
||||
|
||||
def check_button_visibility(self, name: str) -> None:
|
||||
"""Проверяет наличие кнопки по имени. Вызывает ошибку, если не найдена."""
|
||||
|
||||
button = self.get_button_by_name(name)
|
||||
if button is None:
|
||||
assert False, f"Button with name '{name}' not found"
|
||||
button.check_visibility(f"Button with name '{name}' is missing")
|
||||
|
||||
def should_be_toolbar(self) -> None:
|
||||
"""Проверяет наличие тулбара.
|
||||
|
||||
Raises:
|
||||
AssertionError: Если тулбар или кнопка редактирования отсутствуют.
|
||||
"""
|
||||
|
||||
self.toolbar.check_toolbar_presence("Toolbar is missing")
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
"""Модуль settings_form_locators содержит локаторы компонента формы ввода и отображения полей настроек.
|
||||
|
||||
Класс SettingsFormLocators предоставляет XPath локаторы для взаимодействия
|
||||
с элементами модальных окон в тестах.
|
||||
"""
|
||||
|
||||
class SettingsFormLocators:
|
||||
"""Локаторы для компонента формы ввода и отображения полей настроек.
|
||||
|
||||
Содержит XPath локаторы для:
|
||||
SETTTINGS_FORM_SCROLL_CONTAINER (str): контейнера с прокруткой модального окна
|
||||
SETTTINGS_FORM_TITLE (str): заголовка тулбара
|
||||
"""
|
||||
|
||||
SETTTINGS_FORM_SCROLL_CONTAINER = "//div[contains(@class, 'scrollarea__body')]"
|
||||
SETTTINGS_FORM_TITLE = f"{SETTTINGS_FORM_SCROLL_CONTAINER}//div[contains(@class, 'v-toolbar__title')]"
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
"""Модуль вкладки 'Сеансы'.
|
||||
"""Модуль вкладки 'Сеансы/Текущие'.
|
||||
|
||||
Содержит класс SessionsTab для работы с таблицей сеансов.
|
||||
Содержит класс CurrentSessionsTab для работы с таблицей сеансов.
|
||||
Позволяет проверять состояние и взаимодействовать с элементами вкладки.
|
||||
"""
|
||||
|
||||
|
|
@ -15,8 +15,8 @@ from components.table_component import TableComponent
|
|||
from components.confirm_component import ConfirmComponent
|
||||
from pages.base_page import BasePage
|
||||
|
||||
class SessionsTab(BasePage):
|
||||
"""Класс для работы с вкладкой 'Сеансы'.
|
||||
class CurrentSessionsTab(BasePage):
|
||||
"""Класс для работы с вкладкой 'Сеансы/Текущие'.
|
||||
|
||||
Предоставляет методы для взаимодействия с таблицей сеансов и проверки
|
||||
её состояния.
|
||||
|
|
@ -26,7 +26,7 @@ class SessionsTab(BasePage):
|
|||
"""
|
||||
|
||||
def __init__(self, page: Page) -> None:
|
||||
"""Инициализирует компоненты вкладки 'Сеансы'."""
|
||||
"""Инициализирует компоненты вкладки 'Сеансы/Текущие'."""
|
||||
|
||||
super().__init__(page)
|
||||
|
||||
|
|
@ -0,0 +1,170 @@
|
|||
"""Модуль вкладки 'Сеансы/Настройки'.
|
||||
|
||||
Содержит класс SessionSettingsTab для работы с полями настройки сессий пользователей.
|
||||
"""
|
||||
|
||||
import re
|
||||
from playwright.sync_api import Page
|
||||
from locators.settings_form_locators import SettingsFormLocators
|
||||
from elements.text_input_element import TextInput
|
||||
from elements.text_element import Text
|
||||
from components.toolbar_component import ToolbarComponent
|
||||
from components.settings_form_component import SettingsFormComponent
|
||||
from pages.base_page import BasePage
|
||||
|
||||
|
||||
class SessionSettingsTab(BasePage):
|
||||
"""Класс для работы с вкладкой 'Сеансы/Настройки'.
|
||||
|
||||
Предоставляет методы для взаимодействия с полями настройки сессий пользователей.
|
||||
|
||||
Args:
|
||||
page: Экземпляр страницы Playwright.
|
||||
"""
|
||||
|
||||
def __init__(self, page: Page) -> None:
|
||||
"""Инициализирует компоненты вкладки 'Сеансы/Настройки'."""
|
||||
|
||||
super().__init__(page)
|
||||
|
||||
locator_button_1 = self.page.get_by_role("navigation").filter(
|
||||
has_text=re.compile("Настройки")
|
||||
).get_by_role("button").nth(0)
|
||||
locator_button_2 = self.page.get_by_role("navigation").filter(
|
||||
has_text=re.compile("Настройки")
|
||||
).get_by_role("button").nth(1)
|
||||
|
||||
self.toolbar = ToolbarComponent(page, "Настройки")
|
||||
self.toolbar.add_tooltip_button(locator_button_1, "edit")
|
||||
self.toolbar.add_tooltip_button(locator_button_1, "save")
|
||||
self.toolbar.add_tooltip_button(locator_button_2, "cancel")
|
||||
|
||||
# Форма для отображения/редактирования полей настроек сессии пользователя
|
||||
self.settings_form = SettingsFormComponent(page)
|
||||
|
||||
self.settings_form.add_toolbar_title("Время жизни сеанса")
|
||||
|
||||
admin_setting_label = Text(page,
|
||||
page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||||
get_by_text('Администратор'),
|
||||
"admin_setting_label")
|
||||
self.settings_form.add_content_item("admin_setting_label", admin_setting_label)
|
||||
|
||||
loc_admin = page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||||
get_by_label('Администратор')
|
||||
admin_setting = TextInput(page, loc_admin, "admin_setting")
|
||||
self.settings_form.add_content_item("admin_setting", admin_setting)
|
||||
|
||||
operator_setting_label = Text(page,
|
||||
page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||||
get_by_text('Оператор'),
|
||||
"operator_setting_label")
|
||||
self.settings_form.add_content_item("operator_setting_label", operator_setting_label)
|
||||
|
||||
loc_oper = page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||||
get_by_label('Оператор')
|
||||
operator_setting = TextInput(page, loc_oper, "operator_setting")
|
||||
self.settings_form.add_content_item("operator_setting", operator_setting)
|
||||
|
||||
manager_setting_label = Text(page,
|
||||
page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||||
get_by_text('Контактное лицо'),
|
||||
"manager_setting_label")
|
||||
self.settings_form.add_content_item("manager_setting_label", manager_setting_label)
|
||||
|
||||
loc_manager = page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||||
get_by_label('Контактное лицо')
|
||||
manager_setting = TextInput(page, loc_manager, "manager_setting")
|
||||
self.settings_form.add_content_item("manager_setting", manager_setting)
|
||||
|
||||
inform_secur_user_setting_label = Text(page,
|
||||
page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||||
get_by_text('Специалист информационной безопасности'),
|
||||
"inform_secur_user_setting_label")
|
||||
self.settings_form.add_content_item("inform_secur_user_setting_label", inform_secur_user_setting_label)
|
||||
|
||||
loc_inform_secur_user = page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||||
get_by_label('Специалист информационной безопасности')
|
||||
inform_secur_user_setting = TextInput(page, loc_inform_secur_user, "inform_secur_user_setting")
|
||||
self.settings_form.add_content_item("inform_secur_user_setting", inform_secur_user_setting)
|
||||
|
||||
collector_setting_label = Text(page,
|
||||
page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||||
get_by_text('$collector'),
|
||||
"collector_setting_label")
|
||||
self.settings_form.add_content_item("collector_setting_label", collector_setting_label)
|
||||
|
||||
loc_collector = page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||||
get_by_label('$collector')
|
||||
collector_setting = TextInput(page, loc_collector, "collector_setting")
|
||||
self.settings_form.add_content_item("collector_setting", collector_setting)
|
||||
|
||||
# Действия:
|
||||
# Проверки:
|
||||
def check_content(self):
|
||||
"""Проверяет наличие и корректность всех элементов формы."""
|
||||
|
||||
self.should_be_toolbar()
|
||||
self.should_be_toolbar_buttons()
|
||||
|
||||
self.settings_form.should_be_toolbar()
|
||||
|
||||
for name in self.settings_form.content_items.keys():
|
||||
item = self.settings_form.get_content_item(name)
|
||||
print("check item: "+name)
|
||||
item.check_visibility(
|
||||
f"Session settings input form item with name '{name}' is missing"
|
||||
)
|
||||
|
||||
def should_be_toolbar(self) -> None:
|
||||
"""Проверяет наличие тулбара.
|
||||
|
||||
Raises:
|
||||
AssertionError: Если тулбар или кнопка редактирования отсутствуют.
|
||||
"""
|
||||
loc = self.page.get_by_role("navigation").filter(
|
||||
has_text=re.compile("Настройки")).locator("div").nth(1)
|
||||
self.toolbar.check_toolbar_presence_by_locator(loc, "Toolbar with title 'Настройки' is missing")
|
||||
self.toolbar.check_button_visibility("edit")
|
||||
|
||||
def should_be_toolbar_buttons(self) -> None:
|
||||
"""Проверяет наличие и функциональность кнопок тулбара.
|
||||
|
||||
Raises:
|
||||
AssertionError: Если кнопки недоступны или подсказки неверны.
|
||||
"""
|
||||
|
||||
self.toolbar.check_button_visibility("edit")
|
||||
self.toolbar.check_button_tooltip("edit", "Редактировать")
|
||||
|
||||
self.toolbar.get_button_by_name("edit").click()
|
||||
self.toolbar.check_button_visibility("save")
|
||||
self.toolbar.check_button_visibility("cancel")
|
||||
self.toolbar.check_button_tooltip("save", "Сохранить")
|
||||
self.toolbar.check_button_tooltip("cancel", "Отменить")
|
||||
|
||||
self.toolbar.get_button_by_name("cancel").click()
|
||||
self.toolbar.check_button_visibility("edit")
|
||||
|
||||
def verify_form_data(self, session_settings: dict) -> None:
|
||||
"""Проверяет соответствие содержимого полей формы данным из БД.
|
||||
|
||||
Raises:
|
||||
AssertionError: Если содержимое поля не соответствует данным из БД.
|
||||
"""
|
||||
|
||||
for key, value in session_settings.items():
|
||||
field_value = ""
|
||||
if key == "administrator":
|
||||
field_value = self.settings_form.get_content_item("admin_setting").get_input_value().strip()
|
||||
elif key == "operator":
|
||||
field_value = self.settings_form.get_content_item("operator_setting").get_input_value().strip()
|
||||
elif key == "manager":
|
||||
field_value = self.settings_form.get_content_item("manager_setting").get_input_value().strip()
|
||||
elif key == "inform_secur_user":
|
||||
field_value = self.settings_form.get_content_item("inform_secur_user_setting").get_input_value().strip()
|
||||
elif key == '$collector':
|
||||
field_value = self.settings_form.get_content_item("collector_setting").get_input_value().strip()
|
||||
else:
|
||||
assert False, f"Got unsupported field name {key}"
|
||||
assert field_value == str(value), f"{key} field value {field_value} is not equal value {value} from data base"
|
||||
|
|
@ -1,30 +1,30 @@
|
|||
"""Модуль тестов вкладки 'Сеансы'.
|
||||
"""Модуль тестов вкладки 'Сеансы/Текущие'.
|
||||
|
||||
Содержит тесты для проверки функциональности
|
||||
работы с пользовательтскими сеансами.
|
||||
"""
|
||||
from typing import Dict
|
||||
|
||||
import pytest
|
||||
from playwright.sync_api import Page
|
||||
from playwright.sync_api import Page, expect
|
||||
from pages.login_page import LoginPage
|
||||
from pages.main_page import MainPage
|
||||
from pages.session_tab import SessionsTab
|
||||
from pages.current_session_tab import CurrentSessionsTab
|
||||
from pages.users_tab import UsersTab
|
||||
|
||||
|
||||
# @pytest.mark.smoke
|
||||
class TestSessionsTab:
|
||||
"""Набор тестов для вкладки 'Сеансы'.
|
||||
class TestCurrentSessionsTab:
|
||||
"""Набор тестов для вкладки 'Сеансы/Текущие'.
|
||||
|
||||
Проверяет корректность отображения и функциональность элементов вкладки сеансов,
|
||||
включая работу с сеансами пользователей, их создание, удаление и автоматическую очистку.
|
||||
|
||||
Тесты покрывают следующие сценарии:
|
||||
1. test_sessions_tab_content: Тест содержимого вкладки 'Сеансы'
|
||||
1. test_sessions_tab_content: Тест содержимого вкладки 'Сеансы/Текущие'
|
||||
2. test_delete_session_confirm_window: Тест окна подтверждения удаления сеанса
|
||||
3. test_delete_session_after_logout: Тест автоматического удаления сеанса после выхода пользователя из системы
|
||||
4. test_delete_existed_session: Тест удаления созданного сеанса
|
||||
5 test_multiple_users_sessions: Тест создания нескольких пользователей и их сеансов
|
||||
5. test_multiple_users_sessions: Тест создания нескольких пользователей и их сеансов
|
||||
6. test_session_removed_when_user_deleted: Тест удаления сеанса при удалении пользователя
|
||||
7. test_session_auto_deletion_after_15_minutes: Тест автоматического удаления сеанса через 15 минут после выхода пользователя
|
||||
8. test_user_cannot_delete_own_session: Тест проверки невозможности пользователя удалить свой собственный сеанс
|
||||
|
|
@ -37,7 +37,7 @@ class TestSessionsTab:
|
|||
|
||||
Выполняет:
|
||||
1. Авторизацию в системе
|
||||
2. Переход на вкладку 'Сеансы' через панель навигации
|
||||
2. Переход на вкладку 'Сеансы/Текущие' через панель навигации
|
||||
"""
|
||||
# Авторизация в системе
|
||||
login_page = LoginPage(browser)
|
||||
|
|
@ -51,6 +51,7 @@ class TestSessionsTab:
|
|||
main_page.click_main_navigation_panel_item("Настройки")
|
||||
main_page.click_subpanel_item("Обслуживание и диагностика")
|
||||
main_page.click_subpanel_item("Сеансы")
|
||||
main_page.click_subpanel_item("Текущие", parent="Сеансы")
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def cleanup_users(self, browser: Page) -> None:
|
||||
|
|
@ -97,7 +98,7 @@ class TestSessionsTab:
|
|||
3. Соответствие содержимого таблицы данным из БД
|
||||
"""
|
||||
# Инициализация страницы сеансов
|
||||
sessions_tab = SessionsTab(browser)
|
||||
sessions_tab = CurrentSessionsTab(browser)
|
||||
|
||||
# Проверка элементов интерфейса
|
||||
sessions_tab.should_be_toolbar()
|
||||
|
|
@ -112,11 +113,9 @@ class TestSessionsTab:
|
|||
# Проверяем только заголовки
|
||||
sessions_tab.check_sessions_table_content(verify=False)
|
||||
else:
|
||||
# Проверка содержимого таблица с верификацией данных из БД
|
||||
sessions_tab.check_sessions_table_content(verify=True)
|
||||
|
||||
# Проверка содержимого таблица с верификацией данных из БД
|
||||
sessions_tab.check_sessions_table_content(verify=True)
|
||||
|
||||
|
||||
def test_delete_session_confirm_window(self, browser: Page) -> None:
|
||||
"""Тест окна подтверждения удаления сеанса.
|
||||
|
|
@ -129,7 +128,7 @@ class TestSessionsTab:
|
|||
5. Функциональность кнопок в окне подтверждения удаления
|
||||
"""
|
||||
# Инициализация страницы сеансов
|
||||
sessions_tab = SessionsTab(browser)
|
||||
sessions_tab = CurrentSessionsTab(browser)
|
||||
|
||||
# Проверка наличия таблицы сеансов
|
||||
sessions_tab.should_be_sessions_table()
|
||||
|
|
@ -178,9 +177,10 @@ class TestSessionsTab:
|
|||
new_mp.click_main_navigation_panel_item("Настройки")
|
||||
new_mp.click_subpanel_item("Обслуживание и диагностика")
|
||||
new_mp.click_subpanel_item("Сеансы")
|
||||
new_mp.click_subpanel_item("Текущие", parent="Сеансы")
|
||||
|
||||
# Инициализация страницы сеансов
|
||||
st = SessionsTab(browser)
|
||||
st = CurrentSessionsTab(browser)
|
||||
|
||||
# # Проверка наличия таблицы сеансов
|
||||
st.should_be_sessions_table()
|
||||
|
|
@ -204,6 +204,7 @@ class TestSessionsTab:
|
|||
admin_mp.click_main_navigation_panel_item("Настройки")
|
||||
admin_mp.click_subpanel_item("Обслуживание и диагностика")
|
||||
admin_mp.click_subpanel_item("Сеансы")
|
||||
admin_mp.click_subpanel_item("Текущие", parent="Сеансы")
|
||||
|
||||
# Проверка наличия таблица сеансов
|
||||
st.should_be_sessions_table()
|
||||
|
|
@ -255,9 +256,10 @@ class TestSessionsTab:
|
|||
new_mp.click_main_navigation_panel_item("Настройки")
|
||||
new_mp.click_subpanel_item("Обслуживание и диагностика")
|
||||
new_mp.click_subpanel_item("Сеансы")
|
||||
new_mp.click_subpanel_item("Текущие", parent="Сеансы")
|
||||
|
||||
# Инициализация страницы сеансов
|
||||
st = SessionsTab(browser)
|
||||
st = CurrentSessionsTab(browser)
|
||||
|
||||
# Проверка наличия таблицы сеансов
|
||||
st.should_be_sessions_table()
|
||||
|
|
@ -276,9 +278,10 @@ class TestSessionsTab:
|
|||
admin_mp.click_main_navigation_panel_item("Настройки")
|
||||
admin_mp.click_subpanel_item("Обслуживание и диагностика")
|
||||
admin_mp.click_subpanel_item("Сеансы")
|
||||
admin_mp.click_subpanel_item("Текущие", parent="Сеансы")
|
||||
|
||||
# Удаление сеанса созданного пользователя по токену
|
||||
admin_sessions_tab = SessionsTab(browser)
|
||||
admin_sessions_tab = CurrentSessionsTab(browser)
|
||||
admin_sessions_tab.should_be_sessions_table()
|
||||
admin_sessions_tab.delete_session_by_token(new_user_token)
|
||||
|
||||
|
|
@ -327,7 +330,7 @@ class TestSessionsTab:
|
|||
login_page.do_login(username=user_data["name"], password=user_data["password"])
|
||||
|
||||
# Получение токена сеансов
|
||||
sessions_tab = SessionsTab(browser)
|
||||
sessions_tab = CurrentSessionsTab(browser)
|
||||
#sessions_tab.should_be_sessions_table()
|
||||
session_token = sessions_tab.get_session_token()
|
||||
session_tokens.append(session_token)
|
||||
|
|
@ -340,8 +343,9 @@ class TestSessionsTab:
|
|||
mp.click_main_navigation_panel_item("Настройки")
|
||||
mp.click_subpanel_item("Обслуживание и диагностика")
|
||||
mp.click_subpanel_item("Сеансы")
|
||||
mp.click_subpanel_item("Текущие", parent="Сеансы")
|
||||
|
||||
sessions_tab = SessionsTab(browser)
|
||||
sessions_tab = CurrentSessionsTab(browser)
|
||||
sessions_tab.should_be_sessions_table()
|
||||
|
||||
# Проверка наличия сеансов всех пользователей
|
||||
|
|
@ -363,7 +367,7 @@ class TestSessionsTab:
|
|||
browser.wait_for_timeout(1000)
|
||||
sessions_tab.check_sessions_table_row_highlighting(rows_count - 1)
|
||||
|
||||
def _test_sessions_table_scrolling(self, sessions_tab: SessionsTab) -> None:
|
||||
def _test_sessions_table_scrolling(self, sessions_tab: CurrentSessionsTab) -> None:
|
||||
"""Вспомогательный метод для проверки скроллинга таблицы сеансов.
|
||||
|
||||
Проверяет:
|
||||
|
|
@ -432,9 +436,10 @@ class TestSessionsTab:
|
|||
new_mp.click_main_navigation_panel_item("Настройки")
|
||||
new_mp.click_subpanel_item("Обслуживание и диагностика")
|
||||
new_mp.click_subpanel_item("Сеансы")
|
||||
new_mp.click_subpanel_item("Текущие", parent="Сеансы")
|
||||
|
||||
# Получаем токен сеанса
|
||||
sessions_tab = SessionsTab(browser)
|
||||
sessions_tab = CurrentSessionsTab(browser)
|
||||
new_user_token = sessions_tab.get_session_token()
|
||||
|
||||
# Проверка наличия сеанса в таблице
|
||||
|
|
@ -462,9 +467,10 @@ class TestSessionsTab:
|
|||
admin_mp.click_main_navigation_panel_item("Настройки")
|
||||
admin_mp.click_subpanel_item("Обслуживание и диагностика")
|
||||
admin_mp.click_subpanel_item("Сеансы")
|
||||
admin_mp.click_subpanel_item("Текущие", parent="Сеансы")
|
||||
|
||||
# Проверка отсутствия сеанса после удаления пользователя
|
||||
admin_sessions_tab = SessionsTab(browser)
|
||||
admin_sessions_tab = CurrentSessionsTab(browser)
|
||||
admin_sessions_tab.should_be_sessions_table()
|
||||
|
||||
# Сеанс должна автоматически удалиться при удалении пользователя
|
||||
|
|
@ -511,9 +517,10 @@ class TestSessionsTab:
|
|||
new_mp.click_main_navigation_panel_item("Настройки")
|
||||
new_mp.click_subpanel_item("Обслуживание и диагностика")
|
||||
new_mp.click_subpanel_item("Сеансы")
|
||||
new_mp.click_subpanel_item("Текущие", parent="Сеансы")
|
||||
|
||||
# Получаем токен сеанса
|
||||
sessions_tab = SessionsTab(browser)
|
||||
sessions_tab = CurrentSessionsTab(browser)
|
||||
session_token = sessions_tab.get_session_token()
|
||||
|
||||
# Проверка наличия сеанса в таблице
|
||||
|
|
@ -532,9 +539,10 @@ class TestSessionsTab:
|
|||
admin_mp.click_main_navigation_panel_item("Настройки")
|
||||
admin_mp.click_subpanel_item("Обслуживание и диагностика")
|
||||
admin_mp.click_subpanel_item("Сеансы")
|
||||
admin_mp.click_subpanel_item("Текущие", parent="Сеансы")
|
||||
|
||||
# Проверка наличия сеанса сразу после выхода
|
||||
admin_sessions_tab = SessionsTab(browser)
|
||||
admin_sessions_tab = CurrentSessionsTab(browser)
|
||||
admin_sessions_tab.should_be_session_in_table(session_token)
|
||||
|
||||
admin_mp.do_logout()
|
||||
|
|
@ -553,9 +561,10 @@ class TestSessionsTab:
|
|||
admin_mp.click_main_navigation_panel_item("Настройки")
|
||||
admin_mp.click_subpanel_item("Обслуживание и диагностика")
|
||||
admin_mp.click_subpanel_item("Сеансы")
|
||||
admin_mp.click_subpanel_item("Текущие", parent="Сеансы")
|
||||
|
||||
# Проверка отсутствия сеанса после 15 минут
|
||||
admin_sessions_tab = SessionsTab(browser)
|
||||
admin_sessions_tab = CurrentSessionsTab(browser)
|
||||
admin_sessions_tab.should_be_sessions_table()
|
||||
admin_sessions_tab.should_not_be_session_in_table(session_token)
|
||||
|
||||
|
|
@ -598,9 +607,10 @@ class TestSessionsTab:
|
|||
new_mp.click_main_navigation_panel_item("Настройки")
|
||||
new_mp.click_subpanel_item("Обслуживание и диагностика")
|
||||
new_mp.click_subpanel_item("Сеансы")
|
||||
new_mp.click_subpanel_item("Текущие", parent="Сеансы")
|
||||
|
||||
# Получаем токен сеанса
|
||||
sessions_tab = SessionsTab(browser)
|
||||
sessions_tab = CurrentSessionsTab(browser)
|
||||
session_token = sessions_tab.get_session_token()
|
||||
|
||||
# Проверка наличия сеанса в таблице
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
"""Модуль тестов вкладки 'Сеансы/Настройки'.
|
||||
|
||||
Содержит тесты для проверки корректности отображения
|
||||
и функциональности элементов вкладки настройки времени жизни сеансов.
|
||||
"""
|
||||
|
||||
import pytest
|
||||
from playwright.sync_api import Page
|
||||
from pages.login_page import LoginPage
|
||||
from pages.main_page import MainPage
|
||||
from pages.session_settings_tab import SessionSettingsTab
|
||||
|
||||
|
||||
# @pytest.mark.smoke
|
||||
class TestSessionSettingsTab:
|
||||
"""Набор тестов для вкладки 'Сеансы/Настройки'.
|
||||
|
||||
Проверяет корректность отображения и функциональность элементов вкладки настройки времени жизни сеансов.
|
||||
|
||||
Тесты покрывают следующие сценарии:
|
||||
1. test_session_settings_tab_content: Тест содержимого вкладки 'Сеансы/Настройки'
|
||||
"""
|
||||
|
||||
|
||||
@pytest.fixture(scope="function", autouse=True)
|
||||
def setup(self, browser: Page) -> None:
|
||||
"""Фикстура для подготовки тестового окружения.
|
||||
|
||||
Выполняет:
|
||||
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_subpanel_item("Обслуживание и диагностика")
|
||||
main_page.click_subpanel_item("Сеансы")
|
||||
main_page.click_subpanel_item("Настройки", parent="Сеансы")
|
||||
|
||||
# @pytest.mark.develop
|
||||
def test_sessions_tab_content(self, browser: Page) -> None:
|
||||
"""Тест содержимого вкладки 'Сеансы/Настройки'.
|
||||
|
||||
Проверяет:
|
||||
1. Наличие и корректность элементов интерфейса
|
||||
2. Соответствие содержимого полей формы данным из БД
|
||||
"""
|
||||
# Инициализация страницы сеансов
|
||||
session_settings_tab = SessionSettingsTab(browser)
|
||||
|
||||
# Проверка элементов интерфейса
|
||||
session_settings_tab.check_content()
|
||||
|
||||
# Проверяем API ответ
|
||||
response = session_settings_tab.send_get_api_request("e-cmdb/api/objectByPath?path=/config/auth")
|
||||
if response.status == 200:
|
||||
response_body = session_settings_tab.get_response_body(response)
|
||||
|
||||
if response_body:
|
||||
# Проверка содержимого таблица с верификацией данных из БД
|
||||
session_settings = response_body.get("options").get("key_ttl")
|
||||
session_settings_tab.verify_form_data(session_settings)
|
||||
else:
|
||||
print(f"Error request session setings data from API: {response.status_text}")
|
||||
|
|
@ -52,7 +52,7 @@ class TestNavigationPanel:
|
|||
|
||||
mp.expand_navigation_subpanel()
|
||||
|
||||
@pytest.mark.develop
|
||||
# @pytest.mark.develop
|
||||
def test_sub_panel_item_click(self, browser: Page):
|
||||
"""Проверяет возможность клика заданного элемента в подпанели навигации.
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue