Актуализированы тесты проверки сортировки столбца таблицы и пагинации табличных данных
parent
c5099b814b
commit
9ffa043dc4
|
|
@ -1,7 +1,6 @@
|
||||||
"""Модуль компонента контейнера с перечнем событий. Содержит класс для работы с контейнерами,
|
"""Модуль компонента контейнера с перечнем событий. Содержит класс для работы с контейнерами,
|
||||||
их элементами и проверками."""
|
их элементами и проверками."""
|
||||||
|
|
||||||
from datetime import datetime
|
|
||||||
from playwright.sync_api import Page, Locator
|
from playwright.sync_api import Page, Locator
|
||||||
from tools.logger import get_logger
|
from tools.logger import get_logger
|
||||||
from locators.toolbar_locators import ToolbarLocators
|
from locators.toolbar_locators import ToolbarLocators
|
||||||
|
|
@ -83,15 +82,6 @@ class EventsContainerComponent(BaseComponent):
|
||||||
loc = self.container_locator.locator(self.table_locator)
|
loc = self.container_locator.locator(self.table_locator)
|
||||||
self.events_table.click_arrow_button(loc, index)
|
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:
|
def get_current_data_set_number(self) -> int:
|
||||||
"""Получение номера текущего набора данных"""
|
"""Получение номера текущего набора данных"""
|
||||||
|
|
||||||
|
|
@ -176,18 +166,20 @@ class EventsContainerComponent(BaseComponent):
|
||||||
self.events_table.check_table_headers(actual_headers, expected_headers)
|
self.events_table.check_table_headers(actual_headers, expected_headers)
|
||||||
|
|
||||||
def check_events_table_column_descending_order(self,
|
def check_events_table_column_descending_order(self,
|
||||||
index: int) -> bool:
|
index: int,
|
||||||
|
convert2timestamp=False) -> bool:
|
||||||
"""Проверка, что заданный столбец таблицы упорядочен по убыванию.
|
"""Проверка, что заданный столбец таблицы упорядочен по убыванию.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
index: Индекс столбца.
|
index: Индекс столбца.
|
||||||
|
convert2timestamp: Конвертировать строковое представление даты и времени в Unix timestamp.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
True, если столбец таблицы упорядочен по убыванию. Иначе: False
|
True, если столбец таблицы упорядочен по убыванию. Иначе: False
|
||||||
"""
|
"""
|
||||||
|
|
||||||
loc = self.container_locator.locator(self.table_locator)
|
loc = self.container_locator.locator(self.table_locator)
|
||||||
return self.events_table.check_column_descending_order(loc, index)
|
return self.events_table.check_column_descending_order(loc, index, convert2timestamp)
|
||||||
|
|
||||||
def check_events_table_row_highlighting(self, row_index: int) -> None:
|
def check_events_table_row_highlighting(self, row_index: int) -> None:
|
||||||
"""Проверяет выделение указанной строки таблицы.
|
"""Проверяет выделение указанной строки таблицы.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
"""Модуль компонента таблицы. Содержит класс для работы с табличными данными."""
|
"""Модуль компонента таблицы. Содержит класс для работы с табличными данными."""
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
from playwright.sync_api import Page, expect, Locator
|
from playwright.sync_api import Page, expect, Locator
|
||||||
from tools.logger import get_logger
|
from tools.logger import get_logger
|
||||||
from components.base_component import BaseComponent
|
from components.base_component import BaseComponent
|
||||||
|
|
@ -33,6 +34,25 @@ class TableComponent(BaseComponent):
|
||||||
assert arrow_button.is_enabled(), f"Arrow button is missing in {index} header cell"
|
assert arrow_button.is_enabled(), f"Arrow button is missing in {index} header cell"
|
||||||
arrow_button.click()
|
arrow_button.click()
|
||||||
|
|
||||||
|
def datetime2timestamp(self, date_string: str) -> float|None:
|
||||||
|
""" Конвертация строкового представления даты и времени в Unix timestamp
|
||||||
|
Args:
|
||||||
|
date_string: Строка с датой и временем в формате d.m.Y H:M:S.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
float: Unix timestamp.
|
||||||
|
None: конвертация невозможна
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Формат, соответствующий строке с датой и временем
|
||||||
|
format_string = "%d.%m.%Y %H:%M:%S"
|
||||||
|
|
||||||
|
try:
|
||||||
|
date_object = datetime.strptime(date_string, format_string)
|
||||||
|
return date_object.timestamp()
|
||||||
|
except ValueError:
|
||||||
|
return None
|
||||||
|
|
||||||
def get_arrow_button_state(self, table_locator: str | Locator, index: int) -> str:
|
def get_arrow_button_state(self, table_locator: str | Locator, index: int) -> str:
|
||||||
""" Получение состояния кнопки-стрелочки вверх/вниз в ячейке заголовка таблицы
|
""" Получение состояния кнопки-стрелочки вверх/вниз в ячейке заголовка таблицы
|
||||||
|
|
||||||
|
|
@ -201,12 +221,14 @@ class TableComponent(BaseComponent):
|
||||||
|
|
||||||
def check_column_descending_order(self,
|
def check_column_descending_order(self,
|
||||||
locator: str | Locator,
|
locator: str | Locator,
|
||||||
index: int) -> bool:
|
index: int,
|
||||||
|
convert2timestamp=False) -> bool:
|
||||||
"""Проверка, что заданный столбец таблицы упорядочен по убыванию.
|
"""Проверка, что заданный столбец таблицы упорядочен по убыванию.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
locator: Локатор таблицы.
|
locator: Локатор таблицы.
|
||||||
index: Индекс столбца.
|
index: Индекс столбца.
|
||||||
|
convert2timestamp: Конвертировать строковое представление даты и времени в Unix timestamp
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
True, если столбец таблицы упорядочен по убыванию. Иначе: False
|
True, если столбец таблицы упорядочен по убыванию. Иначе: False
|
||||||
|
|
@ -223,9 +245,14 @@ class TableComponent(BaseComponent):
|
||||||
"Column index is out of range"
|
"Column index is out of range"
|
||||||
column = []
|
column = []
|
||||||
for i in range(len(table_content)):
|
for i in range(len(table_content)):
|
||||||
column.append(table_content[i][index])
|
if convert2timestamp:
|
||||||
|
timestamp = self.datetime2timestamp(table_content[i][index])
|
||||||
|
assert timestamp, f"Error conversation to timestamp for {table_content[i][index]}"
|
||||||
|
column.append(timestamp)
|
||||||
|
else:
|
||||||
|
column.append(table_content[i][index])
|
||||||
|
|
||||||
return all([x > y for x, y in zip(column, column[1:])])
|
return all(column[i] >= column[i+1] for i in range(len(column) - 1))
|
||||||
|
|
||||||
def check_first_row_visibility(self, locator: str | Locator) -> None:
|
def check_first_row_visibility(self, locator: str | Locator) -> None:
|
||||||
"""Проверяет видимость первой строки таблицы.
|
"""Проверяет видимость первой строки таблицы.
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,7 @@ class TestSystemLogEventsContainer:
|
||||||
# Проверка видимости первой строки после прокрутки
|
# Проверка видимости первой строки после прокрутки
|
||||||
system_log_events_container.check_events_table_first_row_visibility()
|
system_log_events_container.check_events_table_first_row_visibility()
|
||||||
|
|
||||||
|
# @pytest.mark.develop
|
||||||
def test_events_table_column_sorting(self, browser: Page):
|
def test_events_table_column_sorting(self, browser: Page):
|
||||||
"""Проверяет сортировку колонки 'Время' в таблице событий.
|
"""Проверяет сортировку колонки 'Время' в таблице событий.
|
||||||
|
|
||||||
|
|
@ -148,21 +149,23 @@ class TestSystemLogEventsContainer:
|
||||||
assert state == "down", "Arrow button should be down"
|
assert state == "down", "Arrow button should be 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)
|
state = system_log_events_container.get_arrow_button_state(index)
|
||||||
assert state == "up", "Arrow button should be up"
|
assert state == "up", "Arrow button should be 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,
|
||||||
|
convert2timestamp=True)
|
||||||
assert not is_descending_order, "Column data should be in ascending order"
|
assert not is_descending_order, "Column data should be in ascending order"
|
||||||
|
|
||||||
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)
|
state = system_log_events_container.get_arrow_button_state(index)
|
||||||
assert state == "down", "Arrow button should be down"
|
assert state == "down", "Arrow button should be down"
|
||||||
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,
|
||||||
|
convert2timestamp=True)
|
||||||
assert is_descending_order, "Column data should be in descending order"
|
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):
|
||||||
"""Проверяет возможность пагинации таблицы событий.
|
"""Проверяет возможность пагинации таблицы событий.
|
||||||
|
|
||||||
|
|
@ -193,8 +196,12 @@ class TestSystemLogEventsContainer:
|
||||||
# загрузка страниц от начала и до конца
|
# загрузка страниц от начала и до конца
|
||||||
# to_do: проверка, что происходит обновление содержимого таблицы
|
# to_do: проверка, что происходит обновление содержимого таблицы
|
||||||
counter = 1
|
counter = 1
|
||||||
while not is_chevron_right_disabled:
|
# 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()
|
system_log_events_container.click_chevron_right()
|
||||||
|
browser.wait_for_timeout(1500)
|
||||||
counter += 1
|
counter += 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()
|
||||||
|
|
@ -209,6 +216,7 @@ class TestSystemLogEventsContainer:
|
||||||
# to_do: проверка, что происходит обновление содержимого таблицы
|
# 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()
|
||||||
|
browser.wait_for_timeout(1500)
|
||||||
counter -= 1
|
counter -= 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()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue