import logging import unittest from datetime import datetime 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.dsp_comparison_page import DSPComparison 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 TikTokComparison(unittest.TestCase): log = cl.Logger(logging.DEBUG) @pytest.fixture(autouse=True) def classSetup(self): self.log = cl.Logger(logging.DEBUG) self.loginPage = LoginPage(self.driver) self.ts = TestStatus(self.driver) self.api_client = ApiClient() self.track_page = TrackPage(self.driver) self.dsp_comparison = DSPComparison(self.driver) @allure.story("AP-6812") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-6708][FE] TikTok Comparison. By Performance. Cards data verification") @allure.description("TC verifies that data on the cards of KPI section on the DSP Comparison → By Performance view correspond with API") def test_tc_by_performance_cards_verifications_fe(self): # step 1-3 self.loginPage.login_with_worker() self.track_page.select_market(AppConfig.get("market")["us"]["name"]) self.dsp_comparison.open(AppConfig.get("track6")["isrc"]) all_dates = self.api_client.get_latest_date_all() end = str(min([(datetime.strptime(all_dates["spotify"], "%Y-%m-%d")).date(), (datetime.strptime(all_dates["tiktok"], "%Y-%m-%d")).date()])) metrics_trends_api = self.api_client.get_metrics_trends(end, [AppConfig.get("track6")["isrc"]]) end_date_ui = self.track_page.get_calendar_end_date() cards_ui = self.dsp_comparison.get_cards_data_ui("creations") assert_that(end_date_ui).is_equal_to(cards_ui["top"]["date"]) assert_that(end).is_equal_to(cards_ui["top"]["date"]) # step 4-5, 7-8 cards = ["creations", "views", "streams"] all_cards_data_before = [] for card in cards: ui_data = self.dsp_comparison.get_cards_data_ui(card) assert_that(metrics_trends_api["items"][cards.index(card)]["latest"]["date"]).is_equal_to(ui_data["top"]["date"]) assert_that(metrics_trends_api["items"][cards.index(card)]["latest"]["value"]).is_equal_to(ui_data["top"]["value"]) assert_that(abs(metrics_trends_api["items"][cards.index(card)]["latest"]["trend"])).is_equal_to(ui_data["top"]["percentage"]) assert_that(metrics_trends_api["items"][cards.index(card)]["week"]["value"]).is_equal_to(ui_data["left"]["value"]) assert_that(abs(metrics_trends_api["items"][cards.index(card)]["week"]["trend"])).is_equal_to(ui_data["left"]["percentage"]) assert_that(abs(metrics_trends_api["items"][cards.index(card)]["week"]["average"]["value"])).is_equal_to(ui_data["right"]["value"]) all_cards_data_before.append(ui_data) # step 9 self.track_page.select_previous_mounth_period() all_cards_data_after = [] for card in cards: ui_data = self.dsp_comparison.get_cards_data_ui(card) all_cards_data_after.append(ui_data) assert_that(all_cards_data_before).is_equal_to(all_cards_data_after) # step 10 self.track_page.select_market(AppConfig.get("market")["sweden"]["name"]) all_cards_data_sweden = [] for card in cards: ui_data = self.dsp_comparison.get_cards_data_ui(card) all_cards_data_sweden.append(ui_data) assert_that(all_cards_data_sweden).is_equal_to(all_cards_data_after) # step 12 self.dsp_comparison.open("USSM12100531") events = self.track_page.get_events_from_console(endpoint="metrics-trends", wait=15) assert_that(events[-1]).ends_with("&isrc=USSM12100531&isrc=USSM12100532") # NOT AUTOMATED STEPS - 6, 11