import logging 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( [ # ("by_avg_view_duration", "avg-views-duration-percent"), ("by_likes", "likes-in-period"), ("by_dislikes", "dislikes-in-period"), ("by_comments", "comments-in-period"), ("by_shares", "shares-in-period"), ] ) @allure.story("AP-5110") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-4914] [Track -> Video Performance] Legend with Data Table verification when some ‘Other metrics’ value is selected in 'Views and Sources' filter.") @allure.description( """TC verifies new table Legend view with Video types that user can use when ‘Other metrics’ 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_source_other_metrics_legend(self, source_view, default_sort): self.loginPage.login_with_worker() self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track40")["id"], market_id=AppConfig.get("market")["global"]["url"]) self.tp.switch_to_youtube_video_performance() # step 1, 6-7 self.tp.td_youtube_sort_by_column(column="title") video_id = self.tp.td_youtube_get_all_from_table()["video_ids"][0] self.tp.vp_youtube_change_source_view(param=AppConfig.get("source")[source_view]) # step 12, 14, 18, 25 self.tp.vp_youtube_kpi_verify_columns_hover() kpi_table = self.tp.vp_youtube_get_kpi_table() # step 2, 8, 19 assert_that([int(d.split("\n")[0].split(" ")[0]) for d in kpi_table[default_sort][:-1]]).is_sorted(reverse=True) # step 3, 9, 20 self.tp.vp_youtube_click_column(column=default_sort) kpi_table = self.tp.vp_youtube_get_kpi_table() assert_that([int(d.split("\n")[0].split(" ")[0]) for d in kpi_table[default_sort][:-1]]).is_sorted() # step 4, 10, 21 self.tp.vp_youtube_kpi_verify_sorting() # step 5, 11, 13, 15-17, 22-24, 26 self.tp.kpi_verify_calculations_other_views(markets=[AppConfig.get("market")["global"]["api"]], video_id=video_id) # step 27 self.tp.market_dd_choose_few_countries([AppConfig.get("market")["us"]["name"]], tab="youtube_vp") self.tp.kpi_verify_calculations_other_views(markets=[AppConfig.get("market")["us"]["market"]], video_id=video_id) # step 28 self.tp.stream_and_source_choose_region(self.tp.REGION_ASIA, dd="youtube_vp") self.tp.kpi_verify_calculations_other_views( markets=[ "kh", "cn", "fj", "hk", "id", "jp", "la", "mo", "my", "np", "pg", "ph", "sg", "kr", "lk", "tw", "th", "vn", "in", ], video_id=video_id, )