e-nms_qa_automation/tests/e2e/test_system_log_events_cont...

239 lines
11 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"""Модуль тестов контейнера для отображения событий системного журнала.
Содержит тесты для проверки функциональности
контейнера для отображения событий системного журнала.
"""
import pytest
from playwright.sync_api import Page
from pages.main_page import MainPage
from pages.login_page import LoginPage
# @pytest.mark.smoke
class TestSystemLogEventsContainer:
"""Класс тестов для проверки контейнера для отображения событий системного журнала..
Тесты покрывают следующие сценарии:
1. test_system_log_events_content: Проверяет содержимое контейнера для отображения событий системного журнала.
Атрибуты:
browser: Фикстура для работы с браузером.
"""
def test_system_log_events_content(self, browser: Page) -> None:
"""Проверяет содержимое контейнера для отображения событий системного журнала.
Args:
browser: Экземпляр страницы Playwright.
"""
lp = LoginPage(browser)
lp.do_login()
mp = MainPage(browser)
mp.should_be_event_panel()
system_log_events_container = mp.click_events_panel_system_log_tab()
system_log_events_container.check_content()
def test_events_table_row_highlighting(self, browser: Page):
"""Проверяет выделение строк в таблице событий.
Args:
browser: Экземпляр страницы Playwright.
"""
lp = LoginPage(browser)
lp.do_login()
mp = MainPage(browser)
mp.should_be_event_panel()
system_log_events_container = mp.click_events_panel_system_log_tab()
# Получение количества строк в таблице
rows_count = system_log_events_container.get_events_table_rows_count()
# Проверка выделения строк
system_log_events_container.check_events_table_row_highlighting(0)
system_log_events_container.check_events_table_row_highlighting(rows_count - 1)
system_log_events_container.check_events_table_row_highlighting(int(rows_count / 2))
def test_events_table_scrolling(self, browser: Page):
"""Проверяет возможность скроллинга таблицы событий.
Args:
browser: Экземпляр страницы Playwright.
"""
lp = LoginPage(browser)
lp.do_login()
mp = MainPage(browser)
mp.should_be_event_panel()
system_log_events_container = mp.click_events_panel_system_log_tab()
events_panel_position = mp.get_events_panel_position()
# Проверка, что панель с таблицей открыта
assert events_panel_position != "bottom", "Panel with system log events should be opened"
is_scrollable = system_log_events_container.check_events_table_verticall_scrolling()
# Убеждаемся, что панель открыта наполовину и проверяем скроллинг
assert events_panel_position == "center",\
"Panel with system log events should be located on the main page center"
assert is_scrollable, "System log events table should be scrollable"
# Скроллинг вниз
system_log_events_container.scroll_events_table_down()
browser.wait_for_timeout(1000)
# Проверка видимости последней строки после прокрутки
system_log_events_container.check_events_table_last_row_visibility()
# Скроллинг вверх
system_log_events_container.scroll_events_table_up()
browser.wait_for_timeout(1000)
# Проверка видимости первой строки после прокрутки
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()
mp.wait_for_timeout(500)
events_panel_position = mp.get_events_panel_position()
assert events_panel_position == "top",\
"Panel with system log events should be located on the main page top"
is_scrollable = system_log_events_container.check_events_table_verticall_scrolling()
assert is_scrollable, "System log events table should be scrollable in the full window"
# Скроллинг вниз
system_log_events_container.scroll_events_table_down()
browser.wait_for_timeout(1000)
# Проверка видимости последней строки после прокрутки
system_log_events_container.check_events_table_last_row_visibility()
# Скроллинг вверх
system_log_events_container.scroll_events_table_up()
browser.wait_for_timeout(1000)
# Проверка видимости первой строки после прокрутки
system_log_events_container.check_events_table_first_row_visibility()
# @pytest.mark.develop
def test_events_table_column_sorting(self, browser: Page):
"""Проверяет сортировку колонки 'Время' в таблице событий.
Args:
browser: Экземпляр страницы Playwright.
"""
lp = LoginPage(browser)
lp.do_login()
mp = MainPage(browser)
mp.should_be_event_panel()
system_log_events_container = mp.click_events_panel_system_log_tab()
index = 1
state = system_log_events_container.get_arrow_button_state(index)
assert state == "down", "Arrow button should be down"
system_log_events_container.click_event_table_header_arrow(index)
browser.wait_for_timeout(500)
state = system_log_events_container.get_arrow_button_state(index)
assert state == "up", "Arrow button should be up"
is_descending_order = system_log_events_container.check_events_table_column_descending_order(index,
convert2timestamp=True)
assert not is_descending_order, "Column data should be in ascending order"
system_log_events_container.click_event_table_header_arrow(index)
browser.wait_for_timeout(500)
state = system_log_events_container.get_arrow_button_state(index)
assert state == "down", "Arrow button should be down"
is_descending_order = system_log_events_container.check_events_table_column_descending_order(index,
convert2timestamp=True)
assert is_descending_order, "Column data should be in descending order"
# @pytest.mark.develop
def test_events_table_pagination(self, browser: Page):
"""Проверяет возможность пагинации таблицы событий.
Args:
browser: Экземпляр страницы Playwright.
"""
lp = LoginPage(browser)
lp.do_login()
mp = MainPage(browser)
mp.should_be_event_panel()
system_log_events_container = mp.click_events_panel_system_log_tab()
system_log_events_container.should_be_pagination_buttons()
# Проверка начального состояния
is_chevron_left_disabled = system_log_events_container.is_chevron_left_disabled()
assert is_chevron_left_disabled, "Arrow Left button should be disabled"
is_chevron_right_disabled = system_log_events_container.is_chevron_right_disabled()
assert not is_chevron_right_disabled, "Arrow Right button should be enabled"
current_number = system_log_events_container.get_current_data_set_number()
assert current_number == 1, "The first page should be number one"
# загрузка страниц от начала и до конца
# to_do: проверка, что происходит обновление содержимого таблицы
counter = 1
# temporarily
max_pages = 20
while not is_chevron_right_disabled and counter <= max_pages:
# while not is_chevron_right_disabled:
system_log_events_container.click_chevron_right()
browser.wait_for_timeout(1500)
counter += 1
is_chevron_left_disabled = system_log_events_container.is_chevron_left_disabled()
assert not is_chevron_left_disabled, "Arrow Left button should be enabled"
is_chevron_right_disabled = system_log_events_container.is_chevron_right_disabled()
current_number = system_log_events_container.get_current_data_set_number()
assert current_number == counter, f"Expected page number {counter} is not equal actual {current_number}"
# загрузка страниц от конца к началу
# to_do: проверка, что происходит обновление содержимого таблицы
while not is_chevron_left_disabled:
system_log_events_container.click_chevron_left()
browser.wait_for_timeout(1500)
counter -= 1
is_chevron_left_disabled = system_log_events_container.is_chevron_left_disabled()
is_chevron_right_disabled = system_log_events_container.is_chevron_right_disabled()
assert not is_chevron_right_disabled, "Arrow Right button should be enabled"
current_number = system_log_events_container.get_current_data_set_number()
assert current_number == counter, f"Expected page number {counter} is not equal actual {current_number}"
# Проверка возврата к начальному состоянию
is_chevron_left_disabled = system_log_events_container.is_chevron_left_disabled()
assert is_chevron_left_disabled, "Arrow Left button should be disabled"
is_chevron_right_disabled = system_log_events_container.is_chevron_right_disabled()
assert not is_chevron_right_disabled, "Arrow Right button should be enabled"
current_number = system_log_events_container.get_current_data_set_number()
assert current_number == 1, "The first page should be number one"