e-nms_qa_automation/tests/e2e/test_ztp_templates_tab.py

327 lines
17 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.
Содержит тесты для проверки функциональности
работы с шаблонами.
"""
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()