import unittest import allure import pytest from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig, CoreConfig from app.api_client import ApiClient from app.src.pages.album_page import AlbumPage 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 DemographicsTrackPageTest(unittest.TestCase): album_id = "39P7VD7qlg3Z0ltq60eHp7" isrcs = [ "USSM10803202", "USSM10804556", "USSM10804557", "USSM10804727", "USSM10804728", "USSM10804752", "USSM10803760", "USSM10804754", "USSM10804755", "USSM10804756", "USSM10804757", ] @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.trackPage = TrackPage(self.driver) self.album_page = AlbumPage(self.driver) self.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.story("AP-3503") @allure.severity(allure.severity_level.NORMAL) @allure.title("Spotify Saves and Skip rate calculations verification") @allure.description("TC verifies the accuracy of Saves and Skip rate calculation after switching to a new endpoint on Album and Track pages.") def test_save_and_skips_album_page(self): user = self.loginPage.get_user_email_with_worker() token = self.api_client.authorize(user=user) self.loginPage.login_with_worker() self.loginPage.is_logged_in() self.album_page.open_album_page(self.album_id) self.trackPage.select_market(AppConfig.get("market")["us"]["name"]) self.trackPage.wait_for_stream_performance_graph_visible() # step 1-3 self.album_page.verify_save_and_skips(isrcs=self.isrcs, market=AppConfig.get("market")["us"]["market"], token=token) # step 4-5 self.trackPage.stream_and_source_choose_country("All Markets") self.album_page.verify_save_and_skips(isrcs=self.isrcs, market=AppConfig.get("market")["global"]["api"], token=token) # step 6 self.trackPage.select_market(AppConfig.get("market")["global"]["name"]) self.album_page.verify_save_and_skips(isrcs=self.isrcs, market=AppConfig.get("market")["global"]["api"], token=token) # step 7 response_api = self.api_client.get_spotify_demographics_delphi_isrcs( isrcs=self.isrcs, start_date="2017-01-01", end_date="2017-09-03", market=AppConfig.get("market")["global"]["api"], token=token, ) save_skips_api = [ round(response_api["body"][0]["skips"] / (response_api["body"][0]["streams"] + response_api["body"][0]["skips"]) * 100), response_api["body"][0]["saves"]["total"], ] self.ts.markFinal(save_skips_api == [0, 0], "STEP 7: save and skips from api: {}".format(save_skips_api)) # step 8 self.trackPage.select_previous_mounth_period() self.album_page.verify_save_and_skips(isrcs=self.isrcs, market=AppConfig.get("market")["global"]["api"], token=token) # step 9 url_to_open = "{url}/spotify/track/{id}?market={market}".format(url=CoreConfig.ENV_BASE_URL, id=AppConfig.get("track30")["id"], market=AppConfig.get("market")["us"]["url"]) self.trackPage.open_url(url_to_open) self.trackPage.select_dsp("Spotify") self.trackPage.wait_for_stream_performance_graph_visible() self.trackPage.verify_save_and_skips(isrcs=[AppConfig.get("track30")["isrc"]], market=AppConfig.get("market")["us"]["market"], token=token) url_to_open = "{url}/spotify/track/{id}?market={market}".format( url=CoreConfig.ENV_BASE_URL, id=AppConfig.get("track30")["id"], market=AppConfig.get("market")["global"]["url"], ) self.trackPage.open_url(url_to_open) self.trackPage.select_dsp("Spotify") self.trackPage.wait_for_stream_performance_graph_visible() self.trackPage.verify_save_and_skips(isrcs=[AppConfig.get("track30")["isrc"]], market=AppConfig.get("market")["global"]["api"], token=token) self.trackPage.select_previous_mounth_period() self.trackPage.verify_save_and_skips(isrcs=[AppConfig.get("track30")["isrc"]], market=AppConfig.get("market")["global"]["api"], token=token) response_api = self.api_client.get_spotify_demographics_delphi_isrcs( isrcs=[AppConfig.get("track30")["isrc"]], start_date="2017-01-01", end_date="2017-09-03", market=AppConfig.get("market")["global"]["api"], token=token, combine=False, ) save_skips_api = [ round(response_api["body"][0]["skips"] / (response_api["body"][0]["streams"] + response_api["body"][0]["skips"]) * 100), response_api["body"][0]["saves"]["total"], ] self.ts.markFinal(save_skips_api == [0, 0], "save and skips from api: {}".format(save_skips_api))