"""Модуль тестов панели навигации.

Содержит тесты для проверки функциональности и прокрутки
панели навигации в приложении.
"""

from playwright.sync_api import Page
from pages.main_page import MainPage
from pages.login_page import LoginPage

# Запуск с viewport: {'width': 300, 'height': 420}

# @pytest.mark.smoke
class TestNavigationPanel:
    """Класс тестов для проверки панели навигации.

    Атрибуты:
        browser: Фикстура для работы с браузером.
    """

    def test_verticall_scrolling(self, browser: Page):
        """Проверяет вертикальную прокрутку панели навигации.

        Args:
            browser: Фикстура для работы с браузером.

        Raises:
            AssertionError: Если панель не поддерживает прокрутку.
        """

        # Действия:
        lp = LoginPage(browser)
        lp.do_login()

        # Мы на главной странице
        mp = MainPage(browser)

        # Проверки:
        # Проверяем наличие панели навигации
        mp.should_be_navigation_panel()

        # Открываем все пункты панели
        mp.click_main_navigation_panel_item("Настройки")
        mp.expand_navigation_subpanel()

        mp.click_main_navigation_panel_item("Объекты")
        mp.wait_for_timeout(300)
        mp.expand_navigation_subpanel()

        # Проверяем возможность вертикальной прокрутки
        is_scrollable = mp.check_navigation_panel_verticall_scrolling()
        assert is_scrollable, "Should be vertical scrolling"

        # Действия:
        # Прокручиваем вверх и проверяем видимость элемента
        mp.scroll_navigation_panel_up()
        mp.check_navigation_panel_item_visibility("Панель приборов")
        mp.wait_for_timeout(3000)

        # Прокручиваем вниз и проверяем видимость элемента Настройки/ZTP/Шаблоны
        mp.scroll_navigation_panel_down()
        mp.check_navigation_panel_item_visibility("Шаблоны_2")
        mp.wait_for_timeout(2000)
