179 lines
8.7 KiB
Python
179 lines
8.7 KiB
Python
"""Модуль тестов вкладки 'Конфигурация' в модуле 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
|
||
|
||
# @pytest.mark.smoke
|
||
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.develop
|
||
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()
|
||
|
||
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.check_sync_button_visibility(0)
|
||
|
||
# Проверка корректности подсказки кнопки
|
||
config_tab.check_sync_button_tooltip(0)
|
||
|
||
# Проверка работоспособности кнопки при клике
|
||
config_tab.click_sync_button(0)
|
||
|
||
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()
|
||
|
||
# Если таблица пустая - логируем и завершаем
|
||
if rows_count == 0:
|
||
print("Таблица пустая - проверка выделения строк не выполняется")
|
||
return
|
||
|
||
# Проверка выделения строк в различных позициях таблицы
|
||
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)) # Строка в середине
|
||
|
||
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("Таблица не поддерживает вертикальный скроллинг")
|
||
|