Актуализация тестов панели событий после изменения UI в версии 1.25
parent
453d6a5ec2
commit
a6b0347c78
|
|
@ -25,43 +25,46 @@ class EventPanelComponent(BaseComponent):
|
|||
|
||||
super().__init__(page)
|
||||
|
||||
self.states_tab = TabButton(page, self.page.locator(EventPanelLocators.TAB_STATES), "states_tab")
|
||||
self.actions_tab = TabButton(page, self.page.locator(EventPanelLocators.TAB_ACTIONS), "actions_tab")
|
||||
self.events_tab = TabButton(page, self.page.locator(EventPanelLocators.TAB_EVENTS), "events_tab")
|
||||
self.expand_less_button = Button(page,
|
||||
page. locator(EventPanelLocators.BUTTON_EXPAND_LESS),
|
||||
"expand_less_button")
|
||||
self.expand_more_button = Button(page,
|
||||
page. locator(EventPanelLocators.BUTTON_EXPAND_MORE),
|
||||
"expand_more_button")
|
||||
|
||||
self.states_tab = TabButton(page, page.locator(EventPanelLocators.TAB_STATES), "states_tab")
|
||||
self.actions_tab = TabButton(page, page.locator(EventPanelLocators.TAB_ACTIONS), "actions_tab")
|
||||
self.events_tab = TabButton(page, page.locator(EventPanelLocators.TAB_EVENTS), "events_tab")
|
||||
self.maintenance_tab = TabButton(page,
|
||||
self.page.locator(EventPanelLocators.TAB_MAINTENANCE), "maintenance_tab")
|
||||
self.system_log_tab = TabButton(page, self.page.locator(EventPanelLocators.TAB_SYSTEM_LOG), "system_log_tab")
|
||||
page.locator(EventPanelLocators.TAB_MAINTENANCE), "maintenance_tab")
|
||||
self.system_log_tab = TabButton(page, page.locator(EventPanelLocators.TAB_SYSTEM_LOG), "system_log_tab")
|
||||
self.audit_tab = TabButton(page, page.locator(EventPanelLocators.TAB_AUDIT), "audit_tab")
|
||||
|
||||
self.unknown_reason_button = TooltipButton(page,
|
||||
self.page.locator(EventPanelLocators.BUTTONS_EVENT).nth(0),
|
||||
page.locator(EventPanelLocators.BUTTONS_EVENT).nth(0),
|
||||
"unknown_reason_button")
|
||||
self.warning_button = TooltipButton(page,
|
||||
self.page.locator(EventPanelLocators.BUTTONS_EVENT).nth(1),
|
||||
page.locator(EventPanelLocators.BUTTONS_EVENT).nth(1),
|
||||
"warning_button")
|
||||
self.damage_button = TooltipButton(page,
|
||||
self.page.locator(EventPanelLocators.BUTTONS_EVENT).nth(2),
|
||||
page.locator(EventPanelLocators.BUTTONS_EVENT).nth(2),
|
||||
"damage_button")
|
||||
self.failure_button = TooltipButton(page,
|
||||
self.page.locator(EventPanelLocators.BUTTONS_EVENT).nth(3),
|
||||
page.locator(EventPanelLocators.BUTTONS_EVENT).nth(3),
|
||||
"failure_button")
|
||||
|
||||
user_button_locator = self.page.locator(EventPanelLocators.BUTTONS_SERVICE).get_by_role("button")
|
||||
self.user_button = Button(page, user_button_locator, "user_button")
|
||||
self.user_button = Button(page, page.locator(EventPanelLocators.BUTTON_USER), "user_button")
|
||||
|
||||
# Действия:
|
||||
def click_expand_less_button(self) -> None:
|
||||
"""Выполняет нажатие кнопки галочка вверх."""
|
||||
|
||||
button_locator = self.page.locator(EventPanelLocators.TAB_EXPAND_BUTTONS).\
|
||||
get_by_role("button").filter(has_text='expand_less')
|
||||
button_locator.click()
|
||||
self.expand_less_button.click()
|
||||
|
||||
def click_expand_more_button(self) -> None:
|
||||
"""Выполняет нажатие кнопки галочка вниз."""
|
||||
|
||||
button_locator = self.page.locator(EventPanelLocators.TAB_EXPAND_BUTTONS).\
|
||||
get_by_role("button").filter(has_text='expand_more')
|
||||
button_locator.click(force=True)
|
||||
self.expand_more_button.click()
|
||||
|
||||
def click_system_log_tab(self) -> SystemLogEventsContainer:
|
||||
"""Выполняет нажатие tab-кнопки Системный журнал."""
|
||||
|
|
@ -128,21 +131,19 @@ class EventPanelComponent(BaseComponent):
|
|||
|
||||
# Проверки:
|
||||
def check_expand_less_button(self) -> bool:
|
||||
"""Проверяет наличие кнопки галочка вверх."""
|
||||
"""Проверяет наличие кнопки галочка вниз."""
|
||||
|
||||
try:
|
||||
_ = self.page.locator(EventPanelLocators.TAB_EXPAND_BUTTONS).\
|
||||
get_by_role("button").filter(has_text='expand_less')
|
||||
_ = self.page.locator(EventPanelLocators.BUTTON_EXPAND_LESS)
|
||||
except TimeoutError:
|
||||
return False
|
||||
return True
|
||||
|
||||
def check_expand_more_button(self) -> bool:
|
||||
"""Проверяет наличие кнопки галочка вниз"""
|
||||
"""Проверяет наличие кнопки галочка вверх"""
|
||||
|
||||
try:
|
||||
_ = self.page.locator(EventPanelLocators.TAB_EXPAND_BUTTONS).\
|
||||
get_by_role("button").filter(has_text='expand_more')
|
||||
_ = self.page.locator(EventPanelLocators.BUTTON_EXPAND_MORE)
|
||||
except TimeoutError:
|
||||
return False
|
||||
return True
|
||||
|
|
@ -153,7 +154,7 @@ class EventPanelComponent(BaseComponent):
|
|||
self.user_button.check_visibility("User button is missing on event panel")
|
||||
|
||||
def should_be_tab_buttons(self) -> None:
|
||||
"""Проверяет наличие блока tab-кнопок Состояния, Действия, События, Обслуживание, Системный журнал."""
|
||||
"""Проверяет наличие блока tab-кнопок Состояния, Действия, События, Обслуживание, Системный журнал, Аудит."""
|
||||
|
||||
self.states_tab.check_have_text('Состояния', "Tab button with text Состояния is missing on event panel")
|
||||
self.actions_tab.check_have_text('Действия',"Tab button with text Действия is missing on event panel")
|
||||
|
|
@ -162,6 +163,8 @@ class EventPanelComponent(BaseComponent):
|
|||
"Tab button with text Обслуживание is missing on event panel")
|
||||
self.system_log_tab.check_have_text('Системный журнал',
|
||||
"Tab button with text Системный журнал is missing on event panel")
|
||||
self.audit_tab.check_have_text('Аудит',
|
||||
"Tab button with text Аудит is missing on event panel")
|
||||
|
||||
def should_be_event_buttons(self) -> None:
|
||||
"""Проверяет наличие блока кнопок-счетчиков событий."""
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
"""Модуль компонента контейнера с перечнем событий. Содержит класс для работы с контейнерами,
|
||||
их элементами и проверками."""
|
||||
|
||||
from playwright.sync_api import Page, Locator
|
||||
from playwright.sync_api import Page, Locator, expect
|
||||
from tools.logger import get_logger
|
||||
from locators.toolbar_locators import ToolbarLocators
|
||||
from locators.event_panel_locators import EventPanelLocators
|
||||
from elements.tooltip_button_element import TooltipButton
|
||||
from elements.tab_button_element import TabButton
|
||||
from elements.button_element import Button
|
||||
from components_derived.sidebar_filter_component import SidebarFilterComponent
|
||||
from components_derived.events_filter_panel import EventsFilterPanel
|
||||
from components.toolbar_component import ToolbarComponent
|
||||
from components.table_component import TableComponent
|
||||
from components.base_component import BaseComponent
|
||||
|
|
@ -32,18 +32,11 @@ class EventsContainerComponent(BaseComponent):
|
|||
|
||||
# тулбар
|
||||
self.toolbar = ToolbarComponent(page, "")
|
||||
filter_button_locator = self.container_locator.locator(ToolbarLocators.TITLE).\
|
||||
get_by_role("button")
|
||||
self.toolbar.add_button(filter_button_locator, "filter_button")
|
||||
|
||||
export_buttons = self.container_locator.locator(ToolbarLocators.ITEMS).\
|
||||
get_by_role("button").all()
|
||||
self.toolbar.add_tooltip_button(export_buttons[1], "export_to_csv_button")
|
||||
self.toolbar.add_tooltip_button(export_buttons[0], "export_to_pdf_button")
|
||||
self.toolbar_locator = EventPanelLocators.TOOLBAR
|
||||
|
||||
# Таблица событий
|
||||
self.events_table = TableComponent(page)
|
||||
self.table_locator = "//div[@class='scrolltable']/div/table"
|
||||
self.table_locator = EventPanelLocators.TABLE
|
||||
|
||||
# Кнопки пагинации в нижней части контейнера
|
||||
self.chevron_left = Button(page,
|
||||
|
|
@ -64,16 +57,21 @@ class EventsContainerComponent(BaseComponent):
|
|||
locator("xpath=..").get_by_role("button").nth(2)
|
||||
self.data_set_number = Button(page, loc, "data_set_number")
|
||||
|
||||
self.sidebar_filter_locator = self.container_locator.locator("//aside//div[@class='scrollarea__container']")
|
||||
self.sidebar_filter = SidebarFilterComponent(self.page,
|
||||
self.sidebar_filter_locator)
|
||||
self.events_filter = EventsFilterPanel(self.page)
|
||||
|
||||
# Действия:
|
||||
def add_tab_to_toolbar(self, locator: str | Locator, name: str) -> None:
|
||||
"""Добавление кнопки типа v-tabs к тулбару"""
|
||||
|
||||
tabs_locator = self.get_locator(locator)
|
||||
self.toolbar.add_tab_button(self.container_locator.locator(tabs_locator), name)
|
||||
tab_locator = self.get_locator(locator)
|
||||
self.toolbar.add_tab_button(tab_locator, name)
|
||||
|
||||
def click_tab_button(self, name: str) -> None:
|
||||
"""Нажатие tab кнопки на тулбаре"""
|
||||
|
||||
tab_button = self.toolbar.get_button_by_name(name)
|
||||
assert tab_button, f"Try to click unexisted button {name}"
|
||||
tab_button.click()
|
||||
|
||||
def click_chevron_left(self) -> None:
|
||||
"""Нажатие кнопки получения предыдущего набора данных"""
|
||||
|
|
@ -95,13 +93,13 @@ class EventsContainerComponent(BaseComponent):
|
|||
|
||||
self.last_page.click()
|
||||
|
||||
def click_filter_button(self) -> SidebarFilterComponent:
|
||||
def click_filter_button(self) -> EventsFilterPanel:
|
||||
"""Нажатие кнопки перехода на первую сраницу"""
|
||||
|
||||
self.toolbar.click_button("filter_button")
|
||||
self.sidebar_filter.check_visibility(self.sidebar_filter_locator,
|
||||
"Filter sidebar is missing")
|
||||
return self.sidebar_filter
|
||||
expect(self.page.locator("div.menuable__content__active")).to_be_visible(), "Events filter is missing"
|
||||
|
||||
return self.events_filter
|
||||
|
||||
def click_event_table_header_arrow(self, index: int) -> None:
|
||||
""" Нажатие кнопки-стрелочки вверх/вниз в ячейке заголовка таблицы
|
||||
|
|
@ -157,10 +155,10 @@ class EventsContainerComponent(BaseComponent):
|
|||
loc = self.container_locator.locator(self.table_locator)
|
||||
return self.events_table.get_rows_count(loc)
|
||||
|
||||
def get_sidebar_filter(self) -> SidebarFilterComponent:
|
||||
"""Возвращает боковую панель фильтрации."""
|
||||
def get_events_filter(self) -> EventsFilterPanel:
|
||||
"""Возвращает панель фильтрации."""
|
||||
|
||||
return self.sidebar_filter
|
||||
return self.events_filter
|
||||
|
||||
def get_toolbar_filter_button(self) -> Button:
|
||||
"""Возвращает кнопку фильтрации."""
|
||||
|
|
@ -279,6 +277,21 @@ class EventsContainerComponent(BaseComponent):
|
|||
|
||||
return self.last_page.is_disabled()
|
||||
|
||||
def is_tab_active(self, name: str) -> bool:
|
||||
"""Проверка является ли tab-button активным"""
|
||||
|
||||
tab_button = self.toolbar.get_button_by_name(name)
|
||||
assert tab_button, f"Try to find unexisted button {name}"
|
||||
|
||||
tab_button_locator = tab_button.get_locator()
|
||||
|
||||
is_active = True
|
||||
attr = tab_button_locator.locator("../..").get_attribute("class")
|
||||
if attr.find("active") == -1:
|
||||
is_active = False
|
||||
|
||||
return is_active
|
||||
|
||||
def should_be_all_disabled(self) -> None:
|
||||
"""Проверка видимости кнопок пагинации: все кнопки disabled"""
|
||||
|
||||
|
|
@ -355,19 +368,9 @@ class EventsContainerComponent(BaseComponent):
|
|||
def should_be_toolbar(self) -> None:
|
||||
"""Проверка наличия тулбара"""
|
||||
|
||||
loc = self.container_locator.locator("//nav[contains(@class, 'v-toolbar')]").nth(0)
|
||||
loc = self.container_locator.locator(self.toolbar_locator)
|
||||
self.toolbar.check_toolbar_presence_by_locator(loc, "Toolbar is missing")
|
||||
|
||||
def should_be_base_toolbar_buttons(self) -> None:
|
||||
"""Проверяет наличие и видимость базовых кнопок тулбара."""
|
||||
|
||||
self.toolbar.check_button_visibility("filter_button")
|
||||
self.toolbar.check_button_visibility("export_to_pdf_button")
|
||||
self.toolbar.check_button_tooltip("export_to_pdf_button", "Скачать в формате PDF")
|
||||
self.toolbar.check_button_visibility("export_to_csv_button")
|
||||
self.toolbar.check_button_tooltip("export_to_csv_button", "Скачать в формате CSV")
|
||||
|
||||
|
||||
def should_be_pagination_buttons(self) -> None:
|
||||
"""Проверяет наличие и видимость кнопок пагинации."""
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
from playwright.sync_api import Page, Locator
|
||||
from tools.logger import get_logger
|
||||
from locators.toolbar_locators import ToolbarLocators
|
||||
from locators.event_panel_locators import EventPanelLocators
|
||||
from components.events_container_component import EventsContainerComponent
|
||||
|
||||
logger = get_logger("SYSTEM_LOG_EVENTS_CONTAINER")
|
||||
|
|
@ -28,12 +28,17 @@ class SystemLogEventsContainer(EventsContainerComponent):
|
|||
|
||||
super().__init__(page, locator)
|
||||
|
||||
self.add_tab_to_toolbar(ToolbarLocators.TABS, "events")
|
||||
toolbar_locator = self.get_locator(locator).locator(EventPanelLocators.TOOLBAR)
|
||||
|
||||
sidebar_filter = self.get_sidebar_filter()
|
||||
sidebar_filter.add_filtering_parameter("filter_type", "Тип")
|
||||
sidebar_filter.add_filtering_parameter("filter_strictness", "Критичность")
|
||||
sidebar_filter.add_filtering_parameter("filter_host", "Объект")
|
||||
self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.FILTER_TOOLBAR_BUTTON), "filter_button")
|
||||
self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.EVENTS_TOOLBAR_BUTTON), "view_events_button")
|
||||
self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.PDF_TOOLBAR_BUTTON), "export_to_pdf_button")
|
||||
self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.CSV_TOOLBAR_BUTTON), "export_to_csv_button")
|
||||
|
||||
events_filter = self.get_events_filter()
|
||||
events_filter.add_filtering_parameter("filter_type", "Тип")
|
||||
events_filter.add_filtering_parameter("filter_strictness", "Критичность")
|
||||
events_filter.add_filtering_parameter("filter_object", "Объект")
|
||||
|
||||
# Действия:
|
||||
# Проверки:
|
||||
|
|
@ -43,11 +48,11 @@ class SystemLogEventsContainer(EventsContainerComponent):
|
|||
expected_headers = ['ТИП', 'ВРЕМЯ', 'КРИТИЧНОСТЬ', 'ОБЪЕКТ', 'ОПИСАНИЕ']
|
||||
|
||||
self.should_be_toolbar()
|
||||
self.should_be_base_toolbar_buttons()
|
||||
self.should_be_toolbar_buttons()
|
||||
|
||||
events_tab = self.get_toolbar_tab_button("events")
|
||||
events_tab_text = events_tab.get_text(0)
|
||||
assert events_tab_text.find("События") != -1, "Tab button with text События is missing on toolbar"
|
||||
if not self.is_tab_active("view_events_button"):
|
||||
self.click_tab_button("view_events_button")
|
||||
self.wait_for_timeout(1000)
|
||||
|
||||
self.should_be_events_table()
|
||||
events_table = self.get_events_table_content()
|
||||
|
|
@ -62,17 +67,25 @@ class SystemLogEventsContainer(EventsContainerComponent):
|
|||
|
||||
self.should_be_pagination_buttons()
|
||||
|
||||
sidebar_filter = self.click_filter_button()
|
||||
sidebar_filter.check_content()
|
||||
events_filter = self.click_filter_button()
|
||||
events_filter.check_content()
|
||||
|
||||
filter_type_bar = sidebar_filter.get_filtering_parameter("filter_type")
|
||||
filter_type_bar = events_filter.get_filtering_parameter("filter_type")
|
||||
filter_type_title = filter_type_bar.get_selection_bar_title()
|
||||
assert filter_type_title == "Тип", "Filtering parameter bar 'Тип' is missing"
|
||||
|
||||
filter_strictness_bar = sidebar_filter.get_filtering_parameter("filter_strictness")
|
||||
filter_strictness_bar = events_filter.get_filtering_parameter("filter_strictness")
|
||||
filter_strictness_title = filter_strictness_bar.get_selection_bar_title()
|
||||
assert filter_strictness_title == "Критичность", "Filtering parameter bar 'Критичность' is missing"
|
||||
|
||||
filter_host_bar = sidebar_filter.get_filtering_parameter("filter_host")
|
||||
filter_host_title = filter_host_bar.get_selection_bar_title()
|
||||
assert filter_host_title == "Объект", "Filtering parameter bar 'Объект' is missing"
|
||||
filter_object_bar = events_filter.get_filtering_parameter("filter_object")
|
||||
filter_object_title = filter_object_bar.get_selection_bar_title()
|
||||
assert filter_object_title == "Объект", "Filtering parameter bar 'Объект' is missing"
|
||||
|
||||
def should_be_toolbar_buttons(self) -> None:
|
||||
"""Проверяет наличие и видимость кнопок тулбара."""
|
||||
|
||||
self.toolbar.check_button_visibility("filter_button")
|
||||
self.toolbar.check_button_visibility("view_events_button")
|
||||
self.toolbar.check_button_visibility("export_to_pdf_button")
|
||||
self.toolbar.check_button_visibility("export_to_csv_button")
|
||||
|
|
|
|||
|
|
@ -1,59 +1,52 @@
|
|||
"""Модуль компонента боковой панели формы ввода полей фильтрации отображения данных в панели событий. Содержит класс
|
||||
"""Модуль панели формы ввода полей фильтрации отображения данных в панели событий. Содержит класс
|
||||
для работы с формами ввода, их элементами и проверками."""
|
||||
|
||||
from playwright.sync_api import Page, Locator
|
||||
from tools.logger import get_logger
|
||||
from elements.button_element import Button
|
||||
from components.toolbar_component import ToolbarComponent
|
||||
from components.base_component import BaseComponent
|
||||
from components_derived.selection_bar_component import SelectionBarComponent
|
||||
from components_derived.date_input_component import DateInput
|
||||
|
||||
logger = get_logger("SIDEBAR_FILTER")
|
||||
logger = get_logger("EVENTS_FILTER_PANEL")
|
||||
|
||||
|
||||
class SidebarFilterComponent(BaseComponent):
|
||||
"""Компонент боковой панели формы ввода полей фильтрации отображения данных в панели событий. Предоставляет методы
|
||||
class EventsFilterPanel(BaseComponent):
|
||||
"""Панель формы ввода полей фильтрации отображения данных в панели событий. Предоставляет методы
|
||||
для взаимодействия с формой, ее содержимым и проверок."""
|
||||
|
||||
def __init__(self, page: Page, locator: str | Locator):
|
||||
"""Инициализирует компонент боковой панели формы ввода параметров фильтрации.
|
||||
def __init__(self, page: Page):
|
||||
"""Инициализирует компонент модального окна формы ввода параметров фильтрации.
|
||||
|
||||
Args:
|
||||
page: Экземпляр страницы Playwright
|
||||
locator: Локатор контейнера (строка или объект Locator) для которого вызывается панель
|
||||
"""
|
||||
super().__init__(page)
|
||||
|
||||
self.sidebar_locator = self.get_locator(locator)
|
||||
|
||||
self.toolbar = ToolbarComponent(page, "Настройки и параметры")
|
||||
self.events_filter_locator = self.page.locator("div.menuable__content__active div.scrollarea__body")
|
||||
|
||||
# Поля ввода даты начала и даты окончания события
|
||||
self.start_time_filter = DateInput(page,
|
||||
self.sidebar_locator.locator(
|
||||
"//div[contains(@class, 'scrollarea__body')]/div").nth(0))
|
||||
self.finish_time_filter = DateInput(page,
|
||||
self.sidebar_locator.locator(
|
||||
"//div[contains(@class, 'scrollarea__body')]/div").nth(1))
|
||||
loc = self.page.locator("div.menuable__content__active div.scrollarea__body").locator("//div/div").nth(0)
|
||||
self.start_time_filter = DateInput(page, loc)
|
||||
loc = self.page.locator("div.menuable__content__active div.scrollarea__body > div > div:nth-child(3)")
|
||||
self.finish_time_filter = DateInput(page, loc)
|
||||
|
||||
# Поля задания параметров фильтрации (произвольное количество)
|
||||
self.filtering_parameters = {}
|
||||
|
||||
# Кнопки задания/сброса параметров фильтрации
|
||||
self.apply_button = Button(page,
|
||||
self.sidebar_locator.get_by_role("button").filter(has_text='Применить Фильтры'),
|
||||
self.page.get_by_role("button").filter(has_text='Применить Фильтры'),
|
||||
"apply_button")
|
||||
self.reset_button = Button(page,
|
||||
self.sidebar_locator.get_by_role("button").filter(has_text='Сбросить Фильтры'),
|
||||
self.page.get_by_role("button").filter(has_text='Сбросить Фильтры'),
|
||||
"reset_button")
|
||||
|
||||
# Действия:
|
||||
def add_filtering_parameter(self, name: str, title: str) -> None:
|
||||
"""Добавляет поле задания параметров фильтрации по заданному имени."""
|
||||
|
||||
loc = self.sidebar_locator.locator("//div[contains(@class, 'scrollarea__body')]").\
|
||||
get_by_role("combobox").filter(has_text=title)
|
||||
loc = self.events_filter_locator.get_by_role("combobox").filter(has_text=title)
|
||||
self.filtering_parameters[name] = SelectionBarComponent(self.page, loc)
|
||||
|
||||
def get_filtering_parameter(self, name: str) -> SelectionBarComponent | None:
|
||||
|
|
@ -85,7 +78,6 @@ class SidebarFilterComponent(BaseComponent):
|
|||
def check_content(self) -> None:
|
||||
"""Проверяет наличие постоянных полей панели параметров фильтрации."""
|
||||
|
||||
self.should_be_toolbar()
|
||||
self.start_time_filter.check_content("Дата начала")
|
||||
self.finish_time_filter.check_content("Дата окончания")
|
||||
|
||||
|
|
@ -107,13 +99,3 @@ class SidebarFilterComponent(BaseComponent):
|
|||
"""Проверяет наличие кнопки сброса фильтра."""
|
||||
|
||||
self.reset_button.check_visibility("Reset Filter Button is missing")
|
||||
|
||||
def should_be_toolbar(self) -> None:
|
||||
"""Проверяет наличие тулбара.
|
||||
|
||||
Raises:
|
||||
AssertionError: Если тулбар отсутствует.
|
||||
"""
|
||||
|
||||
self.toolbar.check_toolbar_presence_by_locator_and_title(self.sidebar_locator,
|
||||
"Sidebar Filter form toolbar is missing")
|
||||
|
|
@ -58,6 +58,11 @@ class BaseElement:
|
|||
logger.info(f"Get text for {self.type_of} '{self.name}'")
|
||||
return self.locator.nth(index).text_content()
|
||||
|
||||
def get_locator(self) -> Locator:
|
||||
"""Возвращает локатор элемента."""
|
||||
|
||||
return self.locator
|
||||
|
||||
def update_locator(self, new_locator: Locator) -> None:
|
||||
"""Меняет значение локатора для элемента"""
|
||||
|
||||
|
|
|
|||
|
|
@ -8,31 +8,42 @@ class EventPanelLocators:
|
|||
"""Локаторы элементов панели событий.
|
||||
|
||||
Содержит XPath локаторы для:
|
||||
TABS_BLOCK (str): блока кнопок в панели событий.
|
||||
TAB_EXPAND_BUTTONS (str): блока кнопок расширения панели событий.
|
||||
AREA_EVENTS (str): рабочей области страницы.
|
||||
BUTTON_EXPAND_LESS (str): кнопки сжатия рабочей области отображения содержимого панели событий.
|
||||
BUTTON_EXPAND_MORE (str): кнопки расширения рабочей области отображения содержимого панели событий.
|
||||
TAB_STATES (str): кнопки Состояния.
|
||||
TAB_ACTIONS (str): кнопки Действия.
|
||||
TAB_EVENTS (str): кнопки События.
|
||||
TAB_MAINTENANCE (str): кнопки Обслуживания.
|
||||
TAB_SYSTEM_LOG (str): кнопки Системный журнал.
|
||||
CONTAINER_SYSTEM_LOG_EVENTS (str): контейнера с событиями Системного журнала.
|
||||
TAB_AUDIT (str): кнопки Аудит.
|
||||
BUTTONS_EVENT (str): блока кнопок-счетчиков событий.
|
||||
BUTTONS_SERVICE (str): блока кнопок, содержащего кнопки Поиска и Текущего пользователя.
|
||||
AREA_EVENTS (str): рабочей области страницы.
|
||||
BUTTON_USER (str): кнопки текущего пользователя.
|
||||
CONTAINER_SYSTEM_LOG_EVENTS (str): контейнера с событиями Системного журнала.
|
||||
"""
|
||||
|
||||
TABS_BLOCK = "//nav/div[@class='v-toolbar__content']/div[@class='v-toolbar__items'][1]"
|
||||
TAB_EXPAND_BUTTONS = f"{TABS_BLOCK}/div[1]/div[1]/div"
|
||||
TAB_STATES = f"{TABS_BLOCK}//div[@class='v-tabs']//div[@class='v-tabs__container']/div[2]"
|
||||
TAB_ACTIONS = f"{TABS_BLOCK}//div[@class='v-tabs']//div[@class='v-tabs__container']/div[3]"
|
||||
TAB_EVENTS = f"{TABS_BLOCK}//div[@class='v-tabs']//div[@class='v-tabs__container']/div[4]"
|
||||
TAB_MAINTENANCE = f"{TABS_BLOCK}//div[@class='v-tabs']//div[@class='v-tabs__container']/div[5]"
|
||||
TAB_SYSTEM_LOG = f"{TABS_BLOCK}//div[@class='v-tabs']//div[@class='v-tabs__container']/div[6]"
|
||||
AREA_EVENTS = "#app > div.application--wrap > div > div:nth-child(3)"
|
||||
|
||||
CONTAINER_SYSTEM_LOG_EVENTS = "#app > div.application--wrap > div > div:nth-child(3) > div:nth-child(5)"
|
||||
BUTTON_EXPAND_LESS = "//button[contains(@data-testid, 'BASELINE__btn__toolbar_close')]"
|
||||
BUTTON_EXPAND_MORE = "//button[contains(@data-testid, 'BASELINE__btn__toolbar_open')]"
|
||||
|
||||
TAB_STATES = "//div[@data-testid='BASELINE__states_tab__toolbar']"
|
||||
TAB_ACTIONS = "//div[@data-testid='BASELINE__actions_tab__toolbar']"
|
||||
TAB_EVENTS = "//div[@data-testid='BASELINE__events_tab__toolbar']"
|
||||
TAB_MAINTENANCE = "//div[@data-testid='BASELINE__service_tab__toolbar']"
|
||||
TAB_SYSTEM_LOG = "//div[@data-testid='BASELINE__system journal_tab__toolbar']"
|
||||
TAB_AUDIT = "//div[@data-testid='BASELINE__audit_tab__toolbar']"
|
||||
|
||||
BUTTONS_EVENT = "//nav/div[@class='v-toolbar__content']/div[@class='v-toolbar__items'][2]//span[contains(@class, 'v-tooltip')]"
|
||||
BUTTONS_SERVICE = "//nav/div[@class='v-toolbar__content']/div[@class='v-toolbar__items'][2]"
|
||||
|
||||
AREA_EVENTS = "#app > div.application--wrap > div > div:nth-child(3)"
|
||||
BUTTON_USER = "//button[@data-testid='BASELINE__btn__user']"
|
||||
|
||||
TOOLBAR = "//nav[contains(@class, 'v-toolbar')]"
|
||||
TABLE = "//div[@class='scrolltable']/div/table"
|
||||
|
||||
FILTER_TOOLBAR_BUTTON = "//div[contains(@class, 'journal-tab-button')]//span[text()='Фильтр']"
|
||||
EVENTS_TOOLBAR_BUTTON = "//div[contains(@class, 'journal-tab-button')]//span[text()='События']"
|
||||
PDF_TOOLBAR_BUTTON = "//div[contains(@class, 'journal-tab-button')]//span[text()='pdf']"
|
||||
CSV_TOOLBAR_BUTTON = "//div[contains(@class, 'journal-tab-button')]//span[text()='csv']"
|
||||
|
||||
CONTAINER_SYSTEM_LOG_EVENTS = "#app > div.application--wrap > div > div:nth-child(3) > div:nth-child(5)"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
панели событий в приложении.
|
||||
"""
|
||||
|
||||
# import pytest
|
||||
import pytest
|
||||
from playwright.sync_api import Page
|
||||
from pages.main_page import MainPage
|
||||
from pages.login_page import LoginPage
|
||||
|
|
@ -16,7 +16,8 @@ class TestEventPanel:
|
|||
|
||||
Тесты покрывают следующие сценарии:
|
||||
1. test_event_panel_content: Проверяет содержимое панели событий
|
||||
2. test_event_panel_expand_buttons: Проверяет состояние и количество кнопок расширения рабочей области панели событий
|
||||
2. test_event_panel_expand_buttons: Проверяет состояние и количество кнопок расширения рабочей области панели
|
||||
событий
|
||||
|
||||
Атрибуты:
|
||||
browser: Фикстура для работы с браузером.
|
||||
|
|
@ -48,6 +49,7 @@ class TestEventPanel:
|
|||
if button_counter != counter:
|
||||
assert False, f"Expected tooltip value {counter} is not equal button value {button_counter} for event button {event}"
|
||||
|
||||
@pytest.mark.develop
|
||||
def test_event_panel_expand_buttons(self, browser: Page) -> None:
|
||||
"""Проверяет состояние и количество кнопок расширения рабочей области панели событий.
|
||||
|
||||
|
|
@ -60,16 +62,16 @@ class TestEventPanel:
|
|||
|
||||
mp = MainPage(browser)
|
||||
|
||||
# Проверяем начальное состояние - панель событий внизу, видна одна кнопка expand less
|
||||
# Проверяем начальное состояние - панель событий внизу, видна одна кнопка expand more
|
||||
current_position = mp.get_events_panel_position()
|
||||
assert current_position == "bottom", \
|
||||
"Events panel should be located on main page bottom"
|
||||
assert mp.check_expand_less_button(), \
|
||||
"Expand less button should be present"
|
||||
assert mp.check_expand_more_button(), \
|
||||
"Expand more button should be absent"
|
||||
"Expand more button should be present"
|
||||
assert mp.check_expand_less_button(), \
|
||||
"Expand less button should be absent"
|
||||
|
||||
mp.click_events_panel_expand_less_button()
|
||||
mp.click_events_panel_expand_more_button()
|
||||
mp.wait_for_timeout(500)
|
||||
|
||||
# Проверяем, что панель событий переместилась в середину экрана,
|
||||
|
|
@ -82,21 +84,21 @@ class TestEventPanel:
|
|||
assert mp.check_expand_more_button(), \
|
||||
"Expand more button should be present"
|
||||
|
||||
mp.click_events_panel_expand_less_button()
|
||||
mp.click_events_panel_expand_more_button()
|
||||
mp.wait_for_timeout(500)
|
||||
|
||||
# Проверяем, что панель событий находится вверху экрана,
|
||||
# видна кнопки expand more и отсутствует expand less
|
||||
# видна кнопки expand less и отсутствует expand more
|
||||
current_position = mp.get_events_panel_position()
|
||||
assert current_position == "top", \
|
||||
"Events panel should be located on main page top"
|
||||
assert mp.check_expand_less_button(), \
|
||||
"Expand less button should be absent"
|
||||
assert mp.check_expand_more_button(), \
|
||||
"Expand more button should be present"
|
||||
"Expand more button should be absent"
|
||||
assert mp.check_expand_less_button(), \
|
||||
"Expand less button should be present"
|
||||
|
||||
# перемещение в отратном напрвлении сверху вниз
|
||||
mp.click_events_panel_expand_more_button()
|
||||
# перемещение в отратном направлении сверху вниз
|
||||
mp.click_events_panel_expand_less_button()
|
||||
mp.wait_for_timeout(500)
|
||||
|
||||
current_position = mp.get_events_panel_position()
|
||||
|
|
@ -107,13 +109,13 @@ class TestEventPanel:
|
|||
assert mp.check_expand_more_button(), \
|
||||
"Expand more button should be present"
|
||||
|
||||
mp.click_events_panel_expand_more_button()
|
||||
mp.click_events_panel_expand_less_button()
|
||||
mp.wait_for_timeout(500)
|
||||
|
||||
current_position = mp.get_events_panel_position()
|
||||
assert current_position == "bottom", \
|
||||
"Events panel should be located on main page bottom"
|
||||
assert mp.check_expand_less_button(), \
|
||||
"Expand less button should be present"
|
||||
assert mp.check_expand_more_button(), \
|
||||
"Expand more button should be absent"
|
||||
"Expand more button should be present"
|
||||
assert mp.check_expand_more_button(), \
|
||||
"Expand less button should be absent"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
контейнера для отображения событий системного журнала.
|
||||
"""
|
||||
|
||||
import pytest
|
||||
# import pytest
|
||||
from playwright.sync_api import Page
|
||||
from pages.main_page import MainPage
|
||||
from pages.login_page import LoginPage
|
||||
|
|
@ -102,9 +102,9 @@ class TestSystemLogEventsContainer:
|
|||
system_log_events_container.check_events_table_first_row_visibility()
|
||||
|
||||
# Раскрываем панель полностью и проверяем скроллинг
|
||||
assert mp.check_expand_less_button(), \
|
||||
"Expand less button should be present"
|
||||
mp.click_events_panel_expand_less_button()
|
||||
assert mp.check_expand_more_button(), \
|
||||
"Expand more button should be present"
|
||||
mp.click_events_panel_expand_more_button()
|
||||
mp.wait_for_timeout(500)
|
||||
|
||||
events_panel_position = mp.get_events_panel_position()
|
||||
|
|
@ -144,7 +144,7 @@ class TestSystemLogEventsContainer:
|
|||
|
||||
system_log_events_container = mp.click_events_panel_system_log_tab()
|
||||
|
||||
index = 1
|
||||
index = 0
|
||||
state = system_log_events_container.get_arrow_button_state(index)
|
||||
assert state == "down", "Arrow button should be down"
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue