"""Модуль тестов вкладки 'Статус компонентов'. Содержит тесты для проверки отображения и функциональности элементов вкладки статусов сервисов. """ 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_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(int(rows_count / 2)) sst.check_services_table_row_highlighting(rows_count - 1) @pytest.mark.develop def test_service_status_tab_resize(self, browser: Page): """Проверяет возможность расширения/сжатия рабочей области вкладки. Args: browser: Экземпляр страницы Playwright. """ mp = MainPage(browser) sst = ServiceStatusTab(browser) # Проверка наличия таблицы статусов сервисов sst.should_be_services_table() # Получение количества строк в таблице rows_count_before = sst.get_rows_count() # Проверка наличия кнопки расширения рабочей области вкладки mp.should_be_expand_workarea_button() # Проверка возможности расширения рабочей области вкладки widht_before = sst.get_workarea_widht() mp.click_expand_workarea_button() browser.wait_for_timeout(200) widht_after_expand = sst.get_workarea_widht() assert widht_before < widht_after_expand,"Services statuses tab should be expanded" # Получение количества строк в таблице rows_count_after_expand = sst.get_rows_count() assert rows_count_before == rows_count_after_expand, "Bad workarea expand action" # Проверка возможности сжатия рабочей области вкладки mp.should_be_reduce_workarea_button() mp.click_reduce_workarea_button() browser.wait_for_timeout(200) widht_after_reduce = sst.get_workarea_widht() assert widht_after_expand > widht_after_reduce,"Services statuses tab should be reduced" # Получение количества строк в таблице rows_count_after_reduce = sst.get_rows_count() assert rows_count_after_reduce == rows_count_after_expand, "Bad workarea reduce action" # @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"