"""Модуль тестов вкладки 'Статус обслуживания'. Содержит тесты для проверки отображения и функциональности элементов вкладки статусов сервисов. """ 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 # pytest.skip("пропуск всех тестов в этом файле в связи с переходом на новый виджет", allow_module_level=True) # @pytest.mark.smoke class TestServiceStatusTab: """Класс тестов для проверки вкладки 'Статус обслуживания'. Тесты покрывают следующие сценарии: 1. test_service_status_tab_content: Проверяет содержимое вкладки 'Статус обслуживания' 2. test_service_status_table_row_highlighting: Проверяет выделение строк в таблице сервисов 3. test_service_status_tab_resize: Проверяет возможность расширения/сжатия рабочей области вкладки 4. test_service_status_tab_reload: Проверяет возможность обновления контента после нажатия кнопки 'Обновить' """ @pytest.fixture(scope="function", autouse=True) def setup(self, browser: Page): """Подготавливает тестовое окружение. 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("Статус обслуживания") @pytest.mark.develop def test_service_status_tab_content(self, browser: Page): """Проверяет содержимое вкладки 'Статус обслуживания'. Args: browser: Экземпляр страницы Playwright. """ sst = ServiceStatusTab(browser) # Проверка наличия заголовка вкладки sst.should_be_tab_title() # Проверка наличия кнопки 'Обновить' sst.should_be_update_button() # Проверка наличия кнопки расширения/сжатия рабочей области вкладки sst.should_be_expand_work_area_button() # Проверка наличия таблицы статусов сервисов sst.should_be_services_table() # Ожидание перед проверкой содержимого таблицы сервисов browser.wait_for_timeout(1000) # Проверка содержимого таблицы сервисов sst.check_services_table_content() # @pytest.mark.develop def test_service_status_table_row_highlighting(self, browser: Page): """Проверяет выделение строк в таблице сервисов. Args: browser: Экземпляр страницы Playwright. """ sst = ServiceStatusTab(browser) # Проверка наличия таблицы статусов сервисов sst.should_be_services_table() # Получение количества строк в таблице rows_count = sst.get_rows_count() # Проверка выделения строк sst.check_services_table_row_highlighting(0) sst.check_services_table_row_highlighting(rows_count - 1) sst.check_services_table_row_highlighting(int(rows_count / 2)) # @pytest.mark.develop def test_service_status_tab_resize(self, browser: Page): """Проверяет возможность расширения/сжатия рабочей области вкладки. Args: browser: Экземпляр страницы Playwright. """ sst = ServiceStatusTab(browser) # Проверка наличия таблицы статусов сервисов sst.should_be_services_table() # Проверка наличия кнопки расширения/сжатия рабочей области вкладки sst.should_be_expand_work_area_button() # Проверка возможности расширения рабочей области вкладки sst.expand_tab() # Получение количества строк в таблице rows_count = sst.get_rows_count() # Проверка выделения строк sst.check_services_table_row_highlighting(rows_count - 1) # Проверка возможности сжатия рабочей области вкладки sst.reduce_tab() # Проверка выделения строк sst.check_services_table_row_highlighting(0) # @pytest.mark.develop def test_service_status_tab_reload(self, browser: Page): """Проверяет возможность обновления контента после нажатия кнопки 'Обновить'. Args: browser: Экземпляр страницы Playwright. """ sst = ServiceStatusTab(browser) # Проверка наличия кнопки 'Обновить' sst.should_be_update_button() # Проверка наличия таблицы статусов сервисов sst.should_be_services_table() # Сохраняем значения столбца 'Время создания' creation_time_col_before = sst.get_column(4) timestamps_before = sst.datetime2timestamp(creation_time_col_before) # Нажатие на кнопку 'Обновить' sst.click_update_button() browser.wait_for_load_state('domcontentloaded') # Проверка наличия таблицы статусов сервисов sst.should_be_services_table() # Ожидание перед проверкой содержимого таблицы сервисов browser.wait_for_timeout(1000) # Сохраняем значения столбца 'Время создания' creation_time_col_after = sst.get_column(4) timestamps_after = sst.datetime2timestamp(creation_time_col_after) assert len(timestamps_before) == len(timestamps_after), "Bad tab reload" for i in range(len(timestamps_before)): assert timestamps_before[i] < timestamps_after[i], "Date value after reload should be must be more recent"