Актуализация тестов панели событий в соответствии с последними изменениями UI
parent
e926b04a14
commit
18f7873145
|
|
@ -94,7 +94,7 @@ class EventsContainerComponent(BaseComponent):
|
||||||
self.last_page.click()
|
self.last_page.click()
|
||||||
|
|
||||||
def click_filter_button(self) -> EventsFilterPanel:
|
def click_filter_button(self) -> EventsFilterPanel:
|
||||||
"""Нажатие кнопки перехода на первую страницу"""
|
"""Нажатие кнопки фильтр"""
|
||||||
|
|
||||||
self.toolbar.click_button("filter_button")
|
self.toolbar.click_button("filter_button")
|
||||||
expect(self.page.locator("div.menuable__content__active")).to_be_visible(), "Events filter is missing"
|
expect(self.page.locator("div.menuable__content__active")).to_be_visible(), "Events filter is missing"
|
||||||
|
|
@ -207,6 +207,16 @@ class EventsContainerComponent(BaseComponent):
|
||||||
|
|
||||||
self.events_table.check_table_headers(actual_headers, expected_headers)
|
self.events_table.check_table_headers(actual_headers, expected_headers)
|
||||||
|
|
||||||
|
def check_events_table_status_button(self, row_index: int, tooltip_text: str) -> None:
|
||||||
|
""" Проверка наличия в строке кнопки статуса (состояния) и ее тултипа"""
|
||||||
|
|
||||||
|
loc = self.container_locator.locator(self.table_locator)
|
||||||
|
row_locator = self.events_table.get_row_locator(loc, row_index-1)
|
||||||
|
button = TooltipButton(self.page, row_locator.get_by_role("button"), "status_button")
|
||||||
|
button.check_visibility(f"Tooltip button is missing in {row_index} table row")
|
||||||
|
button.check_tooltip_with_text(tooltip_text)
|
||||||
|
|
||||||
|
|
||||||
def check_events_table_column_descending_order(self,
|
def check_events_table_column_descending_order(self,
|
||||||
index: int,
|
index: int,
|
||||||
convert2timestamp=False) -> bool:
|
convert2timestamp=False) -> bool:
|
||||||
|
|
|
||||||
|
|
@ -114,8 +114,16 @@ class ActionsEventsContainer(EventsContainerComponent):
|
||||||
|
|
||||||
self.check_events_table_headers(events_table[0], expected_headers)
|
self.check_events_table_headers(events_table[0], expected_headers)
|
||||||
|
|
||||||
|
for i in range(len(expected_headers)):
|
||||||
|
actual_state = self.get_arrow_button_state(i)
|
||||||
|
assert actual_state == "down", f"Arrow state for column {i} should be 'down'"
|
||||||
|
|
||||||
if len(events_table) == 1:
|
if len(events_table) == 1:
|
||||||
logger.info("Table body is missing")
|
logger.info("Table body is missing")
|
||||||
|
else:
|
||||||
|
rows_count = len(events_table)
|
||||||
|
for j in range(1, rows_count-1):
|
||||||
|
self.check_events_table_status_button(j, "Статус")
|
||||||
|
|
||||||
self.should_be_pagination_buttons()
|
self.should_be_pagination_buttons()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,9 @@ class AuditEventsContainer(EventsContainerComponent):
|
||||||
assert False, "The contents of the events table are missing"
|
assert False, "The contents of the events table are missing"
|
||||||
|
|
||||||
self.check_events_table_headers(events_table[0], expected_headers)
|
self.check_events_table_headers(events_table[0], expected_headers)
|
||||||
|
for i in range(len(expected_headers)):
|
||||||
|
actual_state = self.get_arrow_button_state(i)
|
||||||
|
assert actual_state == "down", f"Arrow state for column {i} should be 'down'"
|
||||||
|
|
||||||
if len(events_table) == 1:
|
if len(events_table) == 1:
|
||||||
logger.info("Table body is missing")
|
logger.info("Table body is missing")
|
||||||
|
|
@ -97,6 +100,9 @@ class AuditEventsContainer(EventsContainerComponent):
|
||||||
assert False, "The contents of the events table are missing"
|
assert False, "The contents of the events table are missing"
|
||||||
|
|
||||||
self.check_events_table_headers(events_table[0], expected_headers)
|
self.check_events_table_headers(events_table[0], expected_headers)
|
||||||
|
for i in range(len(expected_headers)):
|
||||||
|
actual_state = self.get_arrow_button_state(i)
|
||||||
|
assert actual_state == "down", f"Arrow state for column {i} should be 'down'"
|
||||||
|
|
||||||
if len(events_table) == 1:
|
if len(events_table) == 1:
|
||||||
logger.info("Table body is missing")
|
logger.info("Table body is missing")
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,9 @@ class EventsTabContainer(EventsContainerComponent):
|
||||||
assert False, "The contents of the events table are missing"
|
assert False, "The contents of the events table are missing"
|
||||||
|
|
||||||
self.check_events_table_headers(events_table[0], expected_headers)
|
self.check_events_table_headers(events_table[0], expected_headers)
|
||||||
|
for i in range(len(expected_headers)):
|
||||||
|
actual_state = self.get_arrow_button_state(i)
|
||||||
|
assert actual_state == "down", f"Arrow state for column {i} should be 'down'"
|
||||||
|
|
||||||
if len(events_table) == 1:
|
if len(events_table) == 1:
|
||||||
logger.info("Table body is missing")
|
logger.info("Table body is missing")
|
||||||
|
|
|
||||||
|
|
@ -66,9 +66,19 @@ class MaintenanceEventsContainer(EventsContainerComponent):
|
||||||
assert False, "The contents of the events table are missing"
|
assert False, "The contents of the events table are missing"
|
||||||
|
|
||||||
self.check_events_table_headers(events_table[0], expected_headers)
|
self.check_events_table_headers(events_table[0], expected_headers)
|
||||||
|
for i in range(len(expected_headers)):
|
||||||
|
actual_state = self.get_arrow_button_state(i)
|
||||||
|
assert actual_state == "down", f"Arrow state for column {i} should be 'down'"
|
||||||
|
|
||||||
if len(events_table) == 1:
|
rows_count = len(events_table)
|
||||||
|
|
||||||
|
if rows_count == 1:
|
||||||
logger.info("Table body is missing")
|
logger.info("Table body is missing")
|
||||||
|
else:
|
||||||
|
j = 1
|
||||||
|
while j < rows_count:
|
||||||
|
self.check_events_table_status_button(j, "Состояние")
|
||||||
|
j += 1
|
||||||
|
|
||||||
self.should_be_pagination_buttons()
|
self.should_be_pagination_buttons()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -61,9 +61,21 @@ class SystemLogEventsContainer(EventsContainerComponent):
|
||||||
assert False, "The contents of the events table are missing"
|
assert False, "The contents of the events table are missing"
|
||||||
|
|
||||||
self.check_events_table_headers(events_table[0], expected_headers)
|
self.check_events_table_headers(events_table[0], expected_headers)
|
||||||
|
for i in range(len(expected_headers)):
|
||||||
|
actual_state = self.get_arrow_button_state(i)
|
||||||
|
assert actual_state == "down", f"Arrow state for column {i} should be 'down'"
|
||||||
|
|
||||||
if len(events_table) == 1:
|
if len(events_table) == 1:
|
||||||
logger.info("Table body is missing")
|
logger.info("Table body is missing")
|
||||||
|
else:
|
||||||
|
j = 1
|
||||||
|
# так как записей много, проверяем первые 40
|
||||||
|
rows_count = 40
|
||||||
|
if len(events_table) < 40:
|
||||||
|
rows_count = len(events_table)
|
||||||
|
while j < rows_count:
|
||||||
|
self.check_events_table_status_button(j, "Критичность")
|
||||||
|
j += 1
|
||||||
|
|
||||||
self.should_be_pagination_buttons()
|
self.should_be_pagination_buttons()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,3 +74,9 @@ class ViewTaskModalWindow(ModalWindowComponent):
|
||||||
""" Проверка соответствия заголовка таблицы ожидаемому"""
|
""" Проверка соответствия заголовка таблицы ожидаемому"""
|
||||||
|
|
||||||
self.task_stages_table.check_table_headers(actual_headers, expected_headers)
|
self.task_stages_table.check_table_headers(actual_headers, expected_headers)
|
||||||
|
|
||||||
|
def check_stages_table_row_highlighting(self, row_index: int) -> None:
|
||||||
|
"""Проверяет выделение указанной строки таблицы.
|
||||||
|
"""
|
||||||
|
|
||||||
|
self.task_stages_table.check_row_highlighting(self.task_stages_table_locator, row_index)
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ class TestActionsEventsContainer:
|
||||||
if rows_count > 3:
|
if rows_count > 3:
|
||||||
actions_events_container.check_events_table_row_highlighting(int(rows_count / 2))
|
actions_events_container.check_events_table_row_highlighting(int(rows_count / 2))
|
||||||
|
|
||||||
@pytest.mark.develop
|
# @pytest.mark.develop
|
||||||
def test_events_table_scrolling(self, browser: Page):
|
def test_events_table_scrolling(self, browser: Page):
|
||||||
"""Проверяет возможность скроллинга таблицы событий на примере таблицы Архив.
|
"""Проверяет возможность скроллинга таблицы событий на примере таблицы Архив.
|
||||||
|
|
||||||
|
|
@ -176,6 +176,15 @@ class TestActionsEventsContainer:
|
||||||
task_view_window.check_stages_table_headers(stages_table_content[0], expected_task_headers)
|
task_view_window.check_stages_table_headers(stages_table_content[0], expected_task_headers)
|
||||||
stages_table_content.pop(0)
|
stages_table_content.pop(0)
|
||||||
|
|
||||||
|
rows_count = len(stages_table_content)
|
||||||
|
if rows_count != 0:
|
||||||
|
# Проверка выделения строк
|
||||||
|
task_view_window.check_stages_table_row_highlighting(0)
|
||||||
|
if rows_count > 1:
|
||||||
|
task_view_window.check_stages_table_row_highlighting(rows_count - 1)
|
||||||
|
if rows_count > 3:
|
||||||
|
task_view_window.check_stages_table_row_highlighting(int(rows_count / 2))
|
||||||
|
|
||||||
payload = {"filter": {"page": 1},
|
payload = {"filter": {"page": 1},
|
||||||
"count": 40}
|
"count": 40}
|
||||||
|
|
||||||
|
|
@ -246,9 +255,9 @@ class TestActionsEventsContainer:
|
||||||
# convert2timestamp=True)
|
# convert2timestamp=True)
|
||||||
# assert is_descending_order, "Column data should be in descending order"
|
# assert is_descending_order, "Column data should be in descending order"
|
||||||
|
|
||||||
# @pytest.mark.develop
|
@pytest.mark.develop
|
||||||
def test_real_time_events_table_pagination(self, browser: Page):
|
def test_real_time_events_table_pagination(self, browser: Page):
|
||||||
"""Проверяет возможность пагинации таблицы событий.
|
"""Проверяет возможность пагинации таблицы событий на примере вкладки 'Реальное время'.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
browser: Экземпляр страницы Playwright.
|
browser: Экземпляр страницы Playwright.
|
||||||
|
|
@ -268,6 +277,7 @@ class TestActionsEventsContainer:
|
||||||
|
|
||||||
# Проверка начального состояния
|
# Проверка начального состояния
|
||||||
tested_pages = 1
|
tested_pages = 1
|
||||||
|
pages = 1
|
||||||
|
|
||||||
payload = {"filter": {"page": 1},
|
payload = {"filter": {"page": 1},
|
||||||
"count": 40}
|
"count": 40}
|
||||||
|
|
@ -359,7 +369,7 @@ class TestActionsEventsContainer:
|
||||||
counter += 1
|
counter += 1
|
||||||
browser.wait_for_timeout(2000)
|
browser.wait_for_timeout(2000)
|
||||||
|
|
||||||
if counter == tested_pages:
|
if counter == tested_pages and counter == pages:
|
||||||
actions_events_container.should_be_final_state()
|
actions_events_container.should_be_final_state()
|
||||||
else:
|
else:
|
||||||
actions_events_container.should_be_all_enabled()
|
actions_events_container.should_be_all_enabled()
|
||||||
|
|
|
||||||
|
|
@ -183,6 +183,7 @@ class TestAuditEventsContainer:
|
||||||
|
|
||||||
# Проверка начального состояния
|
# Проверка начального состояния
|
||||||
tested_pages = 1
|
tested_pages = 1
|
||||||
|
pages = 1
|
||||||
|
|
||||||
# to do: некорректный запрос в бэк, должно быть "filter": {"page": 0}
|
# to do: некорректный запрос в бэк, должно быть "filter": {"page": 0}
|
||||||
payload = {"table": "default",
|
payload = {"table": "default",
|
||||||
|
|
@ -282,7 +283,7 @@ class TestAuditEventsContainer:
|
||||||
counter += 1
|
counter += 1
|
||||||
browser.wait_for_timeout(2000)
|
browser.wait_for_timeout(2000)
|
||||||
|
|
||||||
if counter == tested_pages:
|
if counter == tested_pages and counter == pages:
|
||||||
audit_events_container.should_be_final_state()
|
audit_events_container.should_be_final_state()
|
||||||
else:
|
else:
|
||||||
audit_events_container.should_be_all_enabled()
|
audit_events_container.should_be_all_enabled()
|
||||||
|
|
|
||||||
|
|
@ -246,6 +246,7 @@ class TestAuditEventsContainerSecurity:
|
||||||
|
|
||||||
# Проверка начального состояния
|
# Проверка начального состояния
|
||||||
tested_pages = 1
|
tested_pages = 1
|
||||||
|
pages = 1
|
||||||
|
|
||||||
# to do: некорректный запрос в бэк, должно быть "filter": {"page": 0}
|
# to do: некорректный запрос в бэк, должно быть "filter": {"page": 0}
|
||||||
payload = {"table": "default",
|
payload = {"table": "default",
|
||||||
|
|
@ -346,7 +347,7 @@ class TestAuditEventsContainerSecurity:
|
||||||
counter += 1
|
counter += 1
|
||||||
browser.wait_for_timeout(2000)
|
browser.wait_for_timeout(2000)
|
||||||
|
|
||||||
if counter == tested_pages:
|
if counter == tested_pages and counter == pages:
|
||||||
security_events_container.should_be_final_state()
|
security_events_container.should_be_final_state()
|
||||||
else:
|
else:
|
||||||
security_events_container.should_be_all_enabled()
|
security_events_container.should_be_all_enabled()
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ class TestEventPanel:
|
||||||
|
|
||||||
# Проверяем соответствие тултипов информации на кнопках
|
# Проверяем соответствие тултипов информации на кнопках
|
||||||
tooltip_event_counters = mp.get_event_counters_by_tooltips()
|
tooltip_event_counters = mp.get_event_counters_by_tooltips()
|
||||||
button_event_counters = mp.get_event_counters_by_tooltips()
|
button_event_counters = mp.get_event_counters_by_buttons()
|
||||||
|
|
||||||
for event, counter in tooltip_event_counters.items():
|
for event, counter in tooltip_event_counters.items():
|
||||||
button_counter = button_event_counters.get(event)
|
button_counter = button_event_counters.get(event)
|
||||||
|
|
@ -49,7 +49,7 @@ class TestEventPanel:
|
||||||
if button_counter != counter:
|
if button_counter != counter:
|
||||||
assert False, f"Expected tooltip value {counter} is not equal button value {button_counter} for event button {event}"
|
assert False, f"Expected tooltip value {counter} is not equal button value {button_counter} for event button {event}"
|
||||||
|
|
||||||
@pytest.mark.develop
|
# @pytest.mark.develop
|
||||||
def test_event_panel_expand_buttons(self, browser: Page) -> None:
|
def test_event_panel_expand_buttons(self, browser: Page) -> None:
|
||||||
"""Проверяет состояние и количество кнопок расширения рабочей области панели событий.
|
"""Проверяет состояние и количество кнопок расширения рабочей области панели событий.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ class TestEventsTabContainer:
|
||||||
events_tab_container = mp.click_events_panel_events_tab()
|
events_tab_container = mp.click_events_panel_events_tab()
|
||||||
events_tab_container.check_content()
|
events_tab_container.check_content()
|
||||||
|
|
||||||
#@pytest.mark.skip(reason="Отсутствуют данные для вывода в таблицу событий")
|
@pytest.mark.skip(reason="Отсутствуют данные для вывода в таблицу событий")
|
||||||
def test_events_table_row_highlighting(self, browser: Page):
|
def test_events_table_row_highlighting(self, browser: Page):
|
||||||
"""Проверяет выделение строк в таблице событий.
|
"""Проверяет выделение строк в таблице событий.
|
||||||
|
|
||||||
|
|
@ -187,6 +187,7 @@ class TestEventsTabContainer:
|
||||||
|
|
||||||
# Проверка начального состояния
|
# Проверка начального состояния
|
||||||
tested_pages = 1
|
tested_pages = 1
|
||||||
|
pages = 1
|
||||||
|
|
||||||
# to do: некорректный запрос в бэк, должно быть "filter": {"page": 0}
|
# to do: некорректный запрос в бэк, должно быть "filter": {"page": 0}
|
||||||
payload = {"table": "syslogs",
|
payload = {"table": "syslogs",
|
||||||
|
|
@ -280,7 +281,7 @@ class TestEventsTabContainer:
|
||||||
counter += 1
|
counter += 1
|
||||||
browser.wait_for_timeout(2000)
|
browser.wait_for_timeout(2000)
|
||||||
|
|
||||||
if counter == tested_pages:
|
if counter == tested_pages and counter == pages:
|
||||||
events_tab_container.should_be_final_state()
|
events_tab_container.should_be_final_state()
|
||||||
else:
|
else:
|
||||||
events_tab_container.should_be_all_enabled()
|
events_tab_container.should_be_all_enabled()
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ class TestMaintenanceEventsContainer:
|
||||||
# Проверка видимости первой строки после прокрутки
|
# Проверка видимости первой строки после прокрутки
|
||||||
maintenance_events_container.check_events_table_first_row_visibility()
|
maintenance_events_container.check_events_table_first_row_visibility()
|
||||||
|
|
||||||
@pytest.mark.skip(reason="Отсутствуют данные для вывода в таблицу событий")
|
# @pytest.mark.skip(reason="Отсутствуют данные для вывода в таблицу событий")
|
||||||
def test_events_table_column_sorting(self, browser: Page):
|
def test_events_table_column_sorting(self, browser: Page):
|
||||||
"""Проверяет сортировку колонки 'Время' в таблице событий.
|
"""Проверяет сортировку колонки 'Время' в таблице событий.
|
||||||
|
|
||||||
|
|
@ -168,7 +168,7 @@ class TestMaintenanceEventsContainer:
|
||||||
convert2timestamp=True)
|
convert2timestamp=True)
|
||||||
assert is_descending_order, "Column data should be in descending order"
|
assert is_descending_order, "Column data should be in descending order"
|
||||||
|
|
||||||
@pytest.mark.skip(reason="Отсутствуют данные для вывода в таблицу событий")
|
# @pytest.mark.skip(reason="Отсутствуют данные для вывода в таблицу событий")
|
||||||
def test_events_table_pagination(self, browser: Page):
|
def test_events_table_pagination(self, browser: Page):
|
||||||
"""Проверяет возможность пагинации таблицы событий.
|
"""Проверяет возможность пагинации таблицы событий.
|
||||||
|
|
||||||
|
|
@ -188,6 +188,7 @@ class TestMaintenanceEventsContainer:
|
||||||
|
|
||||||
# Проверка начального состояния
|
# Проверка начального состояния
|
||||||
tested_pages = 1
|
tested_pages = 1
|
||||||
|
pages = 1
|
||||||
|
|
||||||
# to do: некорректный запрос в бэк, должно быть "filter": {"page": 0}
|
# to do: некорректный запрос в бэк, должно быть "filter": {"page": 0}
|
||||||
payload = {"id": [ "/physical"],
|
payload = {"id": [ "/physical"],
|
||||||
|
|
@ -200,7 +201,11 @@ class TestMaintenanceEventsContainer:
|
||||||
response_body = mp.get_response_body(response)
|
response_body = mp.get_response_body(response)
|
||||||
|
|
||||||
if response_body:
|
if response_body:
|
||||||
pages = response_body["data"]["pages"]
|
pages = int(len(response_body)/40)
|
||||||
|
if (len(response_body) % 40) > 0:
|
||||||
|
pages = pages + 1
|
||||||
|
|
||||||
|
# print(f"pages = {pages}")
|
||||||
|
|
||||||
if pages > 5:
|
if pages > 5:
|
||||||
tested_pages = 5
|
tested_pages = 5
|
||||||
|
|
@ -282,7 +287,7 @@ class TestMaintenanceEventsContainer:
|
||||||
counter += 1
|
counter += 1
|
||||||
browser.wait_for_timeout(2000)
|
browser.wait_for_timeout(2000)
|
||||||
|
|
||||||
if counter == tested_pages:
|
if counter == tested_pages and counter == pages:
|
||||||
maintenance_events_container.should_be_final_state()
|
maintenance_events_container.should_be_final_state()
|
||||||
else:
|
else:
|
||||||
maintenance_events_container.should_be_all_enabled()
|
maintenance_events_container.should_be_all_enabled()
|
||||||
|
|
|
||||||
|
|
@ -188,6 +188,7 @@ class TestSystemLogEventsContainer:
|
||||||
|
|
||||||
# Проверка начального состояния
|
# Проверка начального состояния
|
||||||
tested_pages = 1
|
tested_pages = 1
|
||||||
|
pages = 1
|
||||||
|
|
||||||
# to do: некорректный запрос в бэк, должно быть "filter": {"page": 0}
|
# to do: некорректный запрос в бэк, должно быть "filter": {"page": 0}
|
||||||
payload = {"table": "logs",
|
payload = {"table": "logs",
|
||||||
|
|
@ -281,7 +282,7 @@ class TestSystemLogEventsContainer:
|
||||||
counter += 1
|
counter += 1
|
||||||
browser.wait_for_timeout(2000)
|
browser.wait_for_timeout(2000)
|
||||||
|
|
||||||
if counter == tested_pages:
|
if counter == tested_pages and counter == pages:
|
||||||
system_log_events_container.should_be_final_state()
|
system_log_events_container.should_be_final_state()
|
||||||
else:
|
else:
|
||||||
system_log_events_container.should_be_all_enabled()
|
system_log_events_container.should_be_all_enabled()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue