from allure_commons._allure import step from playwright.sync_api import Page, expect from src.helpers.logger import Logger from src.locators.date_picker.single_date_picker_locators import SingleDatePickerLocators from src.ui_elements.base_ui_element import BaseUIElement class SingleDatePicker: log = Logger() def __init__(self, page: Page): self.page = page self.entity_type = '' self.url = f'/{self.entity_type}' self.datepicker_input = BaseUIElement(self.page, SingleDatePickerLocators.DATE_PICKER_INPUT, 'Single date picker - input') self.weekdays_row = BaseUIElement(self.page, SingleDatePickerLocators.WEEKDAYS_ROW, 'Single date picker - weekdays row') self.month_year = BaseUIElement(self.page, SingleDatePickerLocators.MONTH_YEAR, 'Single date picker - month year') self.reset_button = BaseUIElement(self.page, SingleDatePickerLocators.RESET_BUTTON, 'Single date picker - reset button') self.enter_icon = BaseUIElement(self.page, SingleDatePickerLocators.ENTER_ICON, 'Single date picker - enter icon') self.calendar_icon = BaseUIElement(self.page, SingleDatePickerLocators.CALENDAR_ICON, 'Single date picker - calendar icon') self.day_in_calendar = BaseUIElement(self.page, SingleDatePickerLocators.DAY_IN_CALENDAR, 'Single date picker - day in calendar') self.arrow_double_left = BaseUIElement(self.page, SingleDatePickerLocators.ARROW_DOUBLE_LEFT, 'Single date picker - arrow double left') self.arrow_left = BaseUIElement(self.page, SingleDatePickerLocators.ARROW_LEFT, 'Single date picker - arrow left') self.arrow_double_right = BaseUIElement(self.page, SingleDatePickerLocators.ARROW_DOUBLE_RIGHT, 'Single date picker - arrow double right') self.arrow_right = BaseUIElement(self.page, SingleDatePickerLocators.ARROW_RIGHT, 'Single date picker - arrow right') self.enter_full_date_message = BaseUIElement(self.page, SingleDatePickerLocators.PLEASE_ENTER_FULL_DATE, 'Single date picker - please enter full date message') @step("Single date picker - expand and verify") def expand_datepicker_and_verify(self): self.datepicker_input.click() self.enter_icon.exists() self.calendar_icon.not_exists() expect(self.datepicker_input._element).to_be_focused() self.arrow_double_left.exists() self.arrow_left.exists() self.arrow_double_right.exists() self.arrow_right.exists() self.reset_button.exists() self.month_year.exists() self.weekdays_row.exists_multiple() @step("Single date picker - verify reset button hover") def verify_button_hover(self, base_el): expect(base_el._element).to_have_css('background-color', 'rgb(255, 255, 255)') base_el._element.hover() expect(base_el._element).to_have_css('background-color', 'rgb(218, 218, 230)')