From 440426aca1487abcea2c34ffb14fe4cd05294359 Mon Sep 17 00:00:00 2001 From: nsubbot Date: Fri, 7 Nov 2025 15:15:54 +0300 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=20=D1=82=D0=B5=D1=81?= =?UTF-8?q?=D1=82=20=D0=BF=D0=B0=D0=B3=D0=B8=D0=BD=D0=B0=D1=86=D0=B8=D0=B8?= =?UTF-8?q?=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B2=D0=BA=D0=BB?= =?UTF-8?q?=D0=B0=D0=B4=D0=BA=D0=B8=20=D0=9F=D0=B0=D0=BD=D0=B5=D0=BB=D1=8C?= =?UTF-8?q?=20=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D0=B9/=D0=A1=D0=B8?= =?UTF-8?q?=D1=81=D1=82=D0=B5=D0=BC=D0=BD=D1=8B=D0=B9=20=D0=B6=D1=83=D1=80?= =?UTF-8?q?=D0=BD=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/events_container_component.py | 92 +++++++++++- data/environment.py | 4 +- tests/e2e/test_system_log_events_container.py | 140 +++++++++++++----- 3 files changed, 196 insertions(+), 40 deletions(-) diff --git a/components/events_container_component.py b/components/events_container_component.py index 9bdf27d..8bce8d6 100644 --- a/components/events_container_component.py +++ b/components/events_container_component.py @@ -52,8 +52,15 @@ class EventsContainerComponent(BaseComponent): self.container_locator.get_by_role("button").filter(has_text='chevron_right'), "chevron_right") + self.first_page = Button(page, + self.container_locator.get_by_role("button").filter(has_text='first_page'), + "first_page") + self.last_page = Button(page, + self.container_locator.get_by_role("button").filter(has_text='last_page'), + "last_page") + loc = self.container_locator.get_by_role("button").filter(has_text='chevron_left').\ - locator("xpath=..").get_by_role("button").nth(1) + locator("xpath=..").get_by_role("button").nth(2) self.data_set_number = Button(page, loc, "data_set_number") # Действия: @@ -73,6 +80,16 @@ class EventsContainerComponent(BaseComponent): self.chevron_right.click() + def click_first_page(self) -> None: + """Нажатие кнопки перехода на первую сраницу""" + + self.first_page.click() + + def click_last_page(self) -> None: + """Нажатие кнопки перехода на последнюю страницу""" + + self.last_page.click() + def click_event_table_header_arrow(self, index: int) -> None: """ Нажатие кнопки-стрелочки вверх/вниз в ячейке заголовка таблицы @@ -234,6 +251,77 @@ class EventsContainerComponent(BaseComponent): return self.chevron_right.is_disabled() + def is_first_page_disabled(self) -> bool: + """Проверка видимости кнопки получения первой страницы с набором данных""" + + return self.first_page.is_disabled() + + def is_last_page_disabled(self) -> bool: + """Проверка видимости кнопки получения последней страницы с набором данных""" + + return self.last_page.is_disabled() + + def should_be_all_disabled(self) -> None: + """Проверка видимости кнопок пагинации: все кнопки disabled""" + + is_first_page_disabled = self.is_first_page_disabled() + assert is_first_page_disabled, "First Page button should be disabled" + + is_chevron_left_disabled = self.is_chevron_left_disabled() + assert is_chevron_left_disabled, "Arrow Left button should be disabled" + + is_chevron_right_disabled = self.is_chevron_right_disabled() + assert is_chevron_right_disabled, "Arrow Right button should be disabled" + + is_last_page_disabled = self.is_last_page_disabled() + assert is_last_page_disabled, "Last Page button should be disabled" + + def should_be_all_enabled(self) -> None: + """Проверка видимости кнопок пагинации: все кнопки enabled""" + + is_first_page_disabled = self.is_first_page_disabled() + assert not is_first_page_disabled, "First Page button should be enabled" + + is_chevron_left_disabled = self.is_chevron_left_disabled() + assert not is_chevron_left_disabled, "Arrow Left button should be enabled" + + is_chevron_right_disabled = self.is_chevron_right_disabled() + assert not is_chevron_right_disabled, "Arrow Right button should be enabled" + + is_last_page_disabled = self.is_last_page_disabled() + assert not is_last_page_disabled, "Last Page button should be enabled" + + + def should_be_initial_state(self) -> None: + """Проверка видимости кнопок для первой страницы""" + + is_first_page_disabled = self.is_first_page_disabled() + assert is_first_page_disabled, "First Page button should be disabled" + + is_chevron_left_disabled = self.is_chevron_left_disabled() + assert is_chevron_left_disabled, "Arrow Left button should be disabled" + + is_chevron_right_disabled = self.is_chevron_right_disabled() + assert not is_chevron_right_disabled, "Arrow Right button should be enabled" + + is_last_page_disabled = self.is_last_page_disabled() + assert not is_last_page_disabled, "Last Page button should be enabled" + + def should_be_final_state(self) -> None: + """Проверка видимости кнопок для последней страницы""" + + is_first_page_disabled = self.is_first_page_disabled() + assert not is_first_page_disabled, "First Page button should be enabled" + + is_chevron_left_disabled = self.is_chevron_left_disabled() + assert not is_chevron_left_disabled, "Arrow Left button should be enabled" + + is_chevron_right_disabled = self.is_chevron_right_disabled() + assert is_chevron_right_disabled, "Arrow Right button should be disabled" + + is_last_page_disabled = self.is_last_page_disabled() + assert is_last_page_disabled, "Last Page button should be disabled" + def should_be_events_table(self) -> None: """Проверяет наличие таблицы событий. @@ -265,6 +353,8 @@ class EventsContainerComponent(BaseComponent): def should_be_pagination_buttons(self) -> None: """Проверяет наличие и видимость кнопок пагинации.""" + self.first_page.check_visibility("Pagination button 'first page' is missing") self.chevron_left.check_visibility("Pagination button 'chevron left' is missing") self.data_set_number.check_visibility("Pagination button 'data set number' is missing") self.chevron_right.check_visibility("Pagination button 'chevron right' is missing") + self.last_page.check_visibility("Pagination button 'last page' is missing") diff --git a/data/environment.py b/data/environment.py index 705f1d5..443b759 100644 --- a/data/environment.py +++ b/data/environment.py @@ -41,8 +41,8 @@ class Environment: """ if self.env in self.URLS: - if self.env == self.TEST: - return self.URLS[self.env] + "e-nms-ui/" + # if self.env == self.TEST: + # return self.URLS[self.env] + "e-nms-ui/" return self.URLS[self.env] raise Exception(f"Unknown value of ENV variable {self.env}") diff --git a/tests/e2e/test_system_log_events_container.py b/tests/e2e/test_system_log_events_container.py index 6299a5d..9a3c653 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 @@ -20,7 +20,7 @@ class TestSystemLogEventsContainer: Атрибуты: browser: Фикстура для работы с браузером. """ - + # @pytest.mark.develop def test_system_log_events_content(self, browser: Page) -> None: """Проверяет содержимое контейнера для отображения событий системного журнала. @@ -184,55 +184,121 @@ class TestSystemLogEventsContainer: 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" + tested_pages = 1 - is_chevron_right_disabled = system_log_events_container.is_chevron_right_disabled() - assert not is_chevron_right_disabled, "Arrow Right button should be enabled" + # to do: некорректный запрос в бэк, должно быть "filter": {"page": 0} + payload = {"table": "logs", + "filter": {"page": 1}, + "count": 40 + } + response = mp.send_post_api_request("e-nms/logs_enode", payload) + if response.status == 200: + response_body = mp.get_response_body(response) + + if response_body: + pages = response_body["data"]["pages"] + + if pages > 5: + tested_pages = 5 + else: + tested_pages = pages 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 + if tested_pages == 1: + system_log_events_container.should_be_all_disabled() + else: + system_log_events_container.should_be_initial_state() - is_chevron_left_disabled = system_log_events_container.is_chevron_left_disabled() - assert not is_chevron_left_disabled, "Arrow Left button should be enabled" + # Переход на самую последнюю страницу, возврат на страницу назад, потом на страницу вперед + system_log_events_container.click_last_page() + browser.wait_for_timeout(2000) - is_chevron_right_disabled = system_log_events_container.is_chevron_right_disabled() + system_log_events_container.should_be_final_state() - 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}" + last_number = system_log_events_container.get_current_data_set_number() - # загрузка страниц от конца к началу - # to_do: проверка, что происходит обновление содержимого таблицы - while not is_chevron_left_disabled: system_log_events_container.click_chevron_left() - browser.wait_for_timeout(1500) - counter -= 1 + browser.wait_for_timeout(4000) - 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" + if last_number == 2: + system_log_events_container.should_be_initial_state() + else: + system_log_events_container.should_be_all_enabled() + counter = last_number - 1 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" + system_log_events_container.click_chevron_right() + browser.wait_for_timeout(4000) - is_chevron_right_disabled = system_log_events_container.is_chevron_right_disabled() - assert not is_chevron_right_disabled, "Arrow Right button should be enabled" + system_log_events_container.should_be_final_state() - current_number = system_log_events_container.get_current_data_set_number() - assert current_number == 1, "The first page should be number one" + current_number = system_log_events_container.get_current_data_set_number() + assert current_number == last_number, f"Expected page number {last_number} is not equal actual {current_number}" + + # Переход на первую страницу, переход на следующую страницу, возврат на первую страницу + system_log_events_container.click_first_page() + browser.wait_for_timeout(2000) + + system_log_events_container.should_be_initial_state() + + current_number = system_log_events_container.get_current_data_set_number() + assert current_number == 1, f"Expected page number 1 is not equal actual {current_number}" + + system_log_events_container.click_chevron_right() + browser.wait_for_timeout(4000) + + if tested_pages == 2: + system_log_events_container.should_be_final_state() + else: + system_log_events_container.should_be_all_enabled() + + current_number = system_log_events_container.get_current_data_set_number() + assert current_number == 2, f"Expected page number 2 is not equal actual {current_number}" + + system_log_events_container.click_chevron_left() + browser.wait_for_timeout(4000) + + system_log_events_container.should_be_initial_state() + + current_number = system_log_events_container.get_current_data_set_number() + assert current_number == 1, f"Expected page number 1 is not equal actual {current_number}" + + if tested_pages > 2: + # загрузка страниц от начала и до конца + # to_do: проверка, что происходит обновление содержимого таблицы + counter = 1 + + while counter <= tested_pages: + system_log_events_container.click_chevron_right() + browser.wait_for_timeout(2000) + + system_log_events_container.should_be_all_enabled() + + counter += 1 + 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 counter > 2: + system_log_events_container.click_chevron_left() + browser.wait_for_timeout(2000) + + system_log_events_container.should_be_all_enabled() + + counter -= 1 + 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}" + + # Проверка возврата к начальному состоянию + system_log_events_container.click_chevron_left() + browser.wait_for_timeout(2000) + + system_log_events_container.should_be_initial_state() + + current_number = system_log_events_container.get_current_data_set_number() + assert current_number == 1, "The first page should be number one"