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.amazon_playlist_page import AmazonPlaylistPage 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 ApplePlaylistPageTest(unittest.TestCase): playlist33 = json.loads(json.dumps(AppConfig.get("playlist33")), object_hook=lambda d: Namespace(**d)) us = json.loads(json.dumps(AppConfig.get("market")["us"]), object_hook=lambda d: Namespace(**d)) bolivia = json.loads(json.dumps(AppConfig.get("market")["bolivia"]), object_hook=lambda d: Namespace(**d)) canada = json.loads(json.dumps(AppConfig.get("market")["canada"]), object_hook=lambda d: Namespace(**d)) @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.amazon_playlist = AmazonPlaylistPage(self.driver) self.trackPage = TrackPage(self.driver) self.ts = TestStatus(self.driver) @allure.issue("https://data-analytics.atlassian.net/browse/AP-8786") @pytest.mark.flaky(reruns=0) @allure.story("AP-8327") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-8027][Amazon Playlist] Donut charts data calculations") @allure.description("TC verifies the correctness of data calculation for Donut charts on the Amazon Music playlist page.") def test_amazon_donut_charts_calculations(self): self.loginPage.login_with_worker() self.amazon_playlist.open_amazon_playlist_page(self.playlist33.amazon_id) self.trackPage.select_market(self.us.name) self.amazon_playlist.are_donuts_displayed() frontline_ui = self.amazon_playlist.get_percentage_frontline_ui() local_ui = self.amazon_playlist.get_percentage_local_ui() frontline_api = self.amazon_playlist.get_frontline_tracks_percentage_api(id=self.playlist33.amazon_id, country=self.us.market) local_api = self.amazon_playlist.get_local_tracks_percentage_api(id=self.playlist33.amazon_id, country=self.us.market) # step 1-4 assert_that(frontline_api).is_equal_to(frontline_ui) # step 5-6 assert_that(local_ui).is_equal_to(local_api) # step 7 self.trackPage.select_market(self.bolivia.name) self.trackPage.is_market_in_header_correct(self.bolivia.header) current_market = self.amazon_playlist.get_selected_market() assert_that(current_market).is_equal_to(self.us.name) self.amazon_playlist.get_selected_market() self.amazon_playlist.page_has_loaded() frontline_ui_bolivia = self.amazon_playlist.get_percentage_frontline_ui() local_ui_bolivia = self.amazon_playlist.get_percentage_local_ui() assert_that(frontline_ui).is_equal_to(frontline_ui_bolivia) assert_that(local_ui).is_equal_to(local_ui_bolivia) # step 8-10 self.amazon_playlist.change_market(self.canada.name) frontline_ui = self.amazon_playlist.get_percentage_frontline_ui() local_ui = self.amazon_playlist.get_percentage_local_ui() frontline_api = self.amazon_playlist.get_frontline_tracks_percentage_api(id=self.playlist33.amazon_id, country=self.canada.market) local_api = self.amazon_playlist.get_local_tracks_percentage_api(id=self.playlist33.amazon_id, country=self.canada.market) assert_that(frontline_api).is_equal_to(frontline_ui) assert_that(local_ui).is_equal_to(local_api)