"""Модуль тестов вкладки 'Сеансы/Настройки'.

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

import pytest
from playwright.sync_api import Page
from pages.main_page import MainPage
from pages.login_page import LoginPage
from pages.session_settings_tab import SessionSettingsTab

class TestSessionSettingsForm:
    """Класс тестов для проверки таблицы статусов сервисов."""

    @pytest.fixture(scope="function", autouse=True)
    def setup(self, browser: Page) -> None:
        """Настраивает тестовое окружение перед каждым тестом.

        Args:
            browser: Экземпляр страницы Playwright.
        """

        lp = LoginPage(browser)
        lp.do_login()

        mp = MainPage(browser)
        mp.should_be_navigation_panel()
        mp.click_main_navigation_panel_item("Настройки")
        mp.click_subpanel_item("Обслуживание и диагностика")
        mp.click_subpanel_item("Сеансы")
        mp.click_subpanel_item("Настройки", parent="Сеансы")

    def test_scrolling(self, browser: Page) -> None:
        """Проверяет прокрутку таблицы статусов сервисов.

        Args:
            browser: Экземпляр страницы Playwright.

        Steps:
            1. Проверяет возможность вертикальной прокрутки
            2. Прокручивает вниз и проверяет видимость последней строки
            3. Прокручивает вверх и проверяет видимость тулбара формы редактирования настроек
        """

        # Инициализация страницы сеансов
        sst = SessionSettingsTab(browser)

        # Проверка вертикального скроллинга
        is_scrollable_vertically = sst.check_vertical_scrolling()
        assert is_scrollable_vertically, "Should be vertical scrolling"

        sst.scroll_down()
        sst.get_label_by_name('$collector').check_visibility("Text '$collector' should be visible")
        sst.wait_for_timeout(3000)

        sst.scroll_up()
        sst.should_be_form_toolbar()
        sst.wait_for_timeout(2000)
