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 @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) @allure.story("AP-5187") @allure.severity(allure.severity_level.NORMAL) @allure.title("[4913] [YT > New Video Page] Simplified legend verification.") @allure.description( """TC verifies new table Simplified Legend view under graph on Video Page when 'All Views’ values are selected in ‘Views and Sources’ filter plus Extra states.""" ) def test_youtube_nvp_simplified_legend(self): self.loginPage.login_with_worker() track = random.choice(["track40", "track6"]) self.tp.open_youtube_video_page(isrc=AppConfig.get(track)["isrc"], market=AppConfig.get("market")["global"]["url"]) # step 6 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 = list(set([i["video_id"] for i in api_resp])) self.tp.vp_youtube_change_source_view(param=AppConfig.get("source")["all_views"]) self.tp.vp_youtube_verify_footnote_and_legend() # step 7 ui_values = self.tp.vp_youtube_get_legend_all_views() api_values = self.tp.youtube_performance_get_legend_values_api(markets=[AppConfig.get("market")["global"]["api"]], isrc=AppConfig.get(track)["isrc"], video_ids=video_ids) assert_that(ui_values).is_equal_to([api_values["views_in_period"], api_values["views_day"]]) # step 9 self.tp.nvp_youtube_check_videos(count=2) self.tp.vp_youtube_verify_footnote_and_legend() # step 10 video_ids_2 = self.tp.parameter_from_url(self.tp.str_gr_video).split(",") ui_values = self.tp.vp_youtube_get_legend_all_views() api_values_two_video = self.tp.youtube_performance_get_legend_values_api(markets=[AppConfig.get("market")["global"]["api"]], isrc=AppConfig.get(track)["isrc"], video_ids=video_ids_2) assert_that(ui_values).is_equal_to( [ api_values["views_in_period"], api_values["views_day"], api_values_two_video["views_in_period"], round(api_values_two_video["views_in_period"] / api_values["views_in_period"] * 100, 1), api_values_two_video["views_day"], ] ) # step 11 self.tp.nvp_youtube_check_videos(count=1) self.tp.vp_youtube_verify_footnote_and_legend() video_ids_1 = self.tp.parameter_from_url(self.tp.str_gr_video) ui_values = self.tp.vp_youtube_get_legend_all_views() api_values_one_video = self.tp.youtube_performance_get_legend_values_api( markets=[AppConfig.get("market")["global"]["api"]], isrc=AppConfig.get(track)["isrc"], video_ids=[video_ids_1], ) assert_that(ui_values).is_equal_to( [ api_values["views_in_period"], api_values["views_day"], api_values_one_video["views_in_period"], round(api_values_one_video["views_in_period"] / api_values["views_in_period"] * 100, 1), api_values_one_video["views_day"], ] ) # step 13 self.tp.select_previous_mounth_period() ui_values = self.tp.vp_youtube_get_legend_all_views() api_values = self.tp.youtube_performance_get_legend_values_api(markets=[AppConfig.get("market")["global"]["api"]], isrc=AppConfig.get(track)["isrc"], video_ids=video_ids) api_values_one_video_pm = self.tp.youtube_performance_get_legend_values_api( markets=[AppConfig.get("market")["global"]["api"]], isrc=AppConfig.get(track)["isrc"], video_ids=[video_ids_1], ) assert_that(ui_values).is_equal_to( [ api_values["views_in_period"], api_values["views_day"], api_values_one_video_pm["views_in_period"], round(api_values_one_video_pm["views_in_period"] / api_values["views_in_period"] * 100, 1), api_values_one_video_pm["views_day"], ] ) # step 14 self.tp.market_dd_choose_few_countries(param=[AppConfig.get("market")["us"]["name"]], tab="youtube_nvp") ui_values = self.tp.vp_youtube_get_legend_all_views() api_values = self.tp.youtube_performance_get_legend_values_api(markets=[AppConfig.get("market")["us"]["market"]], isrc=AppConfig.get(track)["isrc"], video_ids=video_ids) api_values_us = self.tp.youtube_performance_get_legend_values_api( markets=[AppConfig.get("market")["us"]["market"]], isrc=AppConfig.get(track)["isrc"], video_ids=[video_ids_1], ) assert_that(ui_values).is_equal_to( [ api_values["views_in_period"], api_values["views_day"], api_values_us["views_in_period"], round(api_values_us["views_in_period"] / api_values["views_in_period"] * 100, 1), api_values_us["views_day"], ] ) # step 15 self.tp.market_dd_choose_few_countries( param=[AppConfig.get("market")["us"]["name"], AppConfig.get("market")["argentina"]["name"]], tab="youtube_nvp", ) ui_values = self.tp.vp_youtube_get_legend_all_views() api_values = self.tp.youtube_performance_get_legend_values_api( markets=[AppConfig.get("market")["us"]["market"], AppConfig.get("market")["argentina"]["market"]], isrc=AppConfig.get(track)["isrc"], video_ids=video_ids, ) api_values_us_ar = self.tp.youtube_performance_get_legend_values_api( markets=[AppConfig.get("market")["us"]["market"], AppConfig.get("market")["argentina"]["market"]], isrc=AppConfig.get(track)["isrc"], video_ids=[video_ids_1], ) assert_that(ui_values).is_equal_to( [ api_values["views_in_period"], api_values["views_day"], api_values_us_ar["views_in_period"], round(api_values_us_ar["views_in_period"] / api_values["views_in_period"] * 100, 1), api_values_us_ar["views_day"], ] ) for region in self.tp.REGIONS: ui_values_before = self.tp.vp_youtube_get_legend_all_views() self.tp.stream_and_source_choose_region(param=region, dd="youtube_nvp") self.tp.vp_youtube_verify_footnote_and_legend() ui_values_after = self.tp.vp_youtube_get_legend_all_views() if region == self.tp.REGION_NORTH_AMERICA: ui_values = self.tp.vp_youtube_get_legend_all_views() api_values = self.tp.youtube_performance_get_legend_values_api( markets=[AppConfig.get("market")["us"]["market"], AppConfig.get("market")["canada"]["market"]], isrc=AppConfig.get(track)["isrc"], video_ids=video_ids, ) api_values_na = self.tp.youtube_performance_get_legend_values_api( markets=[AppConfig.get("market")["us"]["market"], AppConfig.get("market")["canada"]["market"]], isrc=AppConfig.get(track)["isrc"], video_ids=[video_ids_1], ) assert_that(ui_values).is_equal_to( [ api_values["views_in_period"], api_values["views_day"], api_values_na["views_in_period"], round(api_values_na["views_in_period"] / api_values["views_in_period"] * 100, 1), api_values_na["views_day"], ] ) assert_that(ui_values_before).is_not_equal_to(ui_values_after) # NOT AUTOMATED STEPS 1-5, 8, 12