e-nms_qa_automation/tests/e2e/test_service_status_tab.py

184 lines
8.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"""Модуль тестов вкладки 'Статус компонентов'.
Содержит тесты для проверки отображения и функциональности
элементов вкладки статусов сервисов.
"""
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"