Добавлен тест проверки вертикального скроллинга вкладки Сеансы/Настройки в маленьком окне браузера
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 tools.logger import get_logger
|
||||||
from locators.settings_form_locators import SettingsFormLocators
|
from locators.settings_form_locators import SettingsFormLocators
|
||||||
from elements.button_element import Button
|
from elements.button_element import Button
|
||||||
|
|
@ -58,21 +58,11 @@ class SettingsFormComponent(BaseComponent):
|
||||||
assert False, f"Button with name '{name}' not found"
|
assert False, f"Button with name '{name}' not found"
|
||||||
button.click()
|
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:
|
def check_button_visibility(self, name: str) -> None:
|
||||||
"""Проверяет наличие кнопки по имени. Вызывает ошибку, если не найдена."""
|
"""Проверяет наличие кнопки по имени. Вызывает ошибку, если не найдена."""
|
||||||
|
|
@ -89,4 +79,5 @@ class SettingsFormComponent(BaseComponent):
|
||||||
AssertionError: Если тулбар или кнопка редактирования отсутствуют.
|
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.title = title
|
||||||
self.buttons = []
|
self.buttons = []
|
||||||
|
|
||||||
|
# Действия:
|
||||||
def add_title(self, title: str) -> None:
|
def add_title(self, title: str) -> None:
|
||||||
"""Устанавливает новый заголовок тулбара.
|
"""Устанавливает новый заголовок тулбара.
|
||||||
|
|
||||||
|
|
@ -125,6 +126,7 @@ class ToolbarComponent(BaseComponent):
|
||||||
|
|
||||||
return title_text
|
return title_text
|
||||||
|
|
||||||
|
# Проверки:
|
||||||
def is_button_present(self, name: str) -> bool:
|
def is_button_present(self, name: str) -> bool:
|
||||||
"""Проверяет наличие кнопки.
|
"""Проверяет наличие кнопки.
|
||||||
|
|
||||||
|
|
@ -179,6 +181,16 @@ class ToolbarComponent(BaseComponent):
|
||||||
locator = self.get_locator(locator)
|
locator = self.get_locator(locator)
|
||||||
expect(locator).to_be_visible(), message
|
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:
|
def check_button_visibility(self, name: str) -> None:
|
||||||
"""Проверяет наличие и видимость кнопки с предварительной прокруткой к элементу.
|
"""Проверяет наличие и видимость кнопки с предварительной прокруткой к элементу.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -155,6 +155,27 @@ class SessionSettingsTab(BasePage):
|
||||||
assert False, f"Got unsupported field name {field_name}"
|
assert False, f"Got unsupported field name {field_name}"
|
||||||
return field
|
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:
|
def get_setting_value(self, field_name: str) -> str:
|
||||||
"""Возвращает текущее значение требуемого поля настроек.
|
"""Возвращает текущее значение требуемого поля настроек.
|
||||||
|
|
||||||
|
|
@ -207,6 +228,22 @@ class SessionSettingsTab(BasePage):
|
||||||
# else:
|
# else:
|
||||||
# assert False, f"Got unexpected alert type {alert_type}"
|
# 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):
|
def check_content(self):
|
||||||
"""Проверяет наличие и корректность всех элементов формы."""
|
"""Проверяет наличие и корректность всех элементов формы."""
|
||||||
|
|
@ -214,17 +251,24 @@ class SessionSettingsTab(BasePage):
|
||||||
self.should_be_toolbar()
|
self.should_be_toolbar()
|
||||||
self.should_be_toolbar_buttons()
|
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():
|
for name in self.settings_form.content_items.keys():
|
||||||
item = self.settings_form.get_content_item(name)
|
item = self.settings_form.get_content_item(name)
|
||||||
print("check item: "+name)
|
|
||||||
item.check_visibility(
|
item.check_visibility(
|
||||||
f"Session settings input form item with name '{name}' is missing"
|
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:
|
def should_be_toolbar(self) -> None:
|
||||||
"""Проверяет наличие тулбара.
|
"""Проверяет наличие тулбара вкладки.
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
AssertionError: Если тулбар или кнопка редактирования отсутствуют.
|
AssertionError: Если тулбар или кнопка редактирования отсутствуют.
|
||||||
|
|
@ -253,6 +297,15 @@ class SessionSettingsTab(BasePage):
|
||||||
self.toolbar.get_button_by_name("cancel").click()
|
self.toolbar.get_button_by_name("cancel").click()
|
||||||
self.toolbar.check_button_visibility("edit")
|
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:
|
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_services_table.py
|
||||||
pytest -s -v --s="{'width': 300, 'height': 420}" test_json_container.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': 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