Добавлено модальное окно посылки тестовой СМС
parent
29d8aa8354
commit
46a882d2c1
|
|
@ -0,0 +1,109 @@
|
||||||
|
"""Модуль modal_send_test_sms содержит класс для работы с модальным окном для посылки тестового СМС на
|
||||||
|
базе настроек вкладки 'Уведомления/СМС'.
|
||||||
|
|
||||||
|
Класс SendTestSMSModalWindow наследует базовый функционал ModalWindowComponent
|
||||||
|
и реализует методы просмотра модального окна отображения задачи.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from playwright.sync_api import Page, expect
|
||||||
|
from tools.logger import get_logger
|
||||||
|
from locators.modal_window_locators import ModalWindowLocators
|
||||||
|
from elements.text_input_element import TextInput
|
||||||
|
from components.modal_window_component import ModalWindowComponent
|
||||||
|
# from components.alert_component import AlertComponent
|
||||||
|
|
||||||
|
logger = get_logger("SEND_TEST_SMS_MODAL_WINDOW")
|
||||||
|
|
||||||
|
|
||||||
|
class SendTestSMSModalWindow(ModalWindowComponent):
|
||||||
|
"""Модальное окно для посылки тестового СМС.
|
||||||
|
|
||||||
|
Наследует ModalWindowComponent и добавляет функционал для:
|
||||||
|
1. Инициализации модального окна
|
||||||
|
2. Закрытия модального окна через тулбар
|
||||||
|
3. Проверки содержимого модального окна
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, page: Page):
|
||||||
|
"""Инициализирует элементы формы модального окна отображения задачи."""
|
||||||
|
super().__init__(page)
|
||||||
|
|
||||||
|
|
||||||
|
window_locator = page.locator(ModalWindowLocators.MODAL_WINDOW)
|
||||||
|
|
||||||
|
self.window_title_locator = window_locator.locator("//div[@class='v-toolbar__title']")
|
||||||
|
self.add_toolbar_title("Проверка sms уведомления")
|
||||||
|
|
||||||
|
# Настройка кнопки закрытия
|
||||||
|
toolbar_button_close_locator = window_locator.locator("//button[@data-testid='SMS_TEST_CARD__btn__close']")
|
||||||
|
self.add_toolbar_button(toolbar_button_close_locator, "close")
|
||||||
|
|
||||||
|
# Поле ввода номера телефона
|
||||||
|
loc = window_locator.locator("//input[@data-testid='SMS_TEST_CARD__text-field_integer__sms_phone']")
|
||||||
|
sms_phone_input = TextInput(page, loc, "sms_phone_input")
|
||||||
|
self.add_content_item("sms_phone_input", sms_phone_input)
|
||||||
|
|
||||||
|
# Добавление кнопок действий
|
||||||
|
locator_button_test = window_locator.locator("//button[@data-testid='SMS_TEST_CARD__btn__testSmsSend']")
|
||||||
|
self.add_button(locator_button_test, "test_button")
|
||||||
|
|
||||||
|
# self.alert = AlertComponent(page)
|
||||||
|
|
||||||
|
# Действия:
|
||||||
|
def close_by_toolbar_button(self):
|
||||||
|
"""Закрывает окно кнопкой на тулбаре."""
|
||||||
|
|
||||||
|
self.click_toolbar_close_button()
|
||||||
|
|
||||||
|
def click_test_button(self):
|
||||||
|
"""Отсылка sms по указанному номеру телефона нажатием кнопки 'Тест'."""
|
||||||
|
|
||||||
|
close_button = self.get_button_by_name("test_button")
|
||||||
|
close_button.click()
|
||||||
|
|
||||||
|
def get_sms_phone(self) -> str:
|
||||||
|
"""Возвращает текущее значение поля 'Номер для СМС'."""
|
||||||
|
|
||||||
|
sms_phone_input_field = self.get_content_item("sms_phone_input")
|
||||||
|
return sms_phone_input_field.get_input_value()
|
||||||
|
|
||||||
|
def input_sms_phone(self, sms_phone: str) -> None:
|
||||||
|
"""Заполнение поля 'Номер для СМС'."""
|
||||||
|
|
||||||
|
sms_phone_input_field = self.get_content_item("sms_phone_input")
|
||||||
|
sms_phone_input_field.clear()
|
||||||
|
sms_phone_input_field.input_value(sms_phone)
|
||||||
|
|
||||||
|
# Проверки:
|
||||||
|
def check_content(self) -> None:
|
||||||
|
"""Проверяет наличие элементов окна.
|
||||||
|
"""
|
||||||
|
|
||||||
|
self.check_by_window_title()
|
||||||
|
self.check_toolbar_button_visibility("close")
|
||||||
|
self.check_toolbar_button_tooltip("close", "Закрыть")
|
||||||
|
|
||||||
|
sms_phone_input_field = self.get_content_item("sms_phone_input")
|
||||||
|
sms_phone_input_field.check_visibility("SMS phone input field is missing")
|
||||||
|
sms_phone_input_field.check_editable_input("SMS phone input field should be editable")
|
||||||
|
|
||||||
|
loc = self.page.locator(ModalWindowLocators.MODAL_WINDOW). \
|
||||||
|
locator("//input[@data-testid='SMS_TEST_CARD__text-field_integer__sms_phone']")
|
||||||
|
expect(loc).to_have_attribute("aria-label", "Номер для СМС")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
self.check_button_visibility("test_button")
|
||||||
|
|
||||||
|
# def should_be_success_alert(self) -> None:
|
||||||
|
# """Проверяет наличие сообщения об успешной отправке тестового сообщения.
|
||||||
|
|
||||||
|
# Raises:
|
||||||
|
# AssertionError: Если тулбар отсутствует.
|
||||||
|
# """
|
||||||
|
|
||||||
|
# alert_type = self.alert.get_alert_type()
|
||||||
|
# assert alert_type == "success", f"Expected success alert, but got {alert_type} alert"
|
||||||
|
|
||||||
|
# self.alert.check_alert_presence('\nТестовое сообщение\nотправлено\n')
|
||||||
|
# self.alert.check_alert_absence('\nТестовое сообщение\nотправлено\n')
|
||||||
|
|
@ -11,8 +11,8 @@ from locators.settings_form_locators import SettingsFormLocators
|
||||||
from elements.text_input_element import TextInput
|
from elements.text_input_element import TextInput
|
||||||
from elements.icon_element import Icon
|
from elements.icon_element import Icon
|
||||||
from components.toolbar_component import ToolbarComponent
|
from components.toolbar_component import ToolbarComponent
|
||||||
# from components.alert_component import AlertComponent
|
|
||||||
from components_derived.settings_form_component import SettingsFormComponent
|
from components_derived.settings_form_component import SettingsFormComponent
|
||||||
|
from components_derived.modal_send_test_sms import SendTestSMSModalWindow
|
||||||
from pages.base_page import BasePage
|
from pages.base_page import BasePage
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -70,9 +70,6 @@ class SMSNotificationsSettingsTab(BasePage):
|
||||||
self.settings_form.add_tooltip_button(page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
self.settings_form.add_tooltip_button(page.locator(SettingsFormLocators.SETTTINGS_FORM_SCROLL_CONTAINER).\
|
||||||
get_by_role("button", name='Тест'),
|
get_by_role("button", name='Тест'),
|
||||||
"test_button")
|
"test_button")
|
||||||
|
|
||||||
# self.alert = AlertComponent(page)
|
|
||||||
|
|
||||||
# Действия:
|
# Действия:
|
||||||
def click_cancel_button(self) -> None:
|
def click_cancel_button(self) -> None:
|
||||||
"""Нажатие кнопки 'Отменить' на тулбаре."""
|
"""Нажатие кнопки 'Отменить' на тулбаре."""
|
||||||
|
|
@ -97,11 +94,12 @@ class SMSNotificationsSettingsTab(BasePage):
|
||||||
|
|
||||||
self.settings_form.get_content_item("password_hidden_icon").click()
|
self.settings_form.get_content_item("password_hidden_icon").click()
|
||||||
|
|
||||||
def click_test_button(self) -> None:
|
def click_test_button(self) -> SendTestSMSModalWindow:
|
||||||
"""Нажатие кнопки 'Тест' в форме ввода настроек."""
|
"""Нажатие кнопки 'Тест' в форме ввода настроек."""
|
||||||
|
|
||||||
self.settings_form.check_button_visibility("test_button")
|
self.settings_form.check_button_visibility("test_button")
|
||||||
self.settings_form.get_button_by_name("test_button").click()
|
self.settings_form.get_button_by_name("test_button").click()
|
||||||
|
return SendTestSMSModalWindow(self.page)
|
||||||
|
|
||||||
def get_ip_setting_value(self) -> str:
|
def get_ip_setting_value(self) -> str:
|
||||||
"""Возвращает текущее значение поля настроек 'IP'.
|
"""Возвращает текущее значение поля настроек 'IP'.
|
||||||
|
|
@ -214,17 +212,3 @@ class SMSNotificationsSettingsTab(BasePage):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.settings_form.check_button_visibility("test_button")
|
self.settings_form.check_button_visibility("test_button")
|
||||||
|
|
||||||
|
|
||||||
# def should_be_success_alert(self) -> None:
|
|
||||||
# """Проверяет наличие сообщения об успешной отправке СМС-уведомления.
|
|
||||||
|
|
||||||
# Raises:
|
|
||||||
# AssertionError: Если тулбар отсутствует.
|
|
||||||
# """
|
|
||||||
|
|
||||||
# alert_type = self.alert.get_alert_type()
|
|
||||||
# assert alert_type == "success", f"Expected success alert, but got {alert_type} alert"
|
|
||||||
|
|
||||||
# self.alert.check_alert_presence('\nСМС-уведомление\nуспешно отправлено\n')
|
|
||||||
# self.alert.check_alert_absence('\nСМС-уведомление\nуспешно отправлено\n')
|
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,31 @@ class TestSMSNotificationsSettingsTab:
|
||||||
# Проверка элементов интерфейса
|
# Проверка элементов интерфейса
|
||||||
sms_notification_settings_tab.check_content()
|
sms_notification_settings_tab.check_content()
|
||||||
|
|
||||||
@pytest.mark.develop
|
# @pytest.mark.develop
|
||||||
|
def test_send_sms_window_content(self, browser: Page) -> None:
|
||||||
|
"""Тест содержимого вкладки настройки СМС уведомлений.
|
||||||
|
|
||||||
|
Проверяет:
|
||||||
|
Заполнение наличие и заполнение поля ввода номера
|
||||||
|
"""
|
||||||
|
|
||||||
|
expected_sms_phone = "7(111) 111-11-11"
|
||||||
|
|
||||||
|
# Инициализация вкладки
|
||||||
|
sms_notification_settings_tab = SMSNotificationsSettingsTab(browser)
|
||||||
|
sms_notification_settings_tab.should_be_test_button()
|
||||||
|
|
||||||
|
send_sms_window = sms_notification_settings_tab.click_test_button()
|
||||||
|
send_sms_window.check_content()
|
||||||
|
|
||||||
|
send_sms_window.input_sms_phone(expected_sms_phone)
|
||||||
|
actual_sms_phone = send_sms_window.get_sms_phone()
|
||||||
|
assert expected_sms_phone == actual_sms_phone, \
|
||||||
|
f"Expected sms phone field value {expected_sms_phone} is not equal actual {actual_sms_phone}"
|
||||||
|
|
||||||
|
send_sms_window.close_by_toolbar_button()
|
||||||
|
|
||||||
|
# @pytest.mark.develop
|
||||||
# TO-DO: rewrite tescase after feature release
|
# TO-DO: rewrite tescase after feature release
|
||||||
def test_send_sms_notification(self, browser: Page) -> None:
|
def test_send_sms_notification(self, browser: Page) -> None:
|
||||||
"""Тест содержимого вкладки настройки СМС уведомлений.
|
"""Тест содержимого вкладки настройки СМС уведомлений.
|
||||||
|
|
@ -63,6 +87,7 @@ class TestSMSNotificationsSettingsTab:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
field_values = ["8.8.8.8", "testadmin", "test12345678"]
|
field_values = ["8.8.8.8", "testadmin", "test12345678"]
|
||||||
|
# sms_phone = "7(910)123-34-40"
|
||||||
|
|
||||||
# Инициализация вкладки
|
# Инициализация вкладки
|
||||||
sms_notification_settings_tab = SMSNotificationsSettingsTab(browser)
|
sms_notification_settings_tab = SMSNotificationsSettingsTab(browser)
|
||||||
|
|
@ -93,5 +118,7 @@ class TestSMSNotificationsSettingsTab:
|
||||||
|
|
||||||
sms_notification_settings_tab.should_be_test_button()
|
sms_notification_settings_tab.should_be_test_button()
|
||||||
|
|
||||||
#sms_notification_settings_tab.click_test_button()
|
# send_sms_window = sms_notification_settings_tab.click_test_button()
|
||||||
# sms_notification_settings_tab.should_be_success_alert()
|
# send_sms_window.input_sms_phone(sms_phone)
|
||||||
|
|
||||||
|
# send_sms_window.should_be_success_alert()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue