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.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class DeepLinkingTrackPageTest(unittest.TestCase): first_half_date = "08/01" second_half_date = "21" expected_date = "2021-08-01" date_1 = "2021-08-02" date_2 = "2021-07-11" invalid_dates = ["31/01/1999", "22/02/03", "January 3, 2022", "2/3/22", "3/2/22", "22/2/3", "220203", "03Jan22", "22Jan03", "Jan 03, 2022", "Jan-03-2022", "2022-Jan-03", "03-Jan-2022", "3 January, 2022", "2022, January 3", "03 Jan, 2022", "2022, Jan 03", "01/01"] symbols = ["#", "<", "@", "/"] @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(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-6222") @allure.severity(allure.severity_level.NORMAL) @allure.title("AP-6222 [5765][6211][YT>Trending] Overview> Date picker> Manual entry field verification.") @allure.description("""TC verifies the date picker manual entry on the trending section under Youtube page.""") def test_trending_datepicker_manual_entry(self): self.loginPage.login_with_worker() self.loginPage.is_logged_in() self.trackPage.open_youtube_video_page(isrc=AppConfig.get("track54")["isrc"], market=AppConfig.get("market")["global"]["url"]) self.trackPage.nvp_youtube_check_videos_with_trending() # step 1 self.trackPage.scroll_to_trending_datepicker() self.gtp.expand_datepicker() self.gtp.check_datepicker_manual_entry_field() # step 2 self.gtp.clear_date_manually() # step 3 video_id = self.trackPage.parameter_from_url(self.trackPage.str_gr_video) default_date_api = self.api_client.get_video_trending_date(video_id=video_id)["video"]["max"] self.gtp.reset_datepicker(expected_default_date=default_date_api) self.gtp.verify_collapsed_datepicker(expected_selected_date=default_date_api, location="nvp_trending") # 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="nvp_trending") # step 9 self.gtp.clear_date_manually() self.gtp.enter_datepicker_date_manually(date=self.date_1, location="nvp_trending") self.gtp.verify_collapsed_datepicker(expected_selected_date=self.date_1, location="nvp_trending") # 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