import datetime import unittest import allure import pytest from assertpy import assert_that from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig from app.src.pages.chart_digest import ChartDigestPage from app.src.pages.global_track_priorities_page import GlobalTrackPrioritiesPage from app.src.pages.login_page import LoginPage from app.src.pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class GlobalTrackPrioritiesPageTest(unittest.TestCase): gtp_released_date = "2020-11-12" invalid_date_1 = "2020-33-33" invalid_dates = ["31/01/1999", "22/02/03", "January 3, 2022", "2/3/22", "3/2/22", "22/2/3", "220203", "01/01"] symbols = ["#", "<", "@", "/"] before_release_date = "01/01/99" future_date = "01/01/30" grid_date = "2021-01-05" date_in_the_past = "2021-04-05" @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.chartDigestPage = ChartDigestPage(self.driver) self.gtp = GlobalTrackPrioritiesPage(self.driver) self.trackPage = TrackPage(self.driver) self.ts = TestStatus(self.driver) @allure.story("AP-4251") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-4185] GTP V2. Date picker verification") @allure.description("""TC verifies the date picker element functionality.""") def test_gtp_datepicker(self): self.loginPage.login_with_worker() self.loginPage.is_logged_in() self.trackPage.select_market(AppConfig.get("market")["global"]["name"]) # step 1 self.chartDigestPage.open_gtp_from_dashboard() today_date = datetime.date.today() self.gtp.verify_collapsed_datepicker(expected_selected_date=str(today_date), location="gtp") self.gtp.verify_info_icon_tooltip() # step 2-3 self.gtp.expand_datepicker() self.gtp.check_datepicker_manual_entry_field() self.gtp.verify_date_month_format() self.gtp.verify_datepicker_arrows() self.gtp.calendar_default_grid_verification() # step 4-5 self.gtp.clear_date_manually() self.gtp.verify_datepicker_empty_date() # step 6 self.gtp.verify_datepicker_arrows_background() # step 7 self.gtp.reset_datepicker(expected_default_date=str(today_date)) self.gtp.expand_datepicker() self.gtp.verify_datepicker_swiping_to_unavailable_date(date=self.gtp_released_date, swipe="backward", year_month="year") # step 8 self.gtp.verify_datepicker_swiping_to_unavailable_date(date=self.gtp_released_date, swipe="forward", year_month="year") # step 9 self.gtp.reset_datepicker(expected_default_date=str(today_date)) self.gtp.expand_datepicker() self.gtp.verify_datepicker_swiping_to_unavailable_date(date=self.gtp_released_date, swipe="backward", year_month="month") # step 10-11 self.gtp.verify_datepicker_swiping_to_unavailable_date(date=self.gtp_released_date, swipe="forward", year_month="month") # step 12, 27 self.gtp.click_outside_datepicker(AppConfig.get("market")["global"]["name"]) date_to_enter = datetime.date.today() - datetime.timedelta(days=31) self.gtp.enter_datepicker_date_manually(date=str(date_to_enter), location="gtp") self.gtp.verify_datepicker_grid_selected_date(expected_selected_date=str(date_to_enter)) # step 13 self.gtp.click_outside_datepicker(AppConfig.get("market")["global"]["name"]) date_to_enter = datetime.date.today() - datetime.timedelta(days=32) self.gtp.enter_datepicker_date_manually(date=str(date_to_enter), location="gtp", apply_by="outside") self.gtp.verify_datepicker_grid_selected_date(expected_selected_date=str(date_to_enter)) # step 14 self.gtp.verify_datepicker_invalid_date_manual_entering(date=self.invalid_date_1, apply_by="outside") # step 16, 20 self.gtp.expand_datepicker() for date in self.invalid_dates: self.gtp.verify_datepicker_invalid_date_manual_entering(date=date) # step 17 for date in self.symbols: self.gtp.verify_datepicker_invalid_date_manual_entering(date=date) # step 18 self.gtp.verify_datepicker_invalid_date_manual_entering(date=self.before_release_date) # step 19 self.gtp.verify_datepicker_invalid_date_manual_entering(date=self.future_date) # step 23-26 self.gtp.reset_datepicker(expected_default_date=str(today_date)) self.gtp.select_date_from_datepicker_grid(self.grid_date, location="gtp") # step 28 self.trackPage.select_market(AppConfig.get("market")["us"]["name"]) self.gtp.select_gtp_market(AppConfig.get("market")["canada"]["name"]) selected_date = self.gtp.get_datepicker_selected_date() assert_that(self.grid_date).is_equal_to(selected_date) # step 29 self.gtp.expand_datepicker() self.gtp.reset_datepicker(expected_default_date=str(today_date)) date_to_enter = datetime.date.today() - datetime.timedelta(days=5) self.gtp.enter_datepicker_date_manually(date=str(date_to_enter), location="gtp") self.trackPage.go_back() selected_date = self.gtp.get_datepicker_selected_date() assert_that(selected_date).is_equal_to(str(datetime.date.today())) # step 30-31 date_in_the_past_modified = datetime.datetime.strptime(str(self.date_in_the_past), "%Y-%m-%d").date() self.gtp.enter_datepicker_date_manually(date=self.date_in_the_past, location="gtp") table_chart_position_date = self.gtp.get_table_chart_position_date() table_streams_date = self.gtp.get_table_streams_date() assert_that(date_in_the_past_modified).is_equal_to(table_chart_position_date) assert_that(str(date_in_the_past_modified)).is_equal_to(table_streams_date) gtp_count = self.chartDigestPage.get_gtp_tracks_count() if gtp_count > 0: cards_info = self.gtp.get_tracks_card_info() card_chart_position_date = datetime.datetime.strptime(cards_info[0]["chart-position-title"].split(" ")[-1], self.trackPage.get_date_format_from_locale()).strftime("%Y-%m-%d") card_streams_date = datetime.datetime.strptime(cards_info[0]["streams-title"].split(" ")[-1], self.trackPage.get_date_format_from_locale()).strftime("%Y-%m-%d") assert_that(str(date_in_the_past_modified)).is_equal_to(card_chart_position_date) assert_that(str(date_in_the_past_modified)).is_equal_to(card_streams_date) # NOT AUTOMATED steps 15, 21, 22