import logging import unittest from datetime import datetime 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.mysql_db_client_custom import MySqlClient 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) self.sql_client = MySqlClient() @parameterized.expand([(AppConfig.get("market")["global"]["name"], AppConfig.get("market")["global"]["api"]), (AppConfig.get("market")["us"]["name"], AppConfig.get("market")["us"]["api"])]) @allure.story("AP-6859") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-6709][DSP Comparison> By Markets> Overview KPI for 7 days] Cards data verification.") @allure.description("TC verifies data on the cards of KPI section on the DSP Comparison → By Markets view.") def test_tc_by_markets_cards_verification(self, market_name, market_api): # step 1 self.loginPage.login_with_worker() self.track_page.select_market(market_name) self.dsp_comparison.open(AppConfig.get("track6")["isrc"]) self.dsp_comparison.switch_tab(self.dsp_comparison.by_markets_tab) 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()])) end_date_ui = self.track_page.get_calendar_end_date() cards_ui = self.dsp_comparison.get_by_markets_cards_data_ui("creations") assert_that(end_date_ui).is_equal_to(cards_ui["top"]["end_date"]) assert_that(end).is_equal_to(cards_ui["top"]["end_date"]) # step 2-6 metrics_week_values = self.api_client.get_metrics_week_values(market_api, end, AppConfig.get("track6")["isrc"]) cards = ["streams", "creations", "views"] all_cards_data_before = [] for card in cards: ui_data = self.dsp_comparison.get_by_markets_cards_data_ui(card) assert_that(AppConfig.get("market")["global"]["name"]).is_equal_to(ui_data["left"]["market"]) assert_that(metrics_week_values["items"][cards.index(card)]["week"]["value"]["worldwide"]).is_equal_to(ui_data["left"]["value"]) country_code = metrics_week_values["items"][cards.index(card)]["week"]["market"] country_name = self.sql_client.get_market_name_by_country_code(country_code) assert_that(country_name).described_as(card).is_equal_to(ui_data["right"]["market"]) assert_that(metrics_week_values["items"][cards.index(card)]["week"]["value"]["market"]).described_as(card).is_equal_to(ui_data["right"]["value"]) assert_that(metrics_week_values["items"][cards.index(card)]["week"]["percentage"]).described_as(card).is_equal_to(ui_data["right"]["percentage"]) all_cards_data_before.append(ui_data) # step 8 self.track_page.select_previous_mounth_period() all_cards_data_after = [] for card in cards: ui_data = self.dsp_comparison.get_by_markets_cards_data_ui(card) all_cards_data_after.append(ui_data) assert_that(all_cards_data_before).is_equal_to(all_cards_data_after)