import unittest import allure import pytest from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig, CoreConfig from ..pages.login_page import LoginPage from ..pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class TrackPageTest(unittest.TestCase): spotify_track_id = "7LzouaWGFCy4tkXDOOnEyM" @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.trackPage = TrackPage(self.driver) self.ts = TestStatus(self.driver) @allure.story("POC scope") @allure.severity(allure.severity_level.NORMAL) @allure.title("Test sum of streams on a track page") @allure.description("Check that user is able to get streams data for a custom dates period with appropriate " "deeplinks verification") def test_sum_of_streams_for_custom_period(self): # login self.loginPage.login(CoreConfig.USER_EMAIL, CoreConfig.USER_PASSWORD) self.loginPage.is_logged_in() # open the track page and set market with a dsp self.trackPage.open_spotify_track_page(self.spotify_track_id) self.trackPage.select_market("Australia") self.trackPage.select_dsp("Apple Music") # selecting previous month from calendar self.trackPage.select_previous_mounth_period() # matching dates from calendar and deeplinks in url self.ts.markFinal(self.trackPage.are_start_dates_match(), "Start dates are matching") self.ts.markFinal(self.trackPage.are_end_dates_match(), "End dates are matching") @allure.story("POC scope") @allure.severity(allure.severity_level.NORMAL) @allure.title("Check that user is able to get data for a one year period using date quick filter") @allure.description("Track performance graph for 1Y period – data loading") def test_graph_selection_for_one_year(self): # login self.loginPage.login(CoreConfig.USER_EMAIL, CoreConfig.USER_PASSWORD) self.loginPage.is_logged_in() # open the track page and set market with a dsp self.trackPage.open_spotify_track_page(self.spotify_track_id) self.trackPage.select_market("Australia") self.trackPage.select_dsp("Apple Music") # selecting 1 year quick filter self.trackPage.select_graph_one_year_period() graph_period = self.trackPage.get_graph_period_displayed() # verifying 1 year period data is displayed self.ts.markFinal(self.trackPage.is_graph_period_correct(graph_period, 366), "Graph period is valid") @allure.story("POC scope") @allure.severity(allure.severity_level.NORMAL) @allure.title("Legend in Track Performance: ‘Lean back’ + ’Lean forward’ ") @allure.description("Legend in Track Performance: ‘Lean back’ + ’Lean forward’ should be equal to 100%") def test_legend_lean_back_lean_forward(self): # login self.loginPage.login(CoreConfig.USER_EMAIL, CoreConfig.USER_PASSWORD) self.loginPage.is_logged_in() # open the track page and set market with a dsp self.trackPage.open_spotify_track_page(self.spotify_track_id) self.trackPage.select_market("Australia") self.trackPage.select_dsp("Spotify") # getting and calculating totals for lean back and lean forward sections lean_back = self.trackPage.get_lean_back_values() lean_forward = self.trackPage.get_lean_forward_values() # verifying that total calculation self.ts.markFinal(self.trackPage.are_lean_froward_and_back_100(lean_back, lean_forward), "Values sum is 100%") @allure.story("POC scope") @allure.severity(allure.severity_level.NORMAL) @allure.title("Test global and market sums of streams") @allure.description("Global stream calculation and streams for particular market (Global + AU)") def test_sum_of_streams_calculation(self): # login self.loginPage.login(CoreConfig.USER_EMAIL, CoreConfig.USER_PASSWORD) self.loginPage.is_logged_in() # open the track page and set market with a dsp self.trackPage.open_spotify_track_page(AppConfig.get("spotify_trackId")) self.trackPage.select_market("Australia") self.trackPage.select_dsp("Apple Music") # getting and saving total values from the API api_global = self.trackPage.get_api_global_streams_count("au", AppConfig.get("spotify_track_isrc")) api_market = self.trackPage.get_api_market_streams_count("au", AppConfig.get("spotify_track_isrc")) # getting and saving total values from the UI ui_global = self.trackPage.get_ui_global_streams_count() ui_market = self.trackPage.get_ui_market_streams_count() # verifying api data match with ui data self.ts.markFinal(self.trackPage.are_market_values_equal(api_global, ui_global), "Global values are equal") self.ts.markFinal(self.trackPage.are_market_values_equal(api_market, ui_market), "Market values are equal")