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.login_page import LoginPage from app.src.pages.position_playlist_popup import PositionPlaylistPopup 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 FilteringTest(unittest.TestCase): @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.trackPage = TrackPage(self.driver) self.topChartsPage = TopChartsPage(self.driver) self.pip = PositionPlaylistPopup(self.driver) self.ts = TestStatus(self.driver) @allure.story("AP-6306") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-5780] [Video Page] Trending Details pop-up. Period verification.") @allure.description("TC verifies that users can change date range on Trending Details pop-up on Video page.") def test_trending_details_popup_period(self): self.loginPage.login_with_worker() self.trackPage.select_market(AppConfig.get("market")["canada"]["name"]) self.trackPage.open_youtube_video_page(isrc=AppConfig.get("track57")["isrc"], market=AppConfig.get("market")["canada"]["name"]) self.trackPage.nvp_youtube_check_videos_with_trending() self.trackPage.scroll_to_trending_datepicker() self.trackPage.nvp_youtube_trending_switch_tab(self.trackPage.YT_TRENDING_DETAILS_TAB) self.topChartsPage.open_trending_popup(position=1) # step 1 self.topChartsPage.verify_trending_popup_datepicker_minimized() count_graph = self.pip.get_graph_period_displayed() # step 2 start_first = self.trackPage.get_calendar_start_date() end_first = self.trackPage.get_calendar_end_date() assert_that((datetime.datetime.strptime(end_first, "%Y-%m-%d").date() - datetime.datetime.strptime(start_first, "%Y-%m-%d").date()).days + 1).is_equal_to(count_graph) # step 3-7 self.topChartsPage.verify_trending_popup_datepicker_today_date() self.topChartsPage.verify_trending_popup_datepicker_start_end_date(start_date=start_first, end_date=end_first) self.topChartsPage.trending_popup_collapse_datepicker_grid() self.topChartsPage.verify_trending_popup_datepicker_predefined_periods() # step 8 self.trackPage.select_month_period("April 2022") start_custom = self.topChartsPage.get_trending_popup_datepicker_start_date() end_custom = self.topChartsPage.get_trending_popup_datepicker_end_date() self.topChartsPage.verify_trending_popup_datepicker_period_applied(start_date=start_custom, end_date=end_custom) # step 9 self.pip.close_popup() self.topChartsPage.open_trending_popup(position=1) self.topChartsPage.verify_trending_popup_datepicker_future_period() # step 10 self.pip.close_popup() self.topChartsPage.open_trending_popup(position=1) start_second = self.topChartsPage.get_trending_popup_datepicker_start_date() end_second = self.topChartsPage.get_trending_popup_datepicker_end_date() assert_that(start_first).is_equal_to(start_second) assert_that(end_first).is_equal_to(end_second) # step 11 self.pip.close_popup() self.topChartsPage.open_trending_popup(position=2) start_third = self.topChartsPage.get_trending_popup_datepicker_start_date() end_third = self.topChartsPage.get_trending_popup_datepicker_end_date() assert_that(start_first).is_equal_to(start_third) assert_that(end_first).is_equal_to(end_third) # step 12 self.topChartsPage.trending_popup_collapse_datepicker_grid() self.topChartsPage.verify_trending_popup_datepicker_closed() # NOT AUTOMATED STEPS: 8 (skeleton)