"""Модуль тестов таблицы статусов сервисов.

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

import pytest
from playwright.sync_api import Page
from pages.service_status_tab import ServiceStatusTab
from pages.main_page import MainPage
from pages.login_page import LoginPage

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

    @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("Статус обслуживания")

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

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

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

        sst = ServiceStatusTab(browser)

        sst.should_be_services_table()
        sst.check_services_table_content()

        is_scrollable_vertically = sst.check_services_table_verticall_scrolling()
        assert is_scrollable_vertically, "Should be vertical scrolling"

        sst.scroll_services_table_down()
        sst.check_services_table_last_row_visibility()
        sst.wait_for_timeout(3000)

        sst.scroll_services_table_up()
        sst.check_services_table_first_row_visibility()
        sst.wait_for_timeout(2000)
