"""Модуль тестов вкладки настройки Push уведомлений. Содержит тесты для проверки корректности отображения и функциональности элементов страницы настройки Push уведомлений. """ import pytest from playwright.sync_api import Page from pages.login_page import LoginPage from pages.main_page import MainPage from pages.push_notifications_settings_tab import PushNotificationsSettingsTab # @pytest.mark.smoke class TestPushNotificationsSettingsTab: """Набор тестов для вкладки настройки Push уведомлений. Проверяет корректность отображения и функциональность элементов вкладки настройки Push уведомлений. Тесты покрывают следующие сценарии: 1. test_session_settings_tab_content: Тест содержимого вкладки настройки Push уведомлений """ @pytest.fixture(scope="function", autouse=True) def setup(self, browser: Page) -> None: """Фикстура для подготовки тестового окружения. Выполняет: 1. Авторизацию в системе 2. Переход на вкладку настройки Push уведомлений через панель навигации """ # Авторизация в системе login_page = LoginPage(browser) login_page.do_login() # Инициализация главной страницы main_page = MainPage(browser) # Проверка и взаимодействие с элементами навигации main_page.should_be_navigation_panel() main_page.click_main_navigation_panel_item("Настройки") main_page.click_subpanel_item("Уведомления") main_page.click_subpanel_item("Push уведомления") # @pytest.mark.develop def test_push_notifications_settings_tab_content(self, browser: Page) -> None: """Тест содержимого вкладки настройки Push уведомлений. Проверяет: Наличие и корректность элементов интерфейса """ expected_msg_value = "test" # Инициализация вкладки push_notification_settings_tab = PushNotificationsSettingsTab(browser) # Проверка элементов интерфейса push_notification_settings_tab.check_content() msg_value = push_notification_settings_tab.get_message_setting_value() assert msg_value == expected_msg_value, \ f"Actual message field value {msg_value} is not equal expected message field value {expected_msg_value}" # @pytest.mark.develop def test_send_push_notification(self, browser: Page) -> None: """Тест содержимого вкладки настройки Push уведомлений. Проверяет: Заполнение полей и отправку Push уведомления """ receivers = ["admin", "manager", "operator"] # Инициализация вкладки push_notification_settings_tab = PushNotificationsSettingsTab(browser) expected_msg_value = "My test message" push_notification_settings_tab.input_message(expected_msg_value) msg_value = push_notification_settings_tab.get_message_setting_value() assert msg_value == expected_msg_value, \ f"Actual message field value {msg_value} is not equal expected message field value {expected_msg_value}" push_notification_settings_tab.select_users(receivers) sep = ", " expected_users = sep.join(receivers) selected_users = push_notification_settings_tab.get_users_setting_value() assert selected_users == expected_users, \ f"Actual users field value {selected_users} is not equal expected users field value {expected_users}" push_notification_settings_tab.click_submit_button() push_notification_settings_tab.should_be_success_alert() # @pytest.mark.develop def test_users_setting_input(self, browser: Page) -> None: """Тест содержимого вкладки настройки Push уведомлений. Проверяет: Заполнение и очистку поля 'Пользователи' """ receivers = ["manager", "operator", "collector"] sep = ", " # Инициализация вкладки push_notification_settings_tab = PushNotificationsSettingsTab(browser) push_notification_settings_tab.select_users(receivers) expected_users = sep.join(receivers) selected_users = push_notification_settings_tab.get_users_setting_value() assert selected_users == expected_users, \ f"Actual users field value {selected_users} is not equal expected users field value {expected_users}" receivers.remove("collector") push_notification_settings_tab.deselect_users(["collector"]) expected_users = sep.join(receivers) selected_users = push_notification_settings_tab.get_users_setting_value() assert selected_users == expected_users, \ f"Actual users field value {selected_users} is not equal expected users field value {expected_users}" push_notification_settings_tab.clear_users_setting_value() selected_users = push_notification_settings_tab.get_users_setting_value() assert len(selected_users) == 0, "There should be no selected users"