e-nms_qa_automation/tests/e2e/test_templates_tab.py

256 lines
12 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.

"""Модуль тестов вкладки 'Шаблоны'.
Содержит тесты для проверки функциональности
работы с шаблонами.
"""
import pytest
from playwright.sync_api import Page
from pages.login_page import LoginPage
from pages.main_page import MainPage
from pages.templates_tab import TemplatesTab
# @pytest.mark.smoke
class TestTemplatesTab:
"""Набор тестов для вкладки 'Шаблоны'.
Проверяет корректность отображения и функциональность элементов вкладки Шаблоны.
Тесты покрывают следующие сценарии:
1. test_templates_tab_content - Проверка содержимого вкладки
2. test_templates_table_row_highlighting - Проверка выделения строк в таблице
3. test_templates_table_scrolling - Проверка вертикального скроллинга таблицы
4. test_templates_modal_window_content - Проверка содержимого модального окна
5. test_templates_modal_window_scrolling - Проверка скроллинга модального окна
6. test_templates_modal_window_api_data_consistency - Проверка соответствия данных API
"""
@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("Шаблоны")
# @pytest.mark.develop
def test_templates_tab_content(self, browser: Page) -> None:
"""Тест содержимого вкладка 'Шаблоны'.
Проверяет:
1. Наличие и корректность тулбара
2. Наличие таблицы шаблонов
3. Соответствие содержимого таблицы
"""
# Инициализация страницы сеансов
templates_tab = TemplatesTab(browser)
# Проверка тулбара вкладки
templates_tab.should_be_toolbar()
# Проверка наличия таблицы шаблонов
templates_tab.should_be_templates_table()
browser.wait_for_timeout(5000)
# Проверка содержимого таблицы шаблонов
templates_tab.check_templates_table_content()
def test_templates_table_row_highlighting(self, browser: Page) -> None:
"""Проверка выделения строк в таблице шаблонов.
Проверяет корректность выделения строк при клике на различные позиции:
1. Первая строка
2. Последняя строка
3. Строка в середине таблицы
"""
templates_tab = TemplatesTab(browser)
# Проверка тулбара вкладки
templates_tab.should_be_toolbar()
# Проверка наличия таблицы шаблонов
templates_tab.should_be_templates_table()
# Получение количества строк в таблице
rows_count = templates_tab.get_rows_count()
# Проверка выделения строк
templates_tab.check_templates_table_row_highlighting(0)
templates_tab.check_templates_table_row_highlighting(rows_count - 1)
templates_tab.check_templates_table_row_highlighting(int(rows_count / 2))
def test_templates_table_scrolling(self, browser: Page) -> None:
"""Проверка вертикального скроллинга таблицы шаблонов.
Проверяет:
1. Возможность вертикальной прокрутки таблицы
2. Видимость строк после прокрутки вниз и вверх
3. Корректность отображения данных после скроллинга
"""
templates_tab = TemplatesTab(browser)
browser.wait_for_timeout(2000)
# Проверка возможности вертикального скроллинга
is_scrollable = templates_tab.check_templates_table_vertical_scrolling()
if is_scrollable:
print("Таблица поддерживает вертикальный скроллинг")
# Прокрутка вниз
templates_tab.scroll_templates_table_down()
browser.wait_for_timeout(1000)
# Проверка видимости последней строки после прокрутки
templates_tab.check_templates_table_last_row_visibility()
# Прокрутка вверх
templates_tab.scroll_templates_table_up()
browser.wait_for_timeout(1000)
# Проверка видимости первой строки после прокрутки
templates_tab.check_templates_table_first_row_visibility()
else:
print("Таблица не поддерживает вертикальный скроллинг")
# Проверка видимости первой строки
templates_tab.check_templates_table_first_row_visibility()
def test_templates_modal_window_content(self, browser: Page) -> None:
"""Тест содержимого модального окна шаблона.
Проверяет:
1. Открытие модального окна при клике на строку таблицы
2. Наличие и содержимое модального окна
3. Наличие тулбара в модальном окне
4. Проверка кнопки закрытия и её подсказки
5. Закрытие модального окна
"""
# Инициализация страницы шаблонов
templates_tab = TemplatesTab(browser)
# Проверка наличия таблицы шаблонов
templates_tab.should_be_templates_table()
# Добавляем задержку для загрузки данных
browser.wait_for_timeout(2000)
# Открываем модальное окно, кликая на первую строку таблицы
title = templates_tab.open_template_modal_by_index(0)
# Добавляем задержку для открытия модального окна
browser.wait_for_timeout(1000)
# Проверка открытия модального окна
templates_tab.should_be_modal_window()
# Проверка содержимого модального окна
templates_tab.check_templates_modal_content(title)
# Закрытие модального окна через кнопку закрытия
templates_tab.close_modal_window_by_toolbar_button(title)
# Проверяем, что модальное окно закрылось
templates_tab.should_not_be_modal_window()
def test_templates_modal_window_scrolling(self, browser: Page) -> None:
"""Тест скроллинга модального окна шаблона.
Проверяет:
1. Открытие модального окна при клике на строку таблицы
2. Возможность вертикального скроллинга содержимого модального окна
3. Закрытие модального окна
"""
# Инициализация страницы шаблонов
templates_tab = TemplatesTab(browser)
# Проверка наличия таблицы шаблонов
templates_tab.should_be_templates_table()
# Добавляем задержку для загрузки данных
browser.wait_for_timeout(2000)
# Открываем модальное окно, кликая на первую строку таблицы
title = templates_tab.open_template_modal_by_index(0)
# Добавляем задержку для открытия модального окна
browser.wait_for_timeout(1000)
# Проверка открытия модального окна
templates_tab.should_be_modal_window()
# Проверка вертикального скроллинга модального окна
is_scrollable = templates_tab.check_modal_vertical_scrolling()
if is_scrollable:
print("Модальное окно поддерживает вертикальный скроллинг")
# Прокрутка вниз
templates_tab.scroll_modal_down()
browser.wait_for_timeout(1000)
# Прокрутка вверх
templates_tab.scroll_modal_up()
browser.wait_for_timeout(1000)
else:
print("Модальное окно не поддерживает вертикальный скроллинг")
# Закрытие модального окна через кнопку закрытия
templates_tab.close_modal_window_by_toolbar_button(title)
# Проверяем, что модальное окно закрылось
templates_tab.should_not_be_modal_window()
def test_templates_modal_window_api_data_consistency(self, browser: Page) -> None:
"""Тест соответствия данных модального окна данным из API.
Проверяет:
1. Открытие модального окна при клике на строку таблицы
2. Соответствие JSON конфигурационных данных в модальном окне данным из API
3. Закрытие модального окна
"""
# Инициализация страницы шаблонов
templates_tab = TemplatesTab(browser)
# Проверка наличия таблицы шаблонов
templates_tab.should_be_templates_table()
# Добавляем задержку для загрузки данных
browser.wait_for_timeout(5000)
# Открываем модальное окно, кликая на первую строку таблицы
title = templates_tab.open_template_modal_by_index(0)
# Добавляем задержку для открытия модального окна
browser.wait_for_timeout(2000)
# Проверка открытия модального окна
templates_tab.should_be_modal_window()
# Проверка соответствия данных модального окна данным из API
templates_tab.verify_json_container_content(title)
# Закрытие модального окна через кнопку закрытия
templates_tab.close_modal_window_by_toolbar_button(title)
# Проверяем, что модальное окно закрылось
templates_tab.should_not_be_modal_window()