import json import unittest from argparse import Namespace 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.src.pages.login_page import LoginPage from app.src.pages.spotify_playlist_page import SpotifyPlaylistPage from app.src.pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class SpotifyPlaylistPageTest(unittest.TestCase): playlist40 = json.loads(json.dumps(AppConfig.get("playlist40")), object_hook=lambda d: Namespace(**d)) @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.spotify_playlist = SpotifyPlaylistPage(self.driver) self.trackPage = TrackPage(self.driver) self.ts = TestStatus(self.driver) @allure.story("AP-9856") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-9642] Spotify Playlist Page Header percentage circle diagrams data calculation verification.") @allure.description("TC verifies correctness of data calculation for percentage circle diagram on the Spotify playlist page → Header") def test_spotify_donut_charts_calculations(self): self.loginPage.login_with_worker() self.spotify_playlist.open_spotify_playlist_page(self.playlist40.id) self.trackPage.select_market(AppConfig.get("market")["us"]["name"]) # steps 1-8 charts_percentage_ui = self.spotify_playlist.get_percentages() sony_ui = charts_percentage_ui["sony"] frontline_ui = charts_percentage_ui["frontline"] local_ui = charts_percentage_ui["local"] sony_api = self.spotify_playlist.get_sony_tracks_percentage_api(id=self.playlist40.id, country=AppConfig.get("market")["us"]["market"]) frontline_api = self.spotify_playlist.get_frontline_tracks_percentage_api(id=self.playlist40.id, country=AppConfig.get("market")["us"]["market"]) local_api = self.spotify_playlist.get_local_tracks_percentage_api(id=self.playlist40.id, country=AppConfig.get("market")["us"]["market"]) assert_that(sony_api).is_equal_to(sony_ui) assert_that(frontline_api).is_equal_to(frontline_ui) assert_that(local_api).is_equal_to(local_ui) # step 9 self.trackPage.select_market(AppConfig.get("market")["australia"]["name"]) charts_percentage_ui = self.spotify_playlist.get_percentages() local_ui = charts_percentage_ui["local"] assert_that(local_ui).is_equal_to(0)