e-nms_qa_automation/tests/components/unit_tests/test_date_input.py

286 lines
11 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"""Модуль тестов для проверки операций с компонентом ввода даты.
Содержит тесты для для проверки операций с компонентом ввода даты.
"""
import pytest
from playwright.sync_api import Page
from pages.main_page import MainPage
from pages.login_page import LoginPage
# @pytest.mark.smoke
class TestDateInputComponent:
"""Класс тестов для проверки операций с компонентом ввода даты.
Атрибуты:
browser: Фикстура для работы с браузером.
"""
# @pytest.mark.develop
def test_date_input_content(self, browser: Page) -> None:
"""Проверяет содержимое компонента ввода даты.
put
Args:
browser: Экземпляр страницы Playwright.
"""
lp = LoginPage(browser)
lp.do_login()
mp = MainPage(browser)
mp.should_be_event_panel()
system_log_events_container = mp.click_events_panel_system_log_tab()
sidebar_filter = system_log_events_container.click_filter_button()
browser.wait_for_timeout(500)
date_input = sidebar_filter.get_start_time_filter()
date_input.check_content("Дата начала")
# @pytest.mark.develop
def test_date_input_by_text_positive(self, browser: Page) -> None:
"""Проверяет возможность задания даты с помощью текстового ввода для корректного входного значения.
Args:
browser: Экземпляр страницы Playwright.
"""
lp = LoginPage(browser)
lp.do_login()
mp = MainPage(browser)
mp.should_be_event_panel()
system_log_events_container = mp.click_events_panel_system_log_tab()
sidebar_filter = system_log_events_container.click_filter_button()
browser.wait_for_timeout(500)
date_input = sidebar_filter.get_start_time_filter()
date_input.click_switch_mode_button()
browser.wait_for_timeout(500)
if date_input.is_text_input_mode():
# выбираем 15 января 2024, проверяем результат
expected_date = "15.01.2024"
date_input.input_date(expected_date)
browser.wait_for_timeout(300)
actual_date = date_input.get_date_field_value()
assert expected_date == actual_date, \
f"Expected date {expected_date} is not equal actual date {actual_date}"
else:
assert False, "Should be text date input mode"
# @pytest.mark.develop
def test_date_input_by_text_negative(self, browser: Page) -> None:
"""Проверяет возможность задания даты с помощью текстового ввода для некорректных входных значений.
Args:
browser: Экземпляр страницы Playwright.
"""
lp = LoginPage(browser)
lp.do_login()
mp = MainPage(browser)
mp.should_be_event_panel()
system_log_events_container = mp.click_events_panel_system_log_tab()
sidebar_filter = system_log_events_container.click_filter_button()
browser.wait_for_timeout(500)
date_input = sidebar_filter.get_start_time_filter()
date_input.click_switch_mode_button()
browser.wait_for_timeout(500)
if date_input.is_text_input_mode():
try:
date_input.input_date("1.01.2020")
except AssertionError as e:
actual_err = f"{e}"
expected_err = "Incorrect day format: should be 'dd.mm.yyyy'"
assert expected_err == actual_err, \
f"Expected error message: '{expected_err}' is nor equal actual error message: '{actual_err}'"
try:
date_input.input_date("ff.01.2020")
except AssertionError as e:
actual_err = f"{e}"
expected_err = "Incorrect day value ff for selection"
assert expected_err == actual_err, \
f"Expected error message: '{expected_err}' is nor equal actual error message: '{actual_err}'"
try:
date_input.input_date("01.1.2020")
except AssertionError as e:
actual_err = f"{e}"
expected_err = "Incorrect month format: should be 'dd.mm.yyyy'"
assert expected_err == actual_err, \
f"Expected error message: '{expected_err}' is nor equal actual error message: '{actual_err}'"
try:
date_input.input_date("01.o1.2020")
except AssertionError as e:
actual_err = f"{e}"
expected_err = "Incorrect month value o1 for selection"
assert expected_err == actual_err, \
f"Expected error message: '{expected_err}' is nor equal actual error message: '{actual_err}'"
try:
date_input.input_date("01.01.20")
except AssertionError as e:
actual_err = f"{e}"
expected_err = "Incorrect year format: should be 'dd.mm.yyyy'"
assert expected_err == actual_err, \
f"Expected error message: '{expected_err}' is nor equal actual error message: '{actual_err}'"
try:
date_input.input_date("01.01.2o2o")
except AssertionError as e:
actual_err = f"{e}"
expected_err = "Incorrect year value 2o2o for selection"
assert expected_err == actual_err, \
f"Expected error message: '{expected_err}' is nor equal actual error message: '{actual_err}'"
else:
assert False, "Should be text date input mode"
# @pytest.mark.develop
def test_time_input_after_text_positive(self, browser: Page) -> None:
"""Проверяет возможность задания времени для корректного входного значения.
Args:
browser: Экземпляр страницы Playwright.
"""
lp = LoginPage(browser)
lp.do_login()
mp = MainPage(browser)
mp.should_be_event_panel()
system_log_events_container = mp.click_events_panel_system_log_tab()
sidebar_filter = system_log_events_container.click_filter_button()
browser.wait_for_timeout(500)
date_input = sidebar_filter.get_start_time_filter()
date_input.click_switch_mode_button()
browser.wait_for_timeout(500)
if date_input.is_text_input_mode():
# выбираем 15 января 2024 10:11, проверяем результат
date_input.input_date("15.01.2024")
browser.wait_for_timeout(300)
expected_time = "10:11"
date_input.input_time(expected_time)
actual_time = date_input.get_time_field_value()
assert expected_time == actual_time, \
f"Expected date {expected_time} is not equal actual date {actual_time}"
else:
assert False, "Should be text date input mode"
# @pytest.mark.develop
def test_time_input_after_date_picker_positive(self, browser: Page) -> None:
"""Проверяет возможность задания времени для корректного входного значения.
Args:
browser: Экземпляр страницы Playwright.
"""
lp = LoginPage(browser)
lp.do_login()
mp = MainPage(browser)
mp.should_be_event_panel()
system_log_events_container = mp.click_events_panel_system_log_tab()
sidebar_filter = system_log_events_container.click_filter_button()
browser.wait_for_timeout(500)
date_input = sidebar_filter.get_start_time_filter()
date_input.click_switch_mode_button()
browser.wait_for_timeout(500)
date_input.click_switch_mode_button()
browser.wait_for_timeout(500)
if date_input.is_text_input_mode():
assert False, "Should be date input mode by date picker"
else:
# выбираем 16 января 2024 08:11, проверяем результат
date_input.input_date("16.01.2024")
browser.wait_for_timeout(300)
expected_time = "08:11"
date_input.input_time(expected_time)
actual_time = date_input.get_time_field_value()
assert expected_time == actual_time, \
f"Expected date {expected_time} is not equal actual date {actual_time}"
# @pytest.mark.develop
def test_time_input_negative(self, browser: Page) -> None:
"""Проверяет возможность задания времени для некорректного входного значения.
Args:
browser: Экземпляр страницы Playwright.
"""
lp = LoginPage(browser)
lp.do_login()
mp = MainPage(browser)
mp.should_be_event_panel()
system_log_events_container = mp.click_events_panel_system_log_tab()
sidebar_filter = system_log_events_container.click_filter_button()
browser.wait_for_timeout(500)
date_input = sidebar_filter.get_start_time_filter()
date_input.click_switch_mode_button()
browser.wait_for_timeout(500)
if date_input.is_text_input_mode():
# выбираем 15 января 2024 10:11, проверяем результат
date_input.input_date("15.01.2024")
browser.wait_for_timeout(300)
try:
date_input.time_date("1:01")
except AssertionError as e:
actual_err = f"{e}"
expected_err = "Incorrect time format: should be 'hh:mm'"
assert expected_err == actual_err, \
f"Expected error message: '{expected_err}' is nor equal actual error message: '{actual_err}'"
try:
date_input.input_date("o2.01")
except AssertionError as e:
actual_err = f"{e}"
expected_err = "Incorrect hours value o2 for selection"
assert expected_err == actual_err, \
f"Expected error message: '{expected_err}' is nor equal actual error message: '{actual_err}'"
try:
date_input.input_time("01:1")
except AssertionError as e:
actual_err = f"{e}"
expected_err = "Incorrect time format: should be 'hh:mm'"
assert expected_err == actual_err, \
f"Expected error message: '{expected_err}' is nor equal actual error message: '{actual_err}'"
try:
date_input.input_date("01:o1")
except AssertionError as e:
actual_err = f"{e}"
expected_err = "Incorrect minutes value o1 for selection"
assert expected_err == actual_err, \
f"Expected error message: '{expected_err}' is nor equal actual error message: '{actual_err}'"
else:
assert False, "Should be text date input mode"