Добавлен тест проверки вертикального скроллинга вкладки Сеансы/Настройки в маленьком окне браузера
parent
9d519f43b7
commit
adcac1899f
|
|
@ -1,7 +1,7 @@
|
|||
"""Модуль компонента формы ввода и отображения полей настроек. Содержит класс для работы с формами ввода
|
||||
и отображения полей настроек,их элементами и проверками."""
|
||||
|
||||
from playwright.sync_api import Page
|
||||
from playwright.sync_api import Page, Locator
|
||||
from tools.logger import get_logger
|
||||
from locators.settings_form_locators import SettingsFormLocators
|
||||
from elements.button_element import Button
|
||||
|
|
@ -58,21 +58,11 @@ class SettingsFormComponent(BaseComponent):
|
|||
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:
|
||||
"""Проверяет возможность вертикальной прокрутки окна."""
|
||||
def check_vertical_scrolling(self, locator: str| Locator) -> bool:
|
||||
"""Проверяет возможность вертикальной прокрутки формы."""
|
||||
|
||||
return self.is_scrollable_vertically(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER)
|
||||
return self.is_scrollable_vertically(locator)
|
||||
|
||||
def check_button_visibility(self, name: str) -> None:
|
||||
"""Проверяет наличие кнопки по имени. Вызывает ошибку, если не найдена."""
|
||||
|
|
@ -89,4 +79,5 @@ class SettingsFormComponent(BaseComponent):
|
|||
AssertionError: Если тулбар или кнопка редактирования отсутствуют.
|
||||
"""
|
||||
|
||||
self.toolbar.check_toolbar_presence("Toolbar is missing")
|
||||
self.toolbar.check_toolbar_presence_by_locator_and_title(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER,
|
||||
"Session settings form toolbar is missing")
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ class ToolbarComponent(BaseComponent):
|
|||
self.title = title
|
||||
self.buttons = []
|
||||
|
||||
# Действия:
|
||||
def add_title(self, title: str) -> None:
|
||||
"""Устанавливает новый заголовок тулбара.
|
||||
|
||||
|
|
@ -125,6 +126,7 @@ class ToolbarComponent(BaseComponent):
|
|||
|
||||
return title_text
|
||||
|
||||
# Проверки:
|
||||
def is_button_present(self, name: str) -> bool:
|
||||
"""Проверяет наличие кнопки.
|
||||
|
||||
|
|
@ -179,6 +181,16 @@ class ToolbarComponent(BaseComponent):
|
|||
locator = self.get_locator(locator)
|
||||
expect(locator).to_be_visible(), message
|
||||
|
||||
def check_toolbar_presence_by_locator_and_title(self, locator: str|Locator, message: str) -> None:
|
||||
"""Проверяет видимость тулбара.
|
||||
|
||||
Args:
|
||||
message (str): Сообщение об ошибке если тулбар не виден
|
||||
"""
|
||||
|
||||
locator = self.get_locator(locator).filter(has_text=self.title)
|
||||
expect(locator).to_be_visible(), message
|
||||
|
||||
def check_button_visibility(self, name: str) -> None:
|
||||
"""Проверяет наличие и видимость кнопки с предварительной прокруткой к элементу.
|
||||
|
||||
|
|
|
|||
|
|
@ -155,6 +155,27 @@ class SessionSettingsTab(BasePage):
|
|||
assert False, f"Got unsupported field name {field_name}"
|
||||
return field
|
||||
|
||||
def get_label_by_name(self, label_name: str) -> Text:
|
||||
"""Возвращает элемент название поля ввода по его имени.
|
||||
|
||||
Returns:
|
||||
Text: Элемент название поле ввода.
|
||||
"""
|
||||
|
||||
if label_name == "administrator":
|
||||
label = self.settings_form.get_content_item("admin_setting_label")
|
||||
elif label_name == "operator":
|
||||
label = self.settings_form.get_content_item("operator_setting_label")
|
||||
elif label_name == "manager":
|
||||
label = self.settings_form.get_content_item("manager_setting_label")
|
||||
elif label_name == "inform_secur_user":
|
||||
label = self.settings_form.get_content_item("inform_secur_user_setting_label")
|
||||
elif label_name == '$collector':
|
||||
label = self.settings_form.get_content_item("collector_setting_label")
|
||||
else:
|
||||
assert False, f"Got unsupported label name {label_name}"
|
||||
return label
|
||||
|
||||
def get_setting_value(self, field_name: str) -> str:
|
||||
"""Возвращает текущее значение требуемого поля настроек.
|
||||
|
||||
|
|
@ -207,6 +228,22 @@ class SessionSettingsTab(BasePage):
|
|||
# else:
|
||||
# assert False, f"Got unexpected alert type {alert_type}"
|
||||
|
||||
def scroll_down(self) -> None:
|
||||
"""Скроллинг вниз формы настроек времени жизни сессии.
|
||||
"""
|
||||
|
||||
locator = self.page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).filter(
|
||||
has_text="Время жизни сеанса")
|
||||
self.settings_form.scroll_down(locator)
|
||||
|
||||
def scroll_up(self) -> None:
|
||||
"""Скроллинг вверх формы настроек времени жизни сессии.
|
||||
"""
|
||||
|
||||
locator = self.page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).filter(
|
||||
has_text="Время жизни сеанса")
|
||||
self.settings_form.scroll_up(locator)
|
||||
|
||||
# Проверки:
|
||||
def check_content(self):
|
||||
"""Проверяет наличие и корректность всех элементов формы."""
|
||||
|
|
@ -214,17 +251,24 @@ class SessionSettingsTab(BasePage):
|
|||
self.should_be_toolbar()
|
||||
self.should_be_toolbar_buttons()
|
||||
|
||||
self.settings_form.should_be_toolbar()
|
||||
self.should_be_form_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 check_vertical_scrolling(self) -> bool:
|
||||
"""Проверка возможности вертикального скроллинга формы настроек времени жизни сессии.
|
||||
"""
|
||||
|
||||
locator = self.page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).filter(
|
||||
has_text="Время жизни сеанса")
|
||||
return self.settings_form.check_vertical_scrolling(locator)
|
||||
|
||||
def should_be_toolbar(self) -> None:
|
||||
"""Проверяет наличие тулбара.
|
||||
"""Проверяет наличие тулбара вкладки.
|
||||
|
||||
Raises:
|
||||
AssertionError: Если тулбар или кнопка редактирования отсутствуют.
|
||||
|
|
@ -253,6 +297,15 @@ class SessionSettingsTab(BasePage):
|
|||
self.toolbar.get_button_by_name("cancel").click()
|
||||
self.toolbar.check_button_visibility("edit")
|
||||
|
||||
def should_be_form_toolbar(self) -> None:
|
||||
"""Проверяет наличие тулбара формы редактирования настроек.
|
||||
|
||||
Raises:
|
||||
AssertionError: Если тулбар отсутствует.
|
||||
"""
|
||||
|
||||
self.settings_form.should_be_toolbar()
|
||||
|
||||
def verify_form_data(self, session_settings: dict) -> None:
|
||||
"""Проверяет соответствие содержимого полей формы данным из БД.
|
||||
|
||||
|
|
|
|||
|
|
@ -2,3 +2,4 @@ pytest -s -v --s="{'width': 300, 'height': 420}" test_navigation_panel.py
|
|||
pytest -s -v --s="{'width': 300, 'height': 420}" test_services_table.py
|
||||
pytest -s -v --s="{'width': 300, 'height': 420}" test_json_container.py
|
||||
pytest -s -v --s="{'width': 300, 'height': 420}" test_user_modal_window.py
|
||||
pytest -s -v --s="{'width': 800, 'height': 200}" test_session_settings.py
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
"""Модуль тестов вкладки 'Сеансы/Настройки'.
|
||||
|
||||
Содержит тесты для проверки функциональности и прокрутки
|
||||
вкладки 'Сеансы/Настройки'.
|
||||
"""
|
||||
|
||||
import pytest
|
||||
from playwright.sync_api import Page
|
||||
from pages.main_page import MainPage
|
||||
from pages.login_page import LoginPage
|
||||
from pages.session_settings_tab import SessionSettingsTab
|
||||
|
||||
class TestSessionSettingsForm:
|
||||
"""Класс тестов для проверки таблицы статусов сервисов."""
|
||||
|
||||
@pytest.fixture(scope="function", autouse=True)
|
||||
def setup(self, browser: Page) -> None:
|
||||
"""Настраивает тестовое окружение перед каждым тестом.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
"""
|
||||
|
||||
lp = LoginPage(browser)
|
||||
lp.do_login()
|
||||
|
||||
mp = MainPage(browser)
|
||||
mp.should_be_navigation_panel()
|
||||
mp.click_main_navigation_panel_item("Настройки")
|
||||
mp.click_subpanel_item("Обслуживание и диагностика")
|
||||
mp.click_subpanel_item("Сеансы")
|
||||
mp.click_subpanel_item("Настройки", parent="Сеансы")
|
||||
|
||||
def test_scrolling(self, browser: Page) -> None:
|
||||
"""Проверяет прокрутку таблицы статусов сервисов.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
|
||||
Steps:
|
||||
1. Проверяет возможность вертикальной прокрутки
|
||||
2. Прокручивает вниз и проверяет видимость последней строки
|
||||
3. Прокручивает вверх и проверяет видимость тулбара формы редактирования настроек
|
||||
"""
|
||||
|
||||
# Инициализация страницы сеансов
|
||||
sst = SessionSettingsTab(browser)
|
||||
|
||||
# Проверка вертикального скроллинга
|
||||
is_scrollable_vertically = sst.check_vertical_scrolling()
|
||||
assert is_scrollable_vertically, "Should be vertical scrolling"
|
||||
|
||||
sst.scroll_down()
|
||||
sst.get_label_by_name('$collector').check_visibility("Text '$collector' should be visible")
|
||||
sst.wait_for_timeout(3000)
|
||||
|
||||
sst.scroll_up()
|
||||
sst.should_be_form_toolbar()
|
||||
sst.wait_for_timeout(2000)
|
||||
Loading…
Reference in New Issue