import logging import random import unittest import allure import pytest from assertpy import assert_that from parameterized import parameterized 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 @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.ts = TestStatus(self.driver) @parameterized.expand( [ (AppConfig.get("market")["global"]["url"], [AppConfig.get("market")["global"]["api"]], ""), (AppConfig.get("market")["us"]["url"], [AppConfig.get("market")["us"]["api"]], ""), ( AppConfig.get("market")["us"]["url"], [AppConfig.get("market")["us"]["api"], AppConfig.get("market")["canada"]["api"]], "&str_gr_region=rna", ), ] ) @allure.story("AP-5155") @allure.severity(allure.severity_level.NORMAL) @allure.title("[4913] [YT > New Video Page] Data table legend verification. 'Views and Sources' filter is set to 'By Video'.") @allure.description("TC verifies Data table legend on Video Page when 'Views and Sources' filter is set to 'By Video'.") def test_youtube_nvp_source_by_videos(self, market_url, market_api, region): self.loginPage.login_with_worker() track = random.choice(["track40", "track6"]) self.tp.open_youtube_video_page(isrc=AppConfig.get(track)["isrc"], market=market_url) if region != "": self.tp.open_current_url_with_param(region) # step 1, 17 api_resp = self.api_client.get_delphi_videos( isrc=AppConfig.get(track)["isrc"], params="group_by=date%2Cvideo_id&sort_by=views&limit=20&views=1000&expand_to=related_isrcs&content_type=partner_uploaded%2Cpremium_ugc&", ) video_ids = [i["video_id"] for i in api_resp] self.tp.verify_legend_video_performance(markets=market_api, isrc=AppConfig.get(track)["isrc"], video_ids=video_ids) # step 2 self.tp.vp_youtube_change_source_view(param=AppConfig.get("source")["by_video"]) kpi_table = self.tp.vp_youtube_get_kpi_table() self.tp.vp_youtube_kpi_verify_columns_hover() assert_that(kpi_table["video-title"][-1]).is_equal_to("Total") # step 3 views = [int(v.split("\n")[0]) for v in kpi_table["views-in-period"][:-1]] assert_that(views).is_sorted(reverse=True) # step 4 self.tp.vp_youtube_click_column(column="views-in-period") table = self.tp.vp_youtube_get_kpi_table()["views-in-period"][:-1] assert_that([int(v.split("\n")[0]) for v in table]).is_sorted() # step 5-6 self.tp.vp_youtube_kpi_verify_sorting() # step 7-13 self.tp.nvp_youtube_check_videos_by_indexes([0]) video_id = self.tp.parameter_from_url(self.tp.str_gr_video) self.tp.kpi_verify_calculations(markets=market_api, video_id=video_id) # step 14 self.tp.select_previous_mounth_period() self.tp.kpi_verify_calculations(markets=market_api, video_id=video_id) # NOT AUTOMATED - STEPS 10, 15-16