286 lines
11 KiB
Python
286 lines
11 KiB
Python
"""Модуль тестов для проверки операций с компонентом ввода даты.
|
||
|
||
Содержит тесты для для проверки операций с компонентом ввода даты.
|
||
"""
|
||
|
||
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"
|