import datetime 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.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 from app.src.pages.youtube_video_popup import YoutubeVideoPopup @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.youtube_popup = YoutubeVideoPopup(self.driver) self.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.story("AP-5143") @allure.severity(allure.severity_level.NORMAL) @allure.title("[5168] [YT > Video Page > Header] Video metadata verification.") @allure.description("TC verifies Video metadata in header on the Video Page.") def test_youtube_nvp_header_metadata_verification(self): self.loginPage.login_with_worker() # step 2-4 track = AppConfig.get("track40") self.tp.open_youtube_video_page(track["isrc"], market=AppConfig.get("market")["global"]["url"]) self.youtube_popup.open_video_popup() popup_labels = self.youtube_popup.get_all_from_table()["video_labels"] self.youtube_popup.close_video_popup() for l in [self.tp.vevo.upper(), self.tp.manual.upper(), self.tp.premium_ugc.upper()]: if l in popup_labels: self.tp.nvp_youtube_check_videos_by_indexes([popup_labels.index(l)]) nvp_label = self.tp.get_nvp_video_metadata()["label"] assert_that(nvp_label).is_equal_to(l) # step 5, 11, 12 nvp_metadata = self.tp.get_nvp_video_metadata() video_id = self.tp.parameter_from_url(self.tp.str_gr_video) nvp_image = nvp_metadata["image"] api_resp = self.api_client.get_delphi_videos( isrc=AppConfig.get("track40")["isrc"], params="group_by=date%2Cvideo_id&sort_by=views&limit=20&views=1000&expand_to=related_isrcs&content_type=partner_uploaded%2Cpremium_ugc&", ) api_image = [i["thumbnails"]["default"]["url"] for i in api_resp if i["video_id"] == video_id][0] assert_that(nvp_image).is_equal_to(api_image) # step 6 nvp_channel = nvp_metadata["channel"] api_channel = [i["channel_title"] for i in api_resp if i["video_id"] == video_id][0] assert_that(nvp_channel).is_equal_to(api_channel) # step 7 url_before = self.tp.get_url() self.tp.click_element("youtube-channel-name-title") url_after = self.tp.get_url() assert_that(url_before).is_equal_to(url_after) # step 9 nvp_date = nvp_metadata["published_date"] api_date = [i["date_uploaded"] for i in api_resp if i["video_id"] == video_id][0] api_date = str(datetime.datetime.strptime(api_date, "%Y-%m-%d").strftime(self.tp.get_date_format_from_locale())) assert_that(nvp_date).is_equal_to(api_date) # step 10 nvp_channel_link = nvp_metadata["channel_link"] nvp_video_link = nvp_metadata["video_link"] api_channel_link = [i["dsp_channel_id"] for i in api_resp if i["video_id"] == video_id][0] api_video_link = [i["dsp_video_id"] for i in api_resp if i["video_id"] == video_id][0] assert_that(nvp_channel_link).is_equal_to(api_channel_link) assert_that(nvp_video_link).is_equal_to(api_video_link) # NOT AUTOMATED STEPS 1, 8, 13