import logging import random 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 ui_automation_framework.utils import logger as cl from app.api_client import ApiClient from app.src.pages.album_page import AlbumPage from app.src.pages.comparison_page import TrackComparisonPage from app.src.pages.login_page import LoginPage from app.src.pages.track_page import TrackPage from app.src.pages.youtube_video_popup import YoutubeVideoPopup @pytest.mark.usefixtures("set_up", "one_time_set_up") class DeepLinkingTrackPageTest(unittest.TestCase): log = cl.Logger(logging.DEBUG) @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.tp = TrackPage(self.driver) self.cp = TrackComparisonPage(self.driver) self.ap = AlbumPage(self.driver) self.api_client = ApiClient() self.youtube_popup = YoutubeVideoPopup(self.driver) self.ts = TestStatus(self.driver) @allure.story("AP-5018") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-4911][Track -> Video Performance] Changing selected video(s)") @allure.description("TC verifies “Video“ filter/pop-up functionality.") def test_youtube_vp_change_selectes_video(self): self.loginPage.login_with_worker() track = random.choice(["track40"]) self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get(track)["id"], market_id=AppConfig.get("market")["us"]["url"]) self.tp.switch_to_youtube_video_performance() # step 1 self.youtube_popup.open_video_popup() self.youtube_popup.verify_apply_button(True) # step 2 self.youtube_popup.check_uncheck_videos([1]) self.youtube_popup.verify_apply_button() # step 3 views_in_period_before = self.tp.get_streams_in_period_total() self.tp.click_element("(//*[contains(text(), 'Performance')])[1]", "xpath") views_in_period_after = self.tp.get_streams_in_period_total() assert_that(views_in_period_before).is_equal_to(views_in_period_after) # step 4 self.youtube_popup.open_video_popup() self.youtube_popup.check_uncheck_videos([1]) self.youtube_popup.close_video_popup() views_in_period_close = self.tp.get_streams_in_period_total() assert_that(views_in_period_close).is_equal_to(views_in_period_after) # step 5 self.youtube_popup.open_video_popup() api_resp = self.api_client.get_delphi_videos( isrc=AppConfig.get(track)["isrc"], params="group_by=date%2Cvideo_id&sort_by=views&limit=5&views=1000&expand_to=related_isrcs&content_type=partner_uploaded%2Cpremium_ugc&", ) video_ids = [i["video_id"] for i in api_resp] self.youtube_popup.check_uncheck_videos(list(range(1, len(video_ids) + 1))) self.youtube_popup.verify_apply_button(True) popup_data_titles = self.youtube_popup.get_all_from_table()[self.youtube_popup.video_title_column] self.youtube_popup.close_video_popup() # step 6 self.tp.verify_video_selector_hover() # step 7 self.tp.vp_youtube_check_videos(1, True) video_dd_value = self.tp.vp_youtube_get_selected_videos_dd() self.tp.verify_video_selector_hover() assert_that(video_dd_value).is_equal_to(popup_data_titles[0]) # step 8, 9 for i in [2, 3]: self.tp.vp_youtube_check_videos(i, True) video_dd_value = self.tp.vp_youtube_get_selected_videos_dd() hint = self.tp.get_video_selector_hover() assert_that(video_dd_value).is_equal_to(f"{i} Videos") if i == 2: assert_that(hint).is_equal_to(", ".join(sorted(popup_data_titles[:i]))) elif i == 3: popup_checked_videos = popup_data_titles[:3] assert_that(hint).is_equal_to(", ".join(sorted(popup_checked_videos)[:2]) + ", and 1 more") # NOT AUTOMATED STEP - 10, 11