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-5109") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-4914] [Track -> Video Performance] Simliplified Legend when ‘All Views’ is selected in filter and extra states verification.") @allure.description("TC verifies new table Simplified Legend view when 'All Views’ values are selected in ‘Views and Sources’ filter on Video Performance " "tab so that streaming data coming from YOUTUBE can be analyzed with respect to specific Views and Sources.") def test_youtube_vp_all_views_and_extra(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")["global"]["url"]) self.tp.switch_to_youtube_video_performance() self.tp.vp_youtube_change_source_view(param=AppConfig.get("source")["all_views"]) # step 8-9 self.tp.vp_youtube_verify_footnote_and_legend() # step 10 video_ids = self.tp.td_youtube_get_all_from_table()["video_ids"] 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) ui_values = self.tp.vp_youtube_get_legend_all_views() assert_that(ui_values).is_equal_to([api_values["views_in_period"], api_values["views_day"]]) # step 12 two_video = 2 self.tp.vp_youtube_check_videos(count=two_video) self.tp.vp_youtube_verify_footnote_and_legend() # step 13 video_ids_two = self.tp.parameter_from_url(self.tp.str_gr_video).split(",") 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_two, ) ui_values = self.tp.vp_youtube_get_legend_all_views() 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 14 self.tp.select_previous_mounth_period() # step 15 self.verify_all_views_legend( markets=[AppConfig.get("market")["global"]["api"]], video_ids=video_ids, isrc=AppConfig.get(track)["isrc"], ) # step 16-17 self.tp.market_dd_choose_few_countries(param=[AppConfig.get("market")["canada"]["name"]], tab="youtube_vp") self.verify_all_views_legend( markets=[AppConfig.get("market")["canada"]["market"]], video_ids=video_ids, isrc=AppConfig.get(track)["isrc"], ) # step 18 self.tp.stream_and_source_choose_region(param=self.tp.REGION_NORTH_AMERICA, dd="youtube_vp") video_ids = self.tp.td_youtube_get_all_from_table()["video_ids"] self.verify_all_views_legend( markets=[AppConfig.get("market")["canada"]["market"], AppConfig.get("market")["us"]["market"]], video_ids=video_ids, isrc=AppConfig.get(track)["isrc"], ) # step 19 regions = self.tp.REGIONS for region in regions: ui_values_before = self.tp.vp_youtube_get_legend_all_views() self.tp.stream_and_source_choose_region(param=region, dd="youtube_vp") ui_values_after = self.tp.vp_youtube_get_legend_all_views() assert_that(ui_values_before).is_not_equal_to(ui_values_after) # step 20 three_markets = [ AppConfig.get("market")["canada"]["market"], AppConfig.get("market")["us"]["market"], AppConfig.get("market")["australia"]["market"], ] url_to_open = self.tp.get_url().replace("&str_gr_region=ruk", f"&str_gr_country={'%2C'.join(three_markets)}") self.tp.open_url(url_to_open) self.verify_all_views_legend(markets=three_markets, video_ids=video_ids, isrc=AppConfig.get(track)["isrc"]) # step 21 one_video = 1 self.tp.vp_youtube_check_videos(count=one_video) self.tp.vp_youtube_change_source_view(param=AppConfig.get("source")["all_views"]) self.verify_all_views_legend(markets=[three_markets], video_ids=video_ids, isrc=AppConfig.get(track)["isrc"]) @allure.step("TP - VP Youtube verify All Views legend and api") def verify_all_views_legend(self, markets, video_ids, isrc): self.tp.vp_youtube_verify_footnote_and_legend() video_ids_selected = self.tp.parameter_from_url(self.tp.str_gr_video).split(",") api_values_two_video = self.tp.youtube_performance_get_legend_values_api(markets=markets, isrc=isrc, video_ids=video_ids_selected) api_values = self.tp.youtube_performance_get_legend_values_api(markets=markets, isrc=isrc, video_ids=video_ids) ui_values = self.tp.vp_youtube_get_legend_all_views() 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"], ] ) # NOT AUTOMATED - STEPS 1-7, 11, 22