Внесение изменений в локаторы и названия тулбаров после изменений в UI версии 1.31
parent
ce9ff3e27d
commit
f8f85300d3
|
|
@ -18,10 +18,7 @@ class SettingsFormLocators:
|
||||||
SETTTINGS_FORM_SCROLL_CONTAINER = "//div[contains(@class, 'scrollarea__body')]"
|
SETTTINGS_FORM_SCROLL_CONTAINER = "//div[contains(@class, 'scrollarea__body')]"
|
||||||
SETTTINGS_FORM_TITLE = f"{SETTTINGS_FORM_SCROLL_CONTAINER}//div[contains(@class, 'v-toolbar__title')]"
|
SETTTINGS_FORM_TITLE = f"{SETTTINGS_FORM_SCROLL_CONTAINER}//div[contains(@class, 'v-toolbar__title')]"
|
||||||
|
|
||||||
SETTINGS_FORM_INPUT_FORM_CONTAINER = "//nav[contains(@class, 'active v-toolbar')]/following-sibling::div"
|
SETTINGS_FORM_INPUT_FORM_CONTAINER = "//nav[contains(@class, 'active v-toolbar')]/../following-sibling::div"
|
||||||
SETTINGS_FORM_SMS_INPUT_FORM_CONTAINER = "//nav[contains(@class, 'active v-toolbar')]/../following-sibling::div"
|
|
||||||
SETTINGS_FORM_LDAP_INPUT_FORM_CONTAINER = "//nav[contains(@class, 'active v-toolbar')]/../following-sibling::div"
|
|
||||||
SETTINGS_FORM_KEYCLOAK_INPUT_FORM_CONTAINER = "//nav[contains(@class, 'active v-toolbar')]/../following-sibling::div"
|
|
||||||
|
|
||||||
SETTINGS_FORM_INPUT_FIELD = "div.v-text-field__slot > input"
|
SETTINGS_FORM_INPUT_FIELD = "div.v-text-field__slot > input"
|
||||||
SETTINGS_FORM_INPUT_VALUE_SUFFIX = ".v-text-field__suffix"
|
SETTINGS_FORM_INPUT_VALUE_SUFFIX = ".v-text-field__suffix"
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ class KeycloakAuthSettingsTab(BasePage):
|
||||||
# Форма для отображения/редактирования полей настроек KEYCLOAK Аутентификации
|
# Форма для отображения/редактирования полей настроек KEYCLOAK Аутентификации
|
||||||
self.settings_form = SettingsFormComponent(page)
|
self.settings_form = SettingsFormComponent(page)
|
||||||
|
|
||||||
container_locator = self.page.locator(SettingsFormLocators.SETTINGS_FORM_KEYCLOAK_INPUT_FORM_CONTAINER)
|
container_locator = self.page.locator(SettingsFormLocators.SETTINGS_FORM_INPUT_FORM_CONTAINER)
|
||||||
|
|
||||||
self.input_fields_locators = self.settings_form.get_input_fields_locators(container_locator)
|
self.input_fields_locators = self.settings_form.get_input_fields_locators(container_locator)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ class LDAPAuthSettingsTab(BasePage):
|
||||||
# Форма для отображения/редактирования полей настроек LDAP Аутентификации
|
# Форма для отображения/редактирования полей настроек LDAP Аутентификации
|
||||||
self.settings_form = SettingsFormComponent(page)
|
self.settings_form = SettingsFormComponent(page)
|
||||||
|
|
||||||
container_locator = self.page.locator(SettingsFormLocators.SETTINGS_FORM_LDAP_INPUT_FORM_CONTAINER)
|
container_locator = self.page.locator(SettingsFormLocators.SETTINGS_FORM_INPUT_FORM_CONTAINER)
|
||||||
|
|
||||||
# Метка "tls"
|
# Метка "tls"
|
||||||
label_tls_locator = container_locator.get_by_text("tls")
|
label_tls_locator = container_locator.get_by_text("tls")
|
||||||
|
|
|
||||||
|
|
@ -29,12 +29,9 @@ class PushNotificationsSettingsTab(BasePage):
|
||||||
|
|
||||||
super().__init__(page)
|
super().__init__(page)
|
||||||
|
|
||||||
|
|
||||||
self.toolbar = ToolbarComponent(page, "Push уведомления")
|
|
||||||
|
|
||||||
# Форма для отображения/редактирования полей настроек Push уведомлений
|
# Форма для отображения/редактирования полей настроек Push уведомлений
|
||||||
self.settings_form = SettingsFormComponent(page)
|
self.settings_form = SettingsFormComponent(page)
|
||||||
self.settings_form.add_toolbar_title("Общие")
|
self.settings_form.add_toolbar_title("Push уведомления")
|
||||||
|
|
||||||
container_locator = self.page.locator(SettingsFormLocators.SETTINGS_FORM_INPUT_FORM_CONTAINER)
|
container_locator = self.page.locator(SettingsFormLocators.SETTINGS_FORM_INPUT_FORM_CONTAINER)
|
||||||
self.input_fields_locators = self.settings_form.get_input_fields_locators(container_locator)
|
self.input_fields_locators = self.settings_form.get_input_fields_locators(container_locator)
|
||||||
|
|
@ -137,8 +134,6 @@ class PushNotificationsSettingsTab(BasePage):
|
||||||
|
|
||||||
expected_input_field_names = ["Сообщение", "Пользователи"]
|
expected_input_field_names = ["Сообщение", "Пользователи"]
|
||||||
|
|
||||||
self.should_be_toolbar()
|
|
||||||
|
|
||||||
self.should_be_form_toolbar()
|
self.should_be_form_toolbar()
|
||||||
|
|
||||||
self.settings_form.check_button_visibility("submit_button")
|
self.settings_form.check_button_visibility("submit_button")
|
||||||
|
|
@ -160,16 +155,6 @@ class PushNotificationsSettingsTab(BasePage):
|
||||||
f"Push notifications settings input form item with name '{name}' is missing"
|
f"Push notifications 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("Push уведомления")).locator("div").nth(1)
|
|
||||||
self.toolbar.check_toolbar_presence_by_locator(loc, "Toolbar with title 'Push уведомления' is missing")
|
|
||||||
|
|
||||||
def should_be_form_toolbar(self) -> None:
|
def should_be_form_toolbar(self) -> None:
|
||||||
"""Проверяет наличие тулбара формы редактирования настроек.
|
"""Проверяет наличие тулбара формы редактирования настроек.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
"""Модуль вкладки 'Статус обслуживания'.
|
"""Модуль вкладки 'Статус компонентов'.
|
||||||
|
|
||||||
Содержит класс ServiceStatusTab для работы с таблицей сервисов.
|
Содержит класс ServiceStatusTab для работы с таблицей сервисов.
|
||||||
Позволяет проверять состояние и взаимодействовать с элементами вкладки.
|
Позволяет проверять состояние и взаимодействовать с элементами вкладки.
|
||||||
|
|
@ -14,7 +14,7 @@ from pages.base_page import BasePage
|
||||||
|
|
||||||
|
|
||||||
class ServiceStatusTab(BasePage):
|
class ServiceStatusTab(BasePage):
|
||||||
"""Класс для работы с вкладкой 'Статус обслуживания'.
|
"""Класс для работы с вкладкой 'Статус компонентов'.
|
||||||
|
|
||||||
Предоставляет методы для взаимодействия с таблицей сервисов и проверки
|
Предоставляет методы для взаимодействия с таблицей сервисов и проверки
|
||||||
её состояния.
|
её состояния.
|
||||||
|
|
@ -24,7 +24,7 @@ class ServiceStatusTab(BasePage):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, page: Page) -> None:
|
def __init__(self, page: Page) -> None:
|
||||||
"""Инициализирует компоненты вкладки 'Статус обслуживания'."""
|
"""Инициализирует компоненты вкладки 'Статус компонентов'."""
|
||||||
|
|
||||||
super().__init__(page)
|
super().__init__(page)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,24 +27,22 @@ class SessionSettingsTab(BasePage):
|
||||||
|
|
||||||
super().__init__(page)
|
super().__init__(page)
|
||||||
|
|
||||||
self.toolbar = ToolbarComponent(page, "Настройки")
|
self.toolbar = ToolbarComponent(page, "Время жизни сеанса")
|
||||||
toolbar_button_edit = self.page.get_by_role("navigation").filter(has_text=re.compile("Настройки")). \
|
toolbar_button_edit = self.page.get_by_role("navigation").filter(has_text=re.compile("Время жизни сеанса")). \
|
||||||
locator("//button[@data-testid='SESSION_SETTINGS__btn__edit']")
|
locator("//button[@data-testid='SESSION_SETTINGS__btn__edit']")
|
||||||
self.toolbar.add_tooltip_button(toolbar_button_edit, "edit")
|
self.toolbar.add_tooltip_button(toolbar_button_edit, "edit")
|
||||||
|
|
||||||
toolbar_button_save = self.page.get_by_role("navigation").filter(has_text=re.compile("Настройки")). \
|
toolbar_button_save = self.page.get_by_role("navigation").filter(has_text=re.compile("Время жизни сеанса")). \
|
||||||
locator("//button[@data-testid='SESSION_SETTINGS__btn__submit']")
|
locator("//button[@data-testid='SESSION_SETTINGS__btn__submit']")
|
||||||
self.toolbar.add_tooltip_button(toolbar_button_save, "save")
|
self.toolbar.add_tooltip_button(toolbar_button_save, "save")
|
||||||
|
|
||||||
toolbar_button_cancel = self.page.get_by_role("navigation").filter(has_text=re.compile("Настройки")). \
|
toolbar_button_cancel = self.page.get_by_role("navigation").filter(has_text=re.compile("Время жизни сеанса")). \
|
||||||
locator("//button[@data-testid='SESSION_SETTINGS__btn__cancelEdit']")
|
locator("//button[@data-testid='SESSION_SETTINGS__btn__cancelEdit']")
|
||||||
self.toolbar.add_tooltip_button(toolbar_button_cancel, "cancel")
|
self.toolbar.add_tooltip_button(toolbar_button_cancel, "cancel")
|
||||||
|
|
||||||
# Форма для отображения/редактирования полей настроек сессии пользователя
|
# Форма для отображения/редактирования полей настроек сессии пользователя
|
||||||
self.settings_form = SettingsFormComponent(page)
|
self.settings_form = SettingsFormComponent(page)
|
||||||
|
|
||||||
self.settings_form.add_toolbar_title("Время жизни сеанса")
|
|
||||||
|
|
||||||
container_locator = self.page.locator(SettingsFormLocators.SETTINGS_FORM_INPUT_FORM_CONTAINER)
|
container_locator = self.page.locator(SettingsFormLocators.SETTINGS_FORM_INPUT_FORM_CONTAINER)
|
||||||
self.input_fields_locators = self.settings_form.get_input_fields_locators(container_locator)
|
self.input_fields_locators = self.settings_form.get_input_fields_locators(container_locator)
|
||||||
|
|
||||||
|
|
@ -208,8 +206,6 @@ class SessionSettingsTab(BasePage):
|
||||||
self.should_be_toolbar()
|
self.should_be_toolbar()
|
||||||
self.should_be_toolbar_buttons()
|
self.should_be_toolbar_buttons()
|
||||||
|
|
||||||
self.should_be_form_toolbar()
|
|
||||||
|
|
||||||
actual_input_field_names = self.input_fields_locators.keys()
|
actual_input_field_names = self.input_fields_locators.keys()
|
||||||
assert set(actual_input_field_names) == set(expected_input_field_names), \
|
assert set(actual_input_field_names) == set(expected_input_field_names), \
|
||||||
f"Misscomparison input field names: Expected {expected_input_field_names}, Actual {actual_input_field_names}"
|
f"Misscomparison input field names: Expected {expected_input_field_names}, Actual {actual_input_field_names}"
|
||||||
|
|
@ -242,8 +238,8 @@ class SessionSettingsTab(BasePage):
|
||||||
AssertionError: Если тулбар или кнопка редактирования отсутствуют.
|
AssertionError: Если тулбар или кнопка редактирования отсутствуют.
|
||||||
"""
|
"""
|
||||||
loc = self.page.get_by_role("navigation").filter(
|
loc = self.page.get_by_role("navigation").filter(
|
||||||
has_text=re.compile("Настройки")).locator("div").nth(1)
|
has_text=re.compile("Время жизни сеанса")).locator("div").nth(1)
|
||||||
self.toolbar.check_toolbar_presence_by_locator(loc, "Toolbar with title 'Настройки' is missing")
|
self.toolbar.check_toolbar_presence_by_locator(loc, "Toolbar with title 'Время жизни сеанса' is missing")
|
||||||
self.toolbar.check_button_visibility("edit")
|
self.toolbar.check_button_visibility("edit")
|
||||||
|
|
||||||
def should_be_toolbar_buttons(self) -> None:
|
def should_be_toolbar_buttons(self) -> None:
|
||||||
|
|
@ -265,15 +261,6 @@ 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:
|
||||||
"""Проверяет соответствие содержимого полей формы данным из БД.
|
"""Проверяет соответствие содержимого полей формы данным из БД.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ class SMSNotificationsSettingsTab(BasePage):
|
||||||
# Форма для отображения/редактирования полей настроек СМС уведомлений
|
# Форма для отображения/редактирования полей настроек СМС уведомлений
|
||||||
self.settings_form = SettingsFormComponent(page)
|
self.settings_form = SettingsFormComponent(page)
|
||||||
|
|
||||||
container_locator = self.page.locator(SettingsFormLocators.SETTINGS_FORM_SMS_INPUT_FORM_CONTAINER)
|
container_locator = self.page.locator(SettingsFormLocators.SETTINGS_FORM_INPUT_FORM_CONTAINER)
|
||||||
self.input_fields_locators = self.settings_form.get_input_fields_locators(container_locator)
|
self.input_fields_locators = self.settings_form.get_input_fields_locators(container_locator)
|
||||||
|
|
||||||
loc = self.input_fields_locators.get("ip")
|
loc = self.input_fields_locators.get("ip")
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ class TestServiceStatusTable:
|
||||||
mp.should_be_navigation_panel()
|
mp.should_be_navigation_panel()
|
||||||
mp.click_main_navigation_panel_item("Настройки")
|
mp.click_main_navigation_panel_item("Настройки")
|
||||||
mp.click_subpanel_item("Обслуживание и диагностика")
|
mp.click_subpanel_item("Обслуживание и диагностика")
|
||||||
mp.click_subpanel_item("Статус обслуживания")
|
mp.click_subpanel_item("Статус компонентов")
|
||||||
|
|
||||||
def test_scrolling(self, browser: Page) -> None:
|
def test_scrolling(self, browser: Page) -> None:
|
||||||
"""Проверяет прокрутку таблицы статусов сервисов.
|
"""Проверяет прокрутку таблицы статусов сервисов.
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ class TestNavigationPanel:
|
||||||
mp.click_main_navigation_panel_item("Настройки")
|
mp.click_main_navigation_panel_item("Настройки")
|
||||||
|
|
||||||
mp.click_subpanel_item("Обслуживание и диагностика")
|
mp.click_subpanel_item("Обслуживание и диагностика")
|
||||||
mp.click_subpanel_item("Статус обслуживания")
|
mp.click_subpanel_item("Статус компонентов")
|
||||||
mp.wait_for_timeout(2000)
|
mp.wait_for_timeout(2000)
|
||||||
|
|
||||||
mp.click_subpanel_item("Сеансы")
|
mp.click_subpanel_item("Сеансы")
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
"""Модуль тестов вкладки 'Статус обслуживания'.
|
"""Модуль тестов вкладки 'Статус компонентов'.
|
||||||
|
|
||||||
Содержит тесты для проверки отображения и функциональности
|
Содержит тесты для проверки отображения и функциональности
|
||||||
элементов вкладки статусов сервисов.
|
элементов вкладки статусов сервисов.
|
||||||
|
|
@ -15,10 +15,10 @@ from pages.login_page import LoginPage
|
||||||
|
|
||||||
# @pytest.mark.smoke
|
# @pytest.mark.smoke
|
||||||
class TestServiceStatusTab:
|
class TestServiceStatusTab:
|
||||||
"""Класс тестов для проверки вкладки 'Статус обслуживания'.
|
"""Класс тестов для проверки вкладки 'Статус компонентов'.
|
||||||
|
|
||||||
Тесты покрывают следующие сценарии:
|
Тесты покрывают следующие сценарии:
|
||||||
1. test_service_status_tab_content: Проверяет содержимое вкладки 'Статус обслуживания'
|
1. test_service_status_tab_content: Проверяет содержимое вкладки 'Статус компонентов'
|
||||||
2. test_service_status_table_row_highlighting: Проверяет выделение строк в таблице сервисов
|
2. test_service_status_table_row_highlighting: Проверяет выделение строк в таблице сервисов
|
||||||
3. test_service_status_tab_resize: Проверяет возможность расширения/сжатия рабочей области вкладки
|
3. test_service_status_tab_resize: Проверяет возможность расширения/сжатия рабочей области вкладки
|
||||||
4. test_service_status_tab_reload: Проверяет возможность обновления контента после нажатия кнопки 'Обновить'
|
4. test_service_status_tab_reload: Проверяет возможность обновления контента после нажатия кнопки 'Обновить'
|
||||||
|
|
@ -47,12 +47,12 @@ class TestServiceStatusTab:
|
||||||
# Клик по пункту 'Обслуживание и диагностика' в панели навигации настроек
|
# Клик по пункту 'Обслуживание и диагностика' в панели навигации настроек
|
||||||
mp.click_subpanel_item("Обслуживание и диагностика")
|
mp.click_subpanel_item("Обслуживание и диагностика")
|
||||||
|
|
||||||
# Клик по пункту 'Статус обслуживания' в панели навигации обслуживания
|
# Клик по пункту 'Статус компонентов' в панели навигации обслуживания
|
||||||
mp.click_subpanel_item("Статус обслуживания")
|
mp.click_subpanel_item("Статус компонентов")
|
||||||
|
|
||||||
# @pytest.mark.develop
|
# @pytest.mark.develop
|
||||||
def test_service_status_tab_content(self, browser: Page):
|
def test_service_status_tab_content(self, browser: Page):
|
||||||
"""Проверяет содержимое вкладки 'Статус обслуживания'.
|
"""Проверяет содержимое вкладки 'Статус компонентов'.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
browser: Экземпляр страницы Playwright.
|
browser: Экземпляр страницы Playwright.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue