Рефакторинг тестов системного журнала
- улучшена стабильность теста пагинации - добавлена защита от бесконечного цикла - улучшена логика проверки сортировки - добавлено логирование для отладкиpull/1/head
parent
766abb66fe
commit
93e3d87d9e
|
|
@ -8,6 +8,9 @@ import pytest
|
||||||
from playwright.sync_api import Page
|
from playwright.sync_api import Page
|
||||||
from pages.main_page import MainPage
|
from pages.main_page import MainPage
|
||||||
from pages.login_page import LoginPage
|
from pages.login_page import LoginPage
|
||||||
|
from tools.logger import get_logger
|
||||||
|
|
||||||
|
logger = get_logger("TEST_SYSTEM_LOG_EVENTS_CONTAINER")
|
||||||
|
|
||||||
|
|
||||||
# @pytest.mark.smoke
|
# @pytest.mark.smoke
|
||||||
|
|
@ -144,23 +147,32 @@ class TestSystemLogEventsContainer:
|
||||||
system_log_events_container = mp.click_events_panel_system_log_tab()
|
system_log_events_container = mp.click_events_panel_system_log_tab()
|
||||||
|
|
||||||
index = 1
|
index = 1
|
||||||
state = system_log_events_container.get_arrow_button_state(index)
|
# Получаем начальное состояние сортировки
|
||||||
assert state == "down", "Arrow button should be down"
|
initial_state = system_log_events_container.get_arrow_button_state(index)
|
||||||
|
|
||||||
|
# Кликаем для изменения сортировки
|
||||||
system_log_events_container.click_event_table_header_arrow(index)
|
system_log_events_container.click_event_table_header_arrow(index)
|
||||||
browser.wait_for_timeout(300)
|
browser.wait_for_timeout(500)
|
||||||
|
|
||||||
state = system_log_events_container.get_arrow_button_state(index)
|
new_state = system_log_events_container.get_arrow_button_state(index)
|
||||||
assert state == "up", "Arrow button should be up"
|
|
||||||
|
# Проверяем что состояние изменилось
|
||||||
|
assert new_state != initial_state, "Arrow button state should change after click"
|
||||||
|
|
||||||
|
# Проверяем порядок данных в зависимости от состояния
|
||||||
|
if new_state == "up":
|
||||||
is_descending_order = system_log_events_container.check_events_table_column_descending_order(index)
|
is_descending_order = system_log_events_container.check_events_table_column_descending_order(index)
|
||||||
assert not is_descending_order, "Column data should be in ascending order"
|
assert not is_descending_order, "Column data should be in ascending order when arrow is up"
|
||||||
|
else:
|
||||||
|
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 when arrow is down"
|
||||||
|
|
||||||
|
# Возвращаем обратно и проверяем
|
||||||
system_log_events_container.click_event_table_header_arrow(index)
|
system_log_events_container.click_event_table_header_arrow(index)
|
||||||
browser.wait_for_timeout(300)
|
browser.wait_for_timeout(500)
|
||||||
state = system_log_events_container.get_arrow_button_state(index)
|
|
||||||
assert state == "down", "Arrow button should be down"
|
final_state = system_log_events_container.get_arrow_button_state(index)
|
||||||
is_descending_order = system_log_events_container.check_events_table_column_descending_order(index)
|
assert final_state == initial_state, "Arrow button should return to initial state after second click"
|
||||||
assert is_descending_order, "Column data should be in descending order"
|
|
||||||
|
|
||||||
@pytest.mark.develop
|
@pytest.mark.develop
|
||||||
def test_events_table_pagination(self, browser: Page):
|
def test_events_table_pagination(self, browser: Page):
|
||||||
|
|
@ -190,41 +202,62 @@ class TestSystemLogEventsContainer:
|
||||||
current_number = system_log_events_container.get_current_data_set_number()
|
current_number = system_log_events_container.get_current_data_set_number()
|
||||||
assert current_number == 1, "The first page should be number one"
|
assert current_number == 1, "The first page should be number one"
|
||||||
|
|
||||||
# загрузка страниц от начала и до конца
|
# Запоминаем начальный номер страницы
|
||||||
# to_do: проверка, что происходит обновление содержимого таблицы
|
previous_page = current_number
|
||||||
counter = 1
|
pages_visited = [current_number]
|
||||||
while not is_chevron_right_disabled:
|
|
||||||
|
# Переход вперед по страницам
|
||||||
|
max_pages = 200 # Защита от бесконечного цикла
|
||||||
|
page_count = 0
|
||||||
|
|
||||||
|
while not is_chevron_right_disabled and page_count < max_pages:
|
||||||
system_log_events_container.click_chevron_right()
|
system_log_events_container.click_chevron_right()
|
||||||
counter += 1
|
browser.wait_for_timeout(300) # Даем время на загрузку
|
||||||
|
|
||||||
|
current_number = system_log_events_container.get_current_data_set_number()
|
||||||
|
|
||||||
|
# Проверяем что мы перешли на новую страницу (номер изменился)
|
||||||
|
assert current_number != previous_page, f"Page number should change after clicking next. Was {previous_page}, still {current_number}"
|
||||||
|
|
||||||
|
# Проверяем что мы не возвращаемся на уже посещенную страницу
|
||||||
|
assert current_number not in pages_visited, f"Page {current_number} was already visited. Pages visited: {pages_visited}"
|
||||||
|
|
||||||
|
pages_visited.append(current_number)
|
||||||
|
previous_page = current_number
|
||||||
|
page_count += 1
|
||||||
|
|
||||||
is_chevron_left_disabled = system_log_events_container.is_chevron_left_disabled()
|
is_chevron_left_disabled = system_log_events_container.is_chevron_left_disabled()
|
||||||
assert not is_chevron_left_disabled, "Arrow Left button should be enabled"
|
assert not is_chevron_left_disabled, "Arrow Left button should be enabled after moving forward"
|
||||||
|
|
||||||
is_chevron_right_disabled = system_log_events_container.is_chevron_right_disabled()
|
is_chevron_right_disabled = system_log_events_container.is_chevron_right_disabled()
|
||||||
|
|
||||||
current_number = system_log_events_container.get_current_data_set_number()
|
logger.info(f"Visited {len(pages_visited)} pages: {pages_visited}")
|
||||||
assert current_number == counter, f"Expected page number {counter} is not equal actual {current_number}"
|
|
||||||
|
|
||||||
# загрузка страниц от конца к началу
|
# Переход назад по страницам
|
||||||
# to_do: проверка, что происходит обновление содержимого таблицы
|
|
||||||
while not is_chevron_left_disabled:
|
while not is_chevron_left_disabled:
|
||||||
system_log_events_container.click_chevron_left()
|
system_log_events_container.click_chevron_left()
|
||||||
counter -= 1
|
browser.wait_for_timeout(300) # Даем время на загрузку
|
||||||
|
|
||||||
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()
|
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}"
|
|
||||||
|
# Проверяем что мы перешли на предыдущую страницу
|
||||||
|
# (должны идти в обратном порядке от последней к первой)
|
||||||
|
expected_previous_page = pages_visited[-2] if len(pages_visited) > 1 else 1
|
||||||
|
assert current_number == expected_previous_page, f"Expected page {expected_previous_page} when going back, but got {current_number}. Pages visited: {pages_visited}"
|
||||||
|
|
||||||
|
# Удаляем последнюю страницу из списка (движемся назад)
|
||||||
|
pages_visited.pop()
|
||||||
|
|
||||||
|
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 when going back"
|
||||||
|
|
||||||
# Проверка возврата к начальному состоянию
|
# Проверка возврата к начальному состоянию
|
||||||
is_chevron_left_disabled = system_log_events_container.is_chevron_left_disabled()
|
is_chevron_left_disabled = system_log_events_container.is_chevron_left_disabled()
|
||||||
assert is_chevron_left_disabled, "Arrow Left button should be disabled"
|
assert is_chevron_left_disabled, "Arrow Left button should be disabled at the first page"
|
||||||
|
|
||||||
is_chevron_right_disabled = system_log_events_container.is_chevron_right_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"
|
assert not is_chevron_right_disabled, "Arrow Right button should be enabled at the first page"
|
||||||
|
|
||||||
current_number = system_log_events_container.get_current_data_set_number()
|
final_number = system_log_events_container.get_current_data_set_number()
|
||||||
assert current_number == 1, "The first page should be number one"
|
assert final_number == 1, f"Should return to first page (1), but got {final_number}"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue