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.chart_digest import ChartDigestPage from app.src.pages.global_track_priorities_page import GlobalTrackPrioritiesPage from app.src.pages.gtp_cpot_popup import GTPCPOTPopup from app.src.pages.left_navigation_panel import LeftNavigationPanel 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 GlobalTrackPrioritiesPageTest(unittest.TestCase): @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.chartDigestPage = ChartDigestPage(self.driver) self.gtp = GlobalTrackPrioritiesPage(self.driver) self.gtp_cpot_popup = GTPCPOTPopup(self.driver) self.lnp = LeftNavigationPanel(self.driver) self.chart_digest = ChartDigestPage(self.driver) self.trackPage = TrackPage(self.driver) self.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.story("AP-4970") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-4104/1] GTP. Chart Position Over Time modal verification") @allure.description("""TC verifies Chart Position Over Time modal window""") def test_cpot_part_1(self): self.loginPage.login_with_worker() self.trackPage.select_market(AppConfig.get("market")["us"]["name"]) self.lnp.open_gtp() # step 1 for t in [self.gtp.TAB_BU, self.gtp.TAB_OH, self.gtp.TAB_CH]: self.gtp.open_tab(t) self.gtp.open_cpot_from_table() self.gtp_cpot_popup.close_popup() self.gtp.open_tab(self.gtp.TAB_OP) self.gtp.open_cpot_from_table(position=2) # step 3 self.gtp_cpot_popup.verify_elements() markets = self.gtp_cpot_popup.get_markets() self.ts.markFinal( [AppConfig.get("market")["global"]["name"].upper(), AppConfig.get("market")["us"]["name"].upper()] == markets, f"STEP 3: markets are: {markets}", ) # step 4 name_ui = self.gtp_cpot_popup.click_track_name_verify() # step 5 self.gtp.open_cpot_from_table(position=2) self.gtp_cpot_popup.click_artist_name_verify() # step 6-7 self.gtp.open_cpot_from_table(position=2) self.gtp_cpot_popup.verify_cp_sc_areas() # step 8 tooltips = self.gtp_cpot_popup.get_tooltips(market=AppConfig.get("market")["us"]["market"]) tooltips_filtered = [t for t in tooltips if t["m_position"] >= 0 and t["g_position"] >= 0 and t["g_streams"] >= 0 and t["m_streams"] >= 0] tooltip = tooltips_filtered[0] # step 9 date_to_check = tooltip["date"] streams_us = tooltip["m_streams"] streams_global = tooltip["g_streams"] spotify_id = self.gtp_cpot_popup.get_track_id() streams_us_api = self.trackPage.get_api_streams_count( market=AppConfig.get("market")["us"]["market"], start_date=date_to_check, end_date=date_to_check, id=spotify_id, ) streams_global_api = self.trackPage.get_api_streams_count( market=AppConfig.get("market")["global"]["api3"], start_date=date_to_check, end_date=date_to_check, id=spotify_id, ) self.ts.markFinal(streams_us == streams_us_api, f"STEP 9: streams us: {streams_us} and {streams_us_api} match") self.ts.markFinal(streams_global == streams_global_api, f"streams global: {streams_global} and {streams_global_api} match") # step 10 position_us = tooltip["m_position"] position_global = tooltip["g_position"] api_name_us = self.api_client.get_charts_tracks(vendor="spotify", market=AppConfig.get("market")["us"]["market"], date=date_to_check, type="daily")["tracks"][position_us - 1]["name"] api_name_global = self.api_client.get_charts_tracks(vendor="spotify", market=AppConfig.get("market")["global"]["api2"], date=date_to_check, type="daily")["tracks"][position_global - 1]["name"] assert_that(name_ui).is_equal_to_ignoring_case(api_name_global) assert_that(name_ui).is_equal_to_ignoring_case(api_name_us) # step 11-16 self.gtp_cpot_popup.verify_chart_min_max(tooltips=tooltips, market=AppConfig.get("market")["us"]["market"]) self.gtp_cpot_popup.close_popup() # step 17 self.trackPage.select_market(AppConfig.get("market")["global"]["name"]) for t in [self.gtp.TAB_BU, self.gtp.TAB_OH, self.gtp.TAB_CH]: self.gtp.open_tab(t) self.gtp.open_cpot_from_table() self.gtp_cpot_popup.close_popup() self.gtp.open_tab(self.gtp.TAB_OP) self.gtp.open_cpot_from_table(position=2) # step 18 self.gtp_cpot_popup.verify_elements() markets = self.gtp_cpot_popup.get_markets() self.ts.markFinal([AppConfig.get("market")["global"]["name"].upper()] == markets, f"STEP 18: markets are: {markets}") # step 19 self.gtp_cpot_popup.get_tooltips(market=AppConfig.get("market")["global"]["name"]) # NOT AUTOMATED - STEP 2