e-nms_qa_automation/tests/e2e/test_ztp_config_tab.py

183 lines
9.2 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.

"""Модуль тестов вкладки 'Конфигурация' в модуле Zero Touch Provisioning.
Содержит тесты для проверки функциональности
работы с конфигурациями ZTP.
"""
import pytest
from playwright.sync_api import Page
from pages.login_page import LoginPage
from pages.main_page import MainPage
from pages.ztp_config_tab import ZTPConfigTab
class TestZTPConfigTab:
"""Набор тестов для вкладки 'Конфигурация' в модуле Zero Touch Provisioning.
Проверяет корректность отображения, функциональность элементов интерфейса
на вкладке конфигурации ZTP.
Тесты покрывают следующие функциональные области:
1. test_ztp_config_tab_content - Базовая структура и содержимое вкладки
2. test_ztp_config_sync_buttons - Функциональность кнопок синхронизации
3. test_ztp_config_table_row_highlighting - Визуальное выделение строк таблицы
4. test_ztp_config_table_scrolling - Навигация по таблице с большим объемом данных
"""
@pytest.fixture(scope="function", autouse=True)
def setup(self, browser: Page) -> None:
"""Фикстура для подготовки тестового окружения.
Выполняет:
1. Авторизацию в системе
2. Переход на вкладку 'Конфигурация' через панель навигации
Args:
browser (Page): Экземпляр страницы Playwright для взаимодействия с UI
"""
# Авторизация в системе
login_page = LoginPage(browser)
login_page.do_login()
# Инициализация главной страницы
main_page = MainPage(browser)
# Проверка и взаимодействие с элементами навигации
main_page.should_be_navigation_panel()
main_page.click_main_navigation_panel_item("Настройки")
main_page.click_subpanel_item("Zero Touch Provisioning")
main_page.click_subpanel_item("Конфигурация", parent="Zero Touch Provisioning")
main_page.wait_for_timeout(1000)
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
def test_ztp_config_tab_content(self, browser: Page) -> None:
"""Тест содержимого вкладки 'Конфигурация' ZTP.
Проверяет:
1. Наличие и корректность тулбара
2. Наличие таблицы конфигураций
3. Соответствие содержимого таблицы
Args:
browser (Page): Экземпляр страницы Playwright для взаимодействия с UI
"""
# Инициализация страницы конфигурации ZTP
config_tab = ZTPConfigTab(browser)
# Проверка тулбара вкладки
config_tab.should_be_toolbar()
# Проверка наличия таблицы конфигурации
config_tab.should_be_config_table()
# Проверка содержимого таблицы конфигураций
config_tab.check_config_table_content()
#@pytest.mark.skip(reason="В разработке. Временно исключено из тестирования")
def test_ztp_config_sync_buttons(self, browser: Page) -> None:
"""Тест функциональности кнопки синхронизации (Reload) в таблице конфигурации ZTP.
Проверяет:
1. Наличие и видимость кнопки синхронизации в заголовке таблицы
2. Корректность текста подсказки кнопки (должна быть 'reload')
3. Работоспособность кнопки при клике
4. Интеграцию кнопки с системой управления подсказками тулбара
Args:
browser (Page): Экземпляр страницы Playwright для взаимодействия с UI.
"""
# Инициализация страницы конфигурации ZTP
config_tab = ZTPConfigTab(browser)
# Проверка наличия таблицы конфигурации
config_tab.should_be_config_table()
# Ожидание загрузки данных таблицы
browser.wait_for_timeout(3000)
# Тестирование кнопки синхронизации в первой ячейке заголовка (индекс 0)
# Регистрация кнопки в системе управления тулбаром
config_tab.add_sync_button_to_toolbar(0)
# Проверка видимости кнопки
config_tab.check_sync_button_visibility(0)
# Проверка корректности подсказки кнопки
config_tab.check_sync_button_tooltip(0)
# Проверка работоспособности кнопки при клике
config_tab.click_sync_button(0)
@pytest.mark.skip(reason=" Временно исключено из тестирования")
def test_ztp_config_table_row_highlighting(self, browser: Page) -> None:
"""Проверка выделения строк в таблице конфигураций ZTP.
Проверяет корректность выделения строк при клике на различные позиции:
1. Первая строка
2. Последняя строка
3. Строка в середине таблицы
Args:
browser (Page): Экземпляр страницы Playwright для взаимодействия с UI
"""
config_tab = ZTPConfigTab(browser)
# Проверка тулбара вкладки
config_tab.should_be_toolbar()
# Проверка наличия таблицы конфигураций
config_tab.should_be_config_table()
# Получение количества строк в таблице
rows_count = config_tab.get_rows_count()
# Проверка выделения строк в различных позициях таблицы
config_tab.check_config_table_row_highlighting(0) # Первая строка
config_tab.check_config_table_row_highlighting(rows_count - 1) # Последняя строка
config_tab.check_config_table_row_highlighting(int(rows_count / 2)) # Строка в середине
@pytest.mark.skip(reason=" Временно исключено из тестирования")
def test_ztp_config_table_scrolling(self, browser: Page) -> None:
"""Проверка вертикального скроллинга таблицы конфигураций ZTP.
Проверяет:
1. Возможность вертикальной прокрутки таблицы
2. Видимость строк после прокрутки вниз и вверх
3. Корректность отображения данных после скроллинга
Args:
browser (Page): Экземпляр страницы Playwright для взаимодействия с UI
"""
config_tab = ZTPConfigTab(browser)
# Ожидание загрузки таблицы
browser.wait_for_timeout(2000)
# Проверка возможности вертикального скроллинга
is_scrollable = config_tab.check_config_table_vertical_scrolling()
if is_scrollable:
print("Таблица поддерживает вертикальный скроллинг")
# Прокрутка вниз до конца таблицы
config_tab.scroll_config_table_down()
browser.wait_for_timeout(1000)
# Проверка видимости последней строки после прокрутки
config_tab.check_config_table_last_row_visibility()
# Прокрутка вверх до начала таблицы
config_tab.scroll_config_table_up()
browser.wait_for_timeout(1000)
# Проверка видимости первой строки после прокрутки
config_tab.check_config_table_first_row_visibility()
else:
print("Таблица не поддерживает вертикальный скроллинг")
# Проверка видимости первой строки при отсутствии скроллинга
config_tab.check_config_table_first_row_visibility()