From 93005b6cfe0d1a63cff557c83532f832fd3f1fb3 Mon Sep 17 00:00:00 2001 From: nsubbot Date: Thu, 25 Sep 2025 16:16:18 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=82=D0=B5=D1=81=D1=82=20=D0=BF=D0=B0=D0=B3=D0=B8?= =?UTF-8?q?=D0=BD=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D0=BF?= =?UTF-8?q?=D0=B0=D0=BD=D0=B5=D0=BB=D0=B8=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80?= =?UTF-8?q?=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D0=BE=D0=B1=D1=8B?= =?UTF-8?q?=D1=82=D0=B8=D0=B9=20=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D0=B6=D1=83=D1=80=D0=BD=D0=B0=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/events_container_component.py | 13 +++- tests/e2e/test_system_log_events_container.py | 70 ++++++++++++++++++- 2 files changed, 79 insertions(+), 4 deletions(-) diff --git a/components/events_container_component.py b/components/events_container_component.py index 18f5445..76fbaf7 100644 --- a/components/events_container_component.py +++ b/components/events_container_component.py @@ -1,10 +1,10 @@ """Модуль компонента контейнера с перечнем событий. Содержит класс для работы с контейнерами, их элементами и проверками.""" +from datetime import datetime from playwright.sync_api import Page, Locator from tools.logger import get_logger from locators.toolbar_locators import ToolbarLocators -# from locators.table_locators import TableLocators from elements.tooltip_button_element import TooltipButton from elements.tab_button_element import TabButton from elements.button_element import Button @@ -74,7 +74,7 @@ class EventsContainerComponent(BaseComponent): self.chevron_right.click() - def click_event_table_header_arrow(self, index) -> None: + def click_event_table_header_arrow(self, index: int) -> None: """ Нажатие кнопки-стрелочки вверх/вниз в ячейке заголовка таблицы Args: @@ -83,6 +83,15 @@ class EventsContainerComponent(BaseComponent): loc = self.container_locator.locator(self.table_locator) self.events_table.click_arrow_button(loc, index) + def datetime2timestamp(self, date_string: str) -> float: + """ Конвертация строкового представления даты и времени в Unix timestamp """ + + # Формат, соответствующий строке с датой и временем + format_string = "%d.%m.%Y %H:%M:%S" + + date_object = datetime.strptime(date_string, format_string) + return date_object.timestamp() + def get_current_data_set_number(self) -> int: """Получение номера текущего набора данных""" diff --git a/tests/e2e/test_system_log_events_container.py b/tests/e2e/test_system_log_events_container.py index 9f95f26..f5f5dca 100644 --- a/tests/e2e/test_system_log_events_container.py +++ b/tests/e2e/test_system_log_events_container.py @@ -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 @@ -128,7 +128,6 @@ class TestSystemLogEventsContainer: # Проверка видимости первой строки после прокрутки system_log_events_container.check_events_table_first_row_visibility() - # @pytest.mark.develop def test_events_table_column_sorting(self, browser: Page): """Проверяет сортировку колонки 'Время' в таблице событий. @@ -162,3 +161,70 @@ class TestSystemLogEventsContainer: assert state == "down", "Arrow button should be down" is_descending_order = system_log_events_container.check_events_table_column_descending_order(index) 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 + while not is_chevron_right_disabled: + system_log_events_container.click_chevron_right() + 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() + 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"