Добавлены тесты редактирования полей настроек времени жизни сессий

sidebar_filter
nsubbot 2025-10-29 14:09:41 +03:00
parent eb7fe13b02
commit 3b52bb2c76
3 changed files with 207 additions and 2 deletions

View File

@ -48,6 +48,32 @@ class TextInput(BaseElement):
return self.locator.get_attribute("type")
def decrease_value(self) -> None:
"""Уменьшение на единицу значения поля настройки с помощью стрелочки вниз."""
logger.info(f'Decrease input value for "{self.name}"')
attr = self.locator.get_attribute("type")
assert attr=="number", "Field type should be number to increase value"
self.locator.hover()
self.locator.wait_for(timeout=500)
self.locator.press('ArrowDown')
self.locator.wait_for(timeout=500)
def increase_value(self) -> None:
"""Увеличение на единицу значения поля настройки с помощью стрелочки вверх."""
logger.info(f'Increase input value for "{self.name}"')
attr = self.locator.get_attribute("type")
assert attr=="number", "Field type should be number to increase value"
self.locator.hover()
self.locator.wait_for(timeout=500)
self.locator.press('ArrowUp')
self.locator.wait_for(timeout=500)
def input_value(self, value: str) -> None:
"""Вводит указанное значение в поле.

View File

@ -10,6 +10,7 @@ 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 components.alert_component import AlertComponent
from pages.base_page import BasePage
@ -99,7 +100,113 @@ class SessionSettingsTab(BasePage):
collector_setting = TextInput(page, loc_collector, "collector_setting")
self.settings_form.add_content_item("collector_setting", collector_setting)
# Окно сообщения об успешном/неуспешном сохранении настроек
self.alert = AlertComponent(page)
# Действия:
def click_cancel_button(self) -> None:
"""Нажатие кнопки 'Отменить' на тулбаре."""
self.toolbar.check_button_visibility("cancel")
self.toolbar.get_button_by_name("cancel").click()
def click_edit_button(self) -> None:
"""Нажатие кнопки 'Редактировать' на тулбаре."""
self.toolbar.check_button_visibility("edit")
self.toolbar.get_button_by_name("edit").click()
def click_save_button(self) -> None:
"""Нажатие кнопки 'Сохранить' на тулбаре."""
self.toolbar.check_button_visibility("save")
self.toolbar.get_button_by_name("save").click()
def decrease_setting_value(self, field_name: str) -> None:
"""Уменьшение на единицу значения поля настройки с помощью стрелочки вниз."""
field = self.get_field_by_name(field_name)
field.decrease_value()
def increase_setting_value(self, field_name: str) -> None:
"""Увеличение на единицу значения поля настройки с помощью стрелочки вверх."""
field = self.get_field_by_name(field_name)
field.increase_value()
def get_field_by_name(self, field_name: str) -> TextInput:
"""Возвращает элемент поле ввода по его имени.
Returns:
TextInput: Элемент поле ввода.
"""
if field_name == "administrator":
field = self.settings_form.get_content_item("admin_setting")
elif field_name == "operator":
field = self.settings_form.get_content_item("operator_setting")
elif field_name == "manager":
field = self.settings_form.get_content_item("manager_setting")
elif field_name == "inform_secur_user":
field = self.settings_form.get_content_item("inform_secur_user_setting")
elif field_name == '$collector':
field = self.settings_form.get_content_item("collector_setting")
else:
assert False, f"Got unsupported field name {field_name}"
return field
def get_setting_value(self, field_name: str) -> str:
"""Возвращает текущее значение требуемого поля настроек.
Returns:
str : Текущее значение требуемого поля настроек.
"""
return self.get_field_by_name(field_name).get_input_value().strip()
def get_settings_values(self) -> dict:
"""Возвращает словарь с текущими значениями настроек времени жизни сессии.
Returns:
dict: оварь с текущими значениями настроек времени жизни сессии.
"""
current_values = {}
current_values['administrator'] = self.settings_form.get_content_item("admin_setting").\
get_input_value().strip()
current_values['operator'] = self.settings_form.get_content_item("operator_setting").\
get_input_value().strip()
current_values['manager'] = self.settings_form.get_content_item("manager_setting").\
get_input_value().strip()
current_values['inform_secur_user'] = self.settings_form.get_content_item("inform_secur_user_setting").\
get_input_value().strip()
current_values['$collector'] = self.settings_form.get_content_item("collector_setting").\
get_input_value().strip()
return current_values
def edit_settings(self, new_settings: dict) -> None:
"""Изменение текущих значений настроек времени жизни сессии.
"""
self.click_edit_button()
for key, value in new_settings.items():
field = self.get_field_by_name(key)
field.input_value(value)
# temporararily
self.click_cancel_button()
# self.click_save_button()
# alert_type = self.alert.get_alert_type()
# if alert_type == "success":
# self.alert.check_alert_presence(' Параметры успешно\n обновлены ')
# self.alert.check_alert_absence(' Параметры успешно\n обновлены ')
# else:
# assert False, f"Got unexpected alert type {alert_type}"
# Проверки:
def check_content(self):
"""Проверяет наличие и корректность всех элементов формы."""

View File

@ -19,6 +19,10 @@ class TestSessionSettingsTab:
Тесты покрывают следующие сценарии:
1. test_session_settings_tab_content: Тест содержимого вкладки 'Сеансы/Настройки'
2. test_edit_session_settings: Тест проверки возможности редактирования выбранных полей формы
настройки времени жизни сеансов.
3. test_edit_session_setting_by_arrow: Тест проверки возможности увеличения/уменьшения значения
выбранного поля формы с помощью стрелочек Вверх/Вниз.
"""
@ -45,7 +49,7 @@ class TestSessionSettingsTab:
main_page.click_subpanel_item("Настройки", parent="Сеансы")
# @pytest.mark.develop
def test_sessions_tab_content(self, browser: Page) -> None:
def test_session_settings_tab_content(self, browser: Page) -> None:
"""Тест содержимого вкладки 'Сеансы/Настройки'.
Проверяет:
@ -69,3 +73,71 @@ class TestSessionSettingsTab:
session_settings_tab.verify_form_data(session_settings)
else:
print(f"Error request session setings data from API: {response.status_text}")
#@pytest.mark.develop
def test_edit_session_settings(self, browser: Page) -> None:
"""Тест проверки возможности редактирования выбранных полей формы настройки времени жизни сеансов.
Проверяет:
1. Возможность редактирования выбранных полей формы настройки времени жизни сеансов.
"""
new_settings = {'administrator': "50",
'operator': "20",
'manager': "20",
"inform_secur_user": "25"}
# Инициализация страницы сеансов
session_settings_tab = SessionSettingsTab(browser)
session_settings_tab.edit_settings(new_settings)
# temporarily
# updated_settings = session_settings_tab.get_settings_values()
# for key, value in new_settings.items():
# updated_value = updated_settings.get(key)
# assert updated_value == value, f"{key} updated value {updated_value} is not equal expected value {value}"
# @pytest.mark.develop
def test_edit_session_setting_by_arrow(self, browser: Page) -> None:
"""Тест проверки возможности увеличения/уменьшения значения выбранного поля формы с помощью стрелочек Вверх/Вниз.
"""
field_name = 'operator'
# Инициализация страницы сеансов
session_settings_tab = SessionSettingsTab(browser)
session_settings_tab.click_edit_button()
start_value = session_settings_tab.get_setting_value(field_name)
expected_value = int(start_value)
for i in range(5):
session_settings_tab.increase_setting_value(field_name)
current_value = int(session_settings_tab.get_setting_value(field_name))
expected_value += 1
assert current_value == expected_value, \
f"Expected value {expected_value} is not equal current value {current_value} for {field_name} setting"
for j in range(5):
session_settings_tab.decrease_setting_value(field_name)
current_value = int(session_settings_tab.get_setting_value(field_name))
expected_value -= 1
assert current_value == expected_value, \
f"Expected value {expected_value} is not equal current value {current_value} for {field_name} setting"
current_value = int(session_settings_tab.get_setting_value(field_name))
assert current_value == int(start_value), \
f"Expected value {start_value} is not equal current value {current_value} for {field_name} setting"
session_settings_tab.click_cancel_button()
# to be Done
# def test_edit_session_setting_boundary_values(self, browser: Page) -> None:
# """Тест проверки задания граничных значений выбранного поля формы.
# """