"""Модуль тестов вкладки 'Конфигурация' в модуле 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("Таблица не поддерживает вертикальный скроллинг")