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.api_client import ApiClient 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): @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.gtp = GlobalTrackPrioritiesPage(self.driver) self.trackPage = TrackPage(self.driver) self.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.story("AP-6209") @allure.severity(allure.severity_level.NORMAL) @allure.title("[5765][6211][YT>Trending] Date picker view verification.") @allure.description("""TC verifies trending section the date picker element functionality.""") def test_trending_datepicker(self): self.loginPage.login_with_worker() self.loginPage.is_logged_in() self.trackPage.open_youtube_video_page(isrc=AppConfig.get("track21")["isrc"], market=AppConfig.get("market")["global"]["url"]) self.trackPage.nvp_youtube_check_videos_with_trending() # step 1-5 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.verify_collapsed_datepicker(expected_selected_date=default_date_api, location="nvp_trending") # step 6-7 self.trackPage.scroll_to_trending_datepicker() self.gtp.expand_datepicker() self.gtp.check_datepicker_manual_entry_field() # step 8 self.gtp.verify_date_month_format() # step 9-11 self.trackPage.trending_datepicker_grid_verification(grid_date=default_date_api) # step 12 self.gtp.reset_datepicker(expected_default_date=default_date_api) self.trackPage.refresh() # step 13 default_date = datetime.datetime.strptime(default_date_api, "%Y-%m-%d").date() date_to_select = default_date - datetime.timedelta(days=1) self.gtp.enter_datepicker_date_manually(date=str(date_to_select), location="nvp_trending") self.gtp.verify_datepicker_grid_selected_date(expected_selected_date=str(date_to_select)) # step 14, 16 self.trackPage.verify_trending_datepicker_last_available_date(date=default_date_api) expected_min_date_api = self.api_client.get_video_trending_date(video_id=video_id)["video"]["min"] self.gtp.datepicker_swipe_to_date(date=expected_min_date_api) self.trackPage.verify_trending_datepicker_first_available_date(date=expected_min_date_api) self.gtp.reset_datepicker(expected_default_date=default_date_api) self.gtp.expand_datepicker() # step 15 self.trackPage.verify_trending_datepicker_available_period(video_id=video_id) # step 16 self.gtp.reset_datepicker(expected_default_date=default_date_api) # step 17, 22 self.gtp.select_date_from_datepicker_grid(date=str(date_to_select), location="nvp_trending") self.trackPage.refresh() self.gtp.verify_collapsed_datepicker(expected_selected_date=str(date_to_select), location="nvp_trending") # step 18, 19 self.trackPage.open_youtube_video_page(isrc=AppConfig.get("track44")["isrc"], market=AppConfig.get("market")["global"]["url"]) self.trackPage.nvp_youtube_check_videos_with_trending() 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"] default_date = datetime.datetime.strptime(default_date_api, "%Y-%m-%d").date() date_to_select = default_date - datetime.timedelta(days=1) min_date_api = self.api_client.get_video_trending_date(video_id=video_id)["video"]["min"] self.trackPage.scroll_to_trending_datepicker() self.gtp.expand_datepicker() self.gtp.verify_datepicker_swiping_to_unavailable_date(date=min_date_api, swipe="backward", year_month="year") self.gtp.verify_datepicker_swiping_to_unavailable_date(date=min_date_api, swipe="forward", year_month="year") self.gtp.verify_datepicker_swiping_to_unavailable_date(date=min_date_api, swipe="backward", year_month="month") self.gtp.verify_datepicker_swiping_to_unavailable_date(date=min_date_api, swipe="forward", year_month="month") # step 20, 23 self.gtp.reset_datepicker(expected_default_date=default_date_api) self.gtp.expand_datepicker() self.trackPage.verify_trending_datepicker_arrows_background() # step 24 self.gtp.reset_datepicker(expected_default_date=default_date_api) self.gtp.enter_datepicker_date_manually(date=str(date_to_select), location="nvp_trending") self.trackPage.nvp_youtube_trending_switch_overview_control(self.trackPage.YT_TRENDING_OVERVIEW_BY_MARKETS) self.gtp.verify_collapsed_datepicker(expected_selected_date=str(date_to_select), location="nvp_trending") # step 25, 27 date_to_select = default_date - datetime.timedelta(days=2) self.gtp.enter_datepicker_date_manually(date=str(date_to_select), location="nvp_trending") self.trackPage.nvp_youtube_trending_switch_tab(self.trackPage.YT_TRENDING_DETAILS_TAB) self.gtp.verify_collapsed_datepicker(expected_selected_date=str(date_to_select), location="nvp_trending") self.gtp.expand_datepicker() self.gtp.check_datepicker_manual_entry_field() self.gtp.verify_date_month_format() self.trackPage.trending_datepicker_grid_verification(grid_date=str(date_to_select)) self.trackPage.verify_trending_datepicker_available_period(video_id=video_id) self.gtp.reset_datepicker(expected_default_date=default_date_api) # step 26 date_to_select = default_date - datetime.timedelta(days=3) self.gtp.enter_datepicker_date_manually(date=str(date_to_select), location="nvp_trending") self.trackPage.nvp_youtube_trending_switch_tab(self.trackPage.YT_TRENDING_OVERVIEW_TAB) self.gtp.verify_collapsed_datepicker(expected_selected_date=str(date_to_select), location="nvp_trending") # step 28 self.trackPage.select_market(AppConfig.get("market")["us"]["name"]) video_metadata = self.trackPage.get_nvp_video_metadata(False) assert_that(video_metadata["title"]).is_equal_to("All Videos") self.trackPage.nvp_youtube_trending_verify_placeholder()