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.album_page import AlbumPage from app.src.pages.comparison_page import TrackComparisonPage 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 DeepLinkingTrackPageTest(unittest.TestCase): start_date = "2020-01-20" max_length = 3 @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.tp = TrackPage(self.driver) self.ap = AlbumPage(self.driver) self.cp = TrackComparisonPage(self.driver) self.leftPanel = LeftNavigationPanel(self.driver) self.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.story("AP-2419") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-1689] Amazon: verification of stream data calculation on the header of a track page") @allure.description( """TC verifies that user can see total number of Worldwide streams and streams for the selected local market on the header of any track page as accumulated streams values per Spotify dsp, Apple dsp and Amazon dsp. """ ) def test_amazon_calculation_tp_header(self): self.loginPage.login_with_worker() self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track57")["id"], market_id=AppConfig.get("market")["italy"]["url"]) api_global = self.tp.get_api_global_streams_count(market=AppConfig.get("market")["italy"]["market"], track_isrc=AppConfig.get("track57")["isrc"]) api_market = self.tp.get_api_market_streams_count(market=AppConfig.get("market")["italy"]["market"], track_isrc=AppConfig.get("track57")["isrc"]) api_values = [api_market, api_global] # step 1-3 self.verify_top_header_totals(api_values=api_values) # step 4 end_date = self.api_client.get_latest_date_date() self.tp.open_current_url_with_param(f"&str_gr_start_date={self.start_date}&str_gr_end_date={end_date}") self.verify_top_header_totals(api_values=api_values) # step 5 self.tp.select_dsp(AppConfig.get("dsp")["by_dsp"]) legend_totals = self.tp.millify(self.tp.get_streams_in_period_total_combined()) assert_that(legend_totals).is_equal_to(api_market) # step 6 self.tp.stream_and_source_choose_country(self.tp.all_markets) # step 7 legend_totals = self.tp.millify(self.tp.get_streams_in_period_total_combined()) assert_that(legend_totals).is_equal_to(api_global) @allure.step("TP - Verify UI and API top header totals") def verify_top_header_totals(self, api_values): ui_global = self.tp.get_ui_global_streams_count() ui_market = self.tp.get_ui_market_streams_count() ui_values = [ui_market, ui_global] assert_that(api_values).is_equal_to(ui_values) assert_that(len(str(ui_global))).is_less_than_or_equal_to(self.max_length) assert_that(len(str(ui_market))).is_less_than_or_equal_to(self.max_length)