import unittest import allure import pytest from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig from app.api_client import ApiClient from app.src.pages.global_search import GlobalSearch from app.src.pages.global_track_priorities_page import GlobalTrackPrioritiesPage from app.src.pages.login_page import LoginPage from app.src.pages.top_charts_page import TopChartsPage from app.src.pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class TopChartsPageTest(unittest.TestCase): date_1 = "2021-08-01" first_half_date = "03/08" second_half_date = "21" expected_date = "2021-03-08" date_2 = "2021-01-29" invalid_dates = ["22/02/03", "January 3, 2022", "2/3/22", "3/2/22", "22/2/3", "220203", "03Jan22", "22Jan03", "3 January, 2022", "2022, January 3", "01/01"] symbols = ["#", "<", "@", "/"] @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.topChartsPage = TopChartsPage(self.driver) self.gtp = GlobalTrackPrioritiesPage(self.driver) self.trackPage = TrackPage(self.driver) self.global_search = GlobalSearch(self.driver) self.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.story("AP-6490") @allure.severity(allure.severity_level.NORMAL) @allure.title("[6358][Charts>Trending] Date picker> Manual entry field verification") @allure.description("""TC verifies manual entry date picker verification on Charts → Trending Music Videos.""") def test_charts_trending_datepicker_manual_entry(self): self.loginPage.login_with_worker() self.trackPage.select_market(AppConfig.get("market")["global"]["name"]) self.topChartsPage.open_top_chart_page() self.topChartsPage.switch_tab(self.topChartsPage.YOUTUBE_TYPE) # step 1 default_date_api = self.api_client.get_charts_trending_dates_markets()["charts"]["max"] self.gtp.expand_datepicker() self.gtp.check_datepicker_manual_entry_field() # step 2 self.gtp.clear_date_manually() # step 3 self.topChartsPage.click_on_header() self.gtp.verify_collapsed_datepicker(expected_selected_date=default_date_api, location="top_charts") # step 5-6 self.gtp.clear_date_manually() self.gtp.verify_datepicker_invalid_date_manual_entering(date=self.first_half_date) # step 7 self.gtp.enter_any_value_to_datepicker_manually(value=self.second_half_date) self.gtp.verify_collapsed_datepicker(expected_selected_date=self.expected_date, location="top_charts") # step 9 self.gtp.clear_date_manually() self.gtp.enter_datepicker_date_manually(date=self.date_1, location="top_charts") self.gtp.verify_collapsed_datepicker(expected_selected_date=self.date_1, location="top_charts") # step 10-12 self.gtp.verify_datepicker_grid_selected_date(expected_selected_date=self.date_1) self.gtp.open_datepicker_prev_month_grid() self.gtp.verify_datepicker_grid_no_date_selected() # step 13 self.gtp.reset_datepicker(expected_default_date=default_date_api) # step 14 self.gtp.expand_datepicker() self.gtp.verify_datepicker_datefield_not_in_focus_after_swipe() # step 15 self.gtp.expand_datepicker() self.global_search.click_beyond_search_field() # step 16 for date in self.invalid_dates: self.gtp.verify_datepicker_invalid_date_manual_entering(date=date) for date in self.symbols: self.gtp.verify_datepicker_invalid_date_manual_entering(date=date) # NOT AUTOMATED steps 4, 5, 8, 17