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 app.api_client import ApiClient from app.src.pages.login_page import LoginPage from app.src.pages.track_page import TrackPage from app.src.pages.track_page_tabs.tiktok_track_details import TikTokTrackDetails @pytest.mark.usefixtures("set_up", "one_time_set_up") class DeepLinkingTrackPageTest(unittest.TestCase): @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.tp = TrackPage(self.driver) self.tp_tiktok_td = TikTokTrackDetails(self.driver) self.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.story("AP-6597") @allure.severity(allure.severity_level.NORMAL) @allure.title("[Track> Details> TikTok] Metrics calculations verification.") @allure.description("TC verifies calculations for TikTok data on Track Page > Details section ") def test_tiktok_td_metrics_calculations(self): self.loginPage.login_with_worker() self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track50")["id"], market_id=AppConfig.get("market")["canada"]["url"]) # steps 1-26 self.tp.td_switch_to_tiktok_tab() self.tiktok_td_compare_ui_and_api(AppConfig.get("track50")["isrc"], ["ca"]) # step 27 self.tp.market_dd_choose_few_countries(param=[AppConfig.get("market")["us"]["name"]], tab="td_tiktok") self.tiktok_td_compare_ui_and_api(AppConfig.get("track50")["isrc"], ["us"]) # step 28 self.tp.market_dd_choose_few_countries(param=[AppConfig.get("market")["us"]["name"], AppConfig.get("market")["canada"]["name"]], tab="td_tiktok") self.tiktok_td_compare_ui_and_api(AppConfig.get("track50")["isrc"], ["us", "ca"]) # step 29 self.tp.stream_and_source_choose_region(param=self.tp.REGION_NORTH_AMERICA, dd="td_tiktok") self.tiktok_td_compare_ui_and_api(AppConfig.get("track50")["isrc"], ["us", "ca"]) # step 30 self.tp.td_filter_by_creations_tiktok([self.tp.pgc]) self.tiktok_td_compare_ui_and_api(AppConfig.get("track50")["isrc"], ["us", "ca"], [self.tp.pgc]) # step 31 self.tp.td_filter_by_creations_tiktok([self.tp.ugc]) self.tiktok_td_compare_ui_and_api(AppConfig.get("track50")["isrc"], ["us", "ca"], [self.tp.ugc]) @allure.step("TP - Tiktok TD - compare UI and API") def tiktok_td_compare_ui_and_api(self, isrc, markets, types=["ugc", "pgc"]): tiktok_td_values_ui = self.tp_tiktok_td.get_track_details_values_ui() tiktok_td_values_api = self.tp_tiktok_td.get_track_details_values_api(isrc, markets, types) # step 1 assert_that(tiktok_td_values_ui["date_creations"]).is_equal_to(tiktok_td_values_api["date_creations"]) assert_that(tiktok_td_values_ui["day_creations"]).is_equal_to(tiktok_td_values_api["day_creations"]) # step 2 assert_that(tiktok_td_values_ui["day_creations_perc"]).is_equal_to(tiktok_td_values_api["day_creations_perc"]) # steps 3-8 assert_that(tiktok_td_values_ui["tooltips"][0]).is_equal_to(tiktok_td_values_api["tooltips"][0]) # step 9 assert_that(tiktok_td_values_ui["day_views"]).is_equal_to(tiktok_td_values_api["day_views"]) # step 10 assert_that(tiktok_td_values_ui["day_views_perc"]).is_equal_to(tiktok_td_values_api["day_views_perc"]) # step 11 assert_that(tiktok_td_values_ui["tooltips"][2]).is_equal_to(tiktok_td_values_api["tooltips"][2]) # step 12 assert_that(tiktok_td_values_ui["7days_creations"]).is_equal_to(tiktok_td_values_api["7days_creations"]) # step 13 assert_that(tiktok_td_values_ui["7days_creations_perc"]).is_equal_to(tiktok_td_values_api["7days_creations_perc"]) # step 14-19 assert_that(tiktok_td_values_ui["tooltips"][1]).is_equal_to(tiktok_td_values_api["tooltips"][1]) # step 20 assert_that(tiktok_td_values_ui["7days_views"]).is_equal_to(tiktok_td_values_api["7days_views"]) # step 21 assert_that(tiktok_td_values_ui["7days_views_perc"]).is_equal_to(tiktok_td_values_api["7days_views_perc"]) # step 22 assert_that(tiktok_td_values_ui["tooltips"][3]).is_equal_to(tiktok_td_values_api["tooltips"][3]) # step 23 assert_that(tiktok_td_values_ui["in_period_creations"]).is_equal_to(tiktok_td_values_api["in_period_creations"]) # step 24 assert_that(tiktok_td_values_ui["in_period_creations_avg"]).is_equal_to(tiktok_td_values_api["in_period_creations_avg"]) # step 25 assert_that(tiktok_td_values_ui["in_period_views"]).is_equal_to(tiktok_td_values_api["in_period_views"]) # step 26 assert_that(tiktok_td_values_ui["in_period_views_avg"]).is_equal_to(tiktok_td_values_api["in_period_views_avg"])