327 lines
17 KiB
Python
327 lines
17 KiB
Python
"""Модуль тестов вкладки 'Шаблоны' в модуле Zero Touch Provisioning.
|
||
|
||
Содержит тесты для проверки функциональности
|
||
работы с шаблонами.
|
||
"""
|
||
import pytest
|
||
|
||
from playwright.sync_api import Page
|
||
from pages.login_page import LoginPage
|
||
from pages.main_page import MainPage
|
||
from pages.ztp_templates_tab import ZTPTemplatesTab
|
||
|
||
|
||
class TestZTPTemplatesTab:
|
||
"""Набор тестов для вкладки 'Шаблоны' в модуле Zero Touch Provisioning.
|
||
|
||
Проверяет корректность отображения, функциональность элементов интерфейса
|
||
и консистентность данных между UI и API на вкладке шаблонов ZTP.
|
||
|
||
Тесты покрывают следующие функциональные области:
|
||
1. test_templates_tab_content - Базовая структура и содержимое вкладки
|
||
2. test_templates_table_row_highlighting - Визуальное выделение строк таблицы
|
||
3. test_templates_table_scrolling - Навигация по таблице с большим объемом данных
|
||
4. test_templates_modal_window_close_buttons - Закрытие модальных окон разными способами
|
||
5. test_templates_modal_window_content - Структура и содержимое модальных окон
|
||
6. test_templates_modal_window_scrolling - Навигация в модальных окнах
|
||
7. test_templates_modal_window_api_data_consistency - Синхронизация данных UI и API
|
||
|
||
Фикстура setup обеспечивает подготовку тестового окружения:
|
||
- Авторизацию в системе
|
||
- Навигацию к целевой вкладке через панель настроек
|
||
- Инициализацию необходимых компонентов страницы
|
||
"""
|
||
|
||
@pytest.fixture(scope="function", autouse=True)
|
||
def setup(self, browser: Page) -> None:
|
||
"""Фикстура для подготовки тестового окружения.
|
||
|
||
Выполняет:
|
||
1. Авторизацию в системе
|
||
2. Переход на вкладку 'Шаблоны' через панель навигации
|
||
"""
|
||
# Авторизация в системе
|
||
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(5000)
|
||
|
||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||
def test_templates_tab_content(self, browser: Page) -> None:
|
||
"""Тест содержимого вкладки 'Шаблоны'.
|
||
|
||
Проверяет:
|
||
1. Наличие и корректность тулбара
|
||
2. Наличие таблицы шаблонов
|
||
3. Соответствие содержимого таблицы
|
||
"""
|
||
# Инициализация страницы сеансов
|
||
ztp_templates_tab = ZTPTemplatesTab(browser)
|
||
|
||
# Проверка тулбара вкладки
|
||
ztp_templates_tab.should_be_toolbar()
|
||
|
||
# Проверка наличия таблицы шаблонов
|
||
ztp_templates_tab.should_be_templates_table()
|
||
|
||
browser.wait_for_timeout(5000)
|
||
|
||
# Проверка содержимого таблицы шаблонов
|
||
ztp_templates_tab.check_ztp_templates_table_content()
|
||
|
||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||
def test_templates_table_row_highlighting(self, browser: Page) -> None:
|
||
"""Проверка выделения строк в таблице шаблонов.
|
||
|
||
Проверяет корректность выделения строк при клике на различные позиции:
|
||
1. Первая строка
|
||
2. Последняя строка
|
||
3. Строка в середине таблицы
|
||
"""
|
||
|
||
ztp_templates_tab = ZTPTemplatesTab(browser)
|
||
|
||
# Проверка тулбара вкладки
|
||
ztp_templates_tab.should_be_toolbar()
|
||
|
||
# Проверка наличия таблицы шаблонов
|
||
ztp_templates_tab.should_be_templates_table()
|
||
|
||
# Получение количества строк в таблице
|
||
rows_count = ztp_templates_tab.get_rows_count()
|
||
|
||
# Проверка выделения строк
|
||
ztp_templates_tab.check_templates_table_row_highlighting(0)
|
||
ztp_templates_tab.check_templates_table_row_highlighting(rows_count - 1)
|
||
ztp_templates_tab.check_templates_table_row_highlighting(int(rows_count / 2))
|
||
|
||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||
def test_templates_table_scrolling(self, browser: Page) -> None:
|
||
"""Проверка вертикального скроллинга таблицы шаблонов.
|
||
|
||
Проверяет:
|
||
1. Возможность вертикальной прокрутки таблицы
|
||
2. Видимость строк после прокрутки вниз и вверх
|
||
3. Корректность отображения данных после скроллинга
|
||
"""
|
||
|
||
ztp_templates_tab = ZTPTemplatesTab(browser)
|
||
|
||
browser.wait_for_timeout(2000)
|
||
|
||
# Проверка возможности вертикального скроллинга
|
||
is_scrollable = ztp_templates_tab.check_templates_table_vertical_scrolling()
|
||
|
||
if is_scrollable:
|
||
print("Таблица поддерживает вертикальный скроллинг")
|
||
|
||
# Прокрутка вниз
|
||
ztp_templates_tab.scroll_templates_table_down()
|
||
|
||
browser.wait_for_timeout(1000)
|
||
|
||
# Проверка видимости последней строки после прокрутки
|
||
ztp_templates_tab.check_templates_table_last_row_visibility()
|
||
|
||
# Прокрутка вверх
|
||
ztp_templates_tab.scroll_templates_table_up()
|
||
|
||
browser.wait_for_timeout(1000)
|
||
|
||
# Проверка видимости первой строки после прокрутки
|
||
ztp_templates_tab.check_templates_table_first_row_visibility()
|
||
else:
|
||
print("Таблица не поддерживает вертикальный скроллинг")
|
||
|
||
# Проверка видимости первой строки
|
||
ztp_templates_tab.check_templates_table_first_row_visibility()
|
||
|
||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||
def test_templates_modal_window_close_buttons(self, browser: Page) -> None:
|
||
"""Тест закрытия модального окна шаблона разными способами.
|
||
|
||
Проверяет:
|
||
1. Закрытие модального окна через кнопку 'Закрыть' в содержимом окна
|
||
2. Закрытие модального окна через кнопку закрытия в тулбаре
|
||
3. Корректность закрытия окна в обоих случаях
|
||
|
||
Args:
|
||
browser (Page): Экземпляр страницы Playwright для взаимодействия с UI.
|
||
"""
|
||
# Инициализация страницы шаблонов
|
||
ztp_templates_tab = ZTPTemplatesTab(browser)
|
||
|
||
# Проверка наличия таблицы шаблонов
|
||
ztp_templates_tab.should_be_templates_table()
|
||
|
||
# Добавляем задержку для загрузки данных
|
||
browser.wait_for_timeout(2000)
|
||
|
||
# Тест 1: Закрытие через кнопку 'Закрыть' в содержимом окна
|
||
print("Тест 1: Закрытие через кнопку 'Закрыть'")
|
||
title = ztp_templates_tab.open_template_modal_by_index(0)
|
||
browser.wait_for_timeout(1000)
|
||
|
||
# Проверка открытия модального окна
|
||
ztp_templates_tab.should_be_modal_window()
|
||
|
||
# Закрытие через кнопку 'Закрыть'
|
||
ztp_templates_tab.close_modal_window(title)
|
||
|
||
# Проверяем, что модальное окно закрылось
|
||
ztp_templates_tab.should_not_be_modal_window()
|
||
browser.wait_for_timeout(1000)
|
||
|
||
# Тест 2: Закрытие через кнопку в тулбаре
|
||
print("Тест 2: Закрытие через кнопку в тулбаре")
|
||
title = ztp_templates_tab.open_template_modal_by_index(0)
|
||
browser.wait_for_timeout(1000)
|
||
|
||
# Проверка открытия модального окна
|
||
ztp_templates_tab.should_be_modal_window()
|
||
|
||
# Закрытие через кнопку в тулбаре
|
||
ztp_templates_tab.close_modal_window_by_toolbar_button(title)
|
||
|
||
# Проверяем, что модальное окно закрылось
|
||
ztp_templates_tab.should_not_be_modal_window()
|
||
|
||
print("Оба способа закрытия модального окна работают корректно")
|
||
|
||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||
def test_templates_modal_window_content(self, browser: Page) -> None:
|
||
"""Тест содержимого модального окна шаблона.
|
||
|
||
Проверяет:
|
||
1. Открытие модального окна при клике на строку таблицы
|
||
2. Наличие и содержимое модального окна
|
||
3. Наличие тулбара в модальном окне
|
||
4. Проверка кнопки закрытия и её подсказки
|
||
5. Закрытие модального окна
|
||
"""
|
||
# Инициализация страницы шаблонов
|
||
ztp_templates_tab = ZTPTemplatesTab(browser)
|
||
|
||
# Проверка наличия таблицы шаблонов
|
||
ztp_templates_tab.should_be_templates_table()
|
||
|
||
# Добавляем задержку для загрузки данных
|
||
browser.wait_for_timeout(2000)
|
||
|
||
# Открываем модальное окно, кликая на первую строку таблицы
|
||
title = ztp_templates_tab.open_template_modal_by_index(0)
|
||
|
||
# Добавляем задержку для открытия модального окна
|
||
browser.wait_for_timeout(1000)
|
||
|
||
# Проверка открытия модального окна
|
||
ztp_templates_tab.should_be_modal_window()
|
||
|
||
# Проверка содержимого модального окна
|
||
ztp_templates_tab.check_ztp_templates_modal_content(title)
|
||
|
||
# Закрытие модального окна через кнопку 'Закрыть'
|
||
ztp_templates_tab.close_modal_window(title)
|
||
|
||
# Проверяем, что модальное окно закрылось
|
||
ztp_templates_tab.should_not_be_modal_window()
|
||
|
||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||
def test_templates_modal_window_scrolling(self, browser: Page) -> None:
|
||
"""Тест скроллинга модального окна шаблона.
|
||
|
||
Проверяет:
|
||
1. Открытие модального окна при клике на строку таблицы
|
||
2. Возможность вертикального скроллинга содержимого модального окна
|
||
3. Закрытие модального окна
|
||
"""
|
||
|
||
# Инициализация страницы шаблонов
|
||
ztp_templates_tab = ZTPTemplatesTab(browser)
|
||
|
||
# Проверка наличия таблицы шаблонов
|
||
ztp_templates_tab.should_be_templates_table()
|
||
|
||
# Добавляем задержку для загрузки данных
|
||
browser.wait_for_timeout(2000)
|
||
|
||
# Открываем модальное окно, кликая на первую строку таблицы
|
||
title = ztp_templates_tab.open_template_modal_by_index(0)
|
||
|
||
# Добавляем задержку для открытия модального окна
|
||
browser.wait_for_timeout(1000)
|
||
|
||
# Проверка открытия модального окна
|
||
ztp_templates_tab.should_be_modal_window()
|
||
|
||
# Проверка вертикального скроллинга модального окна
|
||
is_scrollable = ztp_templates_tab.check_modal_vertical_scrolling()
|
||
|
||
if is_scrollable:
|
||
print("Модальное окно поддерживает вертикальный скроллинг")
|
||
|
||
# Прокрутка вниз модального окна
|
||
ztp_templates_tab.scroll_modal_down()
|
||
browser.wait_for_timeout(1000)
|
||
|
||
# Прокрутка вверх модального окна
|
||
ztp_templates_tab.scroll_modal_up()
|
||
browser.wait_for_timeout(1000)
|
||
else:
|
||
print("Модальное окно не поддерживает вертикальный скроллинг")
|
||
|
||
# Закрытие модального окна через кнопку 'Закрыть'
|
||
ztp_templates_tab.close_modal_window(title)
|
||
|
||
# Проверяем, что модальное окно закрылось
|
||
ztp_templates_tab.should_not_be_modal_window()
|
||
|
||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||
def test_templates_modal_window_api_data_consistency(self, browser: Page) -> None:
|
||
"""Тест соответствия данных модального окна шаблона данным из API.
|
||
|
||
Проверяет консистентность данных между интерфейсом пользователя и API:
|
||
1. Открытие модального окна просмотра шаблона по клику на строку таблицы
|
||
2. Получение и валидация данных из полей модального окна
|
||
3. Сравнение данных UI с эталонными данными из API запроса
|
||
4. Проверка корректности отображения всех параметров шаблона
|
||
5. Закрытие модального окна после проверки
|
||
|
||
Args:
|
||
browser (Page): Экземпляр страницы Playwright для взаимодействия с UI.
|
||
"""
|
||
# Инициализация страницы шаблонов
|
||
ztp_templates_tab = ZTPTemplatesTab(browser)
|
||
|
||
# Проверка наличия таблицы шаблонов
|
||
ztp_templates_tab.should_be_templates_table()
|
||
|
||
# Добавляем задержку для загрузки данных
|
||
browser.wait_for_timeout(5000)
|
||
|
||
# Открываем модальное окно, кликая на первую строку таблицы и возвращаем имя заголовка
|
||
title = ztp_templates_tab.open_template_modal_by_index(0)
|
||
|
||
# Добавляем задержку для открытия модального окна
|
||
browser.wait_for_timeout(2000)
|
||
|
||
# Проверка открытия модального окна
|
||
ztp_templates_tab.should_be_modal_window()
|
||
|
||
# Проверка соответствия данных модального окна данным из API
|
||
ztp_templates_tab.verify_template_data_with_api(title)
|
||
|
||
# Закрытие модального окна через кнопку закрытия
|
||
ztp_templates_tab.close_modal_window_by_toolbar_button(title)
|
||
|
||
# Проверяем, что модальное окно закрылось
|
||
ztp_templates_tab.should_not_be_modal_window()
|