239 lines
11 KiB
Python
239 lines
11 KiB
Python
"""Модуль тестов контейнера для отображения событий системного журнала.
|
||
|
||
Содержит тесты для проверки функциональности
|
||
контейнера для отображения событий системного журнала.
|
||
"""
|
||
|
||
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 = 5
|
||
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"
|