184 lines
8.0 KiB
Python
184 lines
8.0 KiB
Python
"""Модуль тестов вкладки 'Статус компонентов'.
|
||
|
||
Содержит тесты для проверки отображения и функциональности
|
||
элементов вкладки статусов сервисов.
|
||
"""
|
||
|
||
import pytest
|
||
|
||
from playwright.sync_api import Page
|
||
from pages.service_status_tab import ServiceStatusTab
|
||
from pages.main_page import MainPage
|
||
from pages.login_page import LoginPage
|
||
|
||
# pytest.skip("пропуск всех тестов в этом файле в связи с переходом на новый виджет", allow_module_level=True)
|
||
|
||
# @pytest.mark.smoke
|
||
class TestServiceStatusTab:
|
||
"""Класс тестов для проверки вкладки 'Статус компонентов'.
|
||
|
||
Тесты покрывают следующие сценарии:
|
||
1. test_service_status_tab_content: Проверяет содержимое вкладки 'Статус компонентов'
|
||
2. test_service_status_table_row_highlighting: Проверяет выделение строк в таблице сервисов
|
||
3. test_service_status_tab_resize: Проверяет возможность расширения/сжатия рабочей области вкладки
|
||
4. test_service_status_tab_reload: Проверяет возможность обновления контента после нажатия кнопки 'Обновить'
|
||
"""
|
||
|
||
@pytest.fixture(scope="function", autouse=True)
|
||
def setup(self, browser: Page):
|
||
"""Подготавливает тестовое окружение.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
lp = LoginPage(browser)
|
||
lp.do_login()
|
||
|
||
# Переход на главную страницу
|
||
mp = MainPage(browser)
|
||
|
||
# Проверка наличия панели навигации
|
||
mp.should_be_navigation_panel()
|
||
|
||
# Клик по пункту 'Настройки' в главной панели навигации
|
||
mp.click_main_navigation_panel_item("Настройки")
|
||
|
||
# Клик по пункту 'Обслуживание и диагностика' в панели навигации настроек
|
||
mp.click_subpanel_item("Обслуживание и диагностика")
|
||
|
||
# Клик по пункту 'Статус компонентов' в панели навигации обслуживания
|
||
mp.click_subpanel_item("Статус компонентов")
|
||
|
||
# @pytest.mark.develop
|
||
def test_service_status_tab_content(self, browser: Page):
|
||
"""Проверяет содержимое вкладки 'Статус компонентов'.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
sst = ServiceStatusTab(browser)
|
||
|
||
# Проверка наличия заголовка вкладки
|
||
sst.should_be_tab_title()
|
||
|
||
# Проверка наличия кнопки 'Обновить'
|
||
sst.should_be_update_button()
|
||
|
||
# Проверка наличия таблицы статусов сервисов
|
||
sst.should_be_services_table()
|
||
|
||
# Ожидание перед проверкой содержимого таблицы сервисов
|
||
browser.wait_for_timeout(1000)
|
||
|
||
# Проверка содержимого таблицы сервисов
|
||
sst.check_services_table_content()
|
||
|
||
# @pytest.mark.develop
|
||
def test_service_status_table_row_highlighting(self, browser: Page):
|
||
"""Проверяет выделение строк в таблице сервисов.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
sst = ServiceStatusTab(browser)
|
||
|
||
# Проверка наличия таблицы статусов сервисов
|
||
sst.should_be_services_table()
|
||
|
||
# Получение количества строк в таблице
|
||
rows_count = sst.get_rows_count()
|
||
|
||
# Проверка выделения строк
|
||
sst.check_services_table_row_highlighting(0)
|
||
sst.check_services_table_row_highlighting(int(rows_count / 2))
|
||
sst.check_services_table_row_highlighting(rows_count - 1)
|
||
|
||
@pytest.mark.develop
|
||
def test_service_status_tab_resize(self, browser: Page):
|
||
"""Проверяет возможность расширения/сжатия рабочей области вкладки.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
mp = MainPage(browser)
|
||
|
||
sst = ServiceStatusTab(browser)
|
||
|
||
# Проверка наличия таблицы статусов сервисов
|
||
sst.should_be_services_table()
|
||
|
||
# Получение количества строк в таблице
|
||
rows_count_before = sst.get_rows_count()
|
||
|
||
# Проверка наличия кнопки расширения рабочей области вкладки
|
||
mp.should_be_expand_workarea_button()
|
||
|
||
# Проверка возможности расширения рабочей области вкладки
|
||
widht_before = sst.get_workarea_widht()
|
||
|
||
mp.click_expand_workarea_button()
|
||
browser.wait_for_timeout(200)
|
||
|
||
widht_after_expand = sst.get_workarea_widht()
|
||
assert widht_before < widht_after_expand,"Services statuses tab should be expanded"
|
||
|
||
# Получение количества строк в таблице
|
||
rows_count_after_expand = sst.get_rows_count()
|
||
assert rows_count_before == rows_count_after_expand, "Bad workarea expand action"
|
||
|
||
# Проверка возможности сжатия рабочей области вкладки
|
||
mp.should_be_reduce_workarea_button()
|
||
|
||
mp.click_reduce_workarea_button()
|
||
browser.wait_for_timeout(200)
|
||
|
||
widht_after_reduce = sst.get_workarea_widht()
|
||
|
||
assert widht_after_expand > widht_after_reduce,"Services statuses tab should be reduced"
|
||
|
||
# Получение количества строк в таблице
|
||
rows_count_after_reduce = sst.get_rows_count()
|
||
assert rows_count_after_reduce == rows_count_after_expand, "Bad workarea reduce action"
|
||
|
||
# @pytest.mark.develop
|
||
def test_service_status_tab_reload(self, browser: Page):
|
||
"""Проверяет возможность обновления контента после нажатия кнопки 'Обновить'.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
sst = ServiceStatusTab(browser)
|
||
|
||
# Проверка наличия кнопки 'Обновить'
|
||
sst.should_be_update_button()
|
||
|
||
# Проверка наличия таблицы статусов сервисов
|
||
sst.should_be_services_table()
|
||
|
||
# Сохраняем значения столбца 'Время создания'
|
||
creation_time_col_before = sst.get_column(4)
|
||
timestamps_before = sst.datetime2timestamp(creation_time_col_before)
|
||
|
||
# Нажатие на кнопку 'Обновить'
|
||
sst.click_update_button()
|
||
browser.wait_for_load_state('domcontentloaded')
|
||
|
||
# Проверка наличия таблицы статусов сервисов
|
||
sst.should_be_services_table()
|
||
|
||
# Ожидание перед проверкой содержимого таблицы сервисов
|
||
browser.wait_for_timeout(1000)
|
||
|
||
# Сохраняем значения столбца 'Время создания'
|
||
creation_time_col_after = sst.get_column(4)
|
||
timestamps_after = sst.datetime2timestamp(creation_time_col_after)
|
||
|
||
assert len(timestamps_before) == len(timestamps_after), "Bad tab reload"
|
||
for i in range(len(timestamps_before)):
|
||
assert timestamps_before[i] < timestamps_after[i], "Date value after reload should be must be more recent"
|