import logging 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.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.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.story("AP-5153") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-5170] Video Page -> Views by Markets. Graph legend") @allure.description("TC verifies graph legend in ‘Views by Markets’ tab.") def test_youtube_nvp_vbm_graph_legend_verification(self): self.loginPage.login_with_worker() track = AppConfig.get("track40") self.tp.open_youtube_video_page(track["isrc"], market=AppConfig.get("market")["global"]["url"]) self.tp.youtube_switch_to_views_by_market_tab() # step 1 markets_ui = self.tp.youtube_nvp_views_by_markets_get_markets() assert_that(len(markets_ui)).is_greater_than_or_equal_to(1) # step 5 start = self.tp.get_calendar_start_date() end = self.tp.get_calendar_end_date() api_resp = self.api_client.get_delphi_videos( isrc=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&", ) ids = list(set([i["video_id"] for i in api_resp])) markets_api_resp = self.api_client.get_youtube_top_markets(start, end, ids)["items"] market_api_dict = {} for i in markets_api_resp: v = i["market"] k = i["views"] market_api_dict.update({k: v}) assert_that(sorted(markets_ui)).is_equal_to(sorted(market_api_dict.values())) # step 6 self.tp.nvp_youtube_check_videos(1) ids = [self.tp.parameter_from_url(self.tp.str_gr_video)] markets_api_resp = self.api_client.get_youtube_top_markets(start, end, ids)["items"] market_api_dict = {} for i in markets_api_resp: v = i["market"] k = i["views"] market_api_dict.update({k: v}) markets_ui = self.tp.youtube_nvp_views_by_markets_get_markets() assert_that(sorted(markets_ui)).is_equal_to(sorted(market_api_dict.values())) # step 7 markets_ui_line_graph = sorted(self.tp.youtube_nvp_views_by_markets_get_markets()) self.tp.vdm_choose_graph_view_bar_chart() markets_ui_bar_chart = self.tp.get_graph_vbm_barchart_views(15)["markets"] markets_ui_bar_chart = sorted(m.lower() for m in markets_ui_bar_chart) assert_that(markets_ui_line_graph).is_equal_to(markets_ui_bar_chart) # # step 9 # self.tp.vbm_verify_market_list() # step 10 self.tp.market_dd_choose_few_countries([self.tp.all_markets], "youtube_vbm") self.tp.is_graph_period_displayed() markets_ui_bar_chart_all = self.tp.get_graph_vbm_barchart_views(15)["markets"] markets_ui_bar_chart_all = [m.lower() for m in markets_ui_bar_chart_all] assert_that(set(markets_ui_bar_chart).intersection(markets_ui_bar_chart_all)).is_true() # step 11 self.tp.vdm_choose_graph_view_line_graph() markets_ui_line_graph = self.tp.youtube_nvp_views_by_markets_get_markets() assert_that(markets_ui_bar_chart_all).is_subset_of(markets_ui_line_graph) # step 12-13 self.tp.stream_and_source_choose_region(self.tp.sony_offices, "youtube_vbm") markets_ui_line_graph = sorted(self.tp.youtube_nvp_views_by_markets_get_markets()) self.tp.vdm_choose_graph_view_bar_chart() markets_ui_bar_chart = sorted(self.tp.youtube_nvp_views_by_markets_get_markets()) assert_that(markets_ui_line_graph).is_equal_to(markets_ui_bar_chart) # NOT AUTOMATED - STEPS 2, 3, 4, 8