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.api_client import ApiClient from app.mysql_db_client_custom import MySqlClient from app.src.pages.amazon_playlist_page import AmazonPlaylistPage from app.src.pages.apple_playlist_page import ApplePlaylistPage 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): playlist35 = json.loads(json.dumps(AppConfig.get("playlist35")), object_hook=lambda d: Namespace(**d)) us = json.loads(json.dumps(AppConfig.get("market")["us"]), object_hook=lambda d: Namespace(**d)) @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.ap = ApplePlaylistPage(self.driver) self.tp = TrackPage(self.driver) self.amazon_playlist = AmazonPlaylistPage(self.driver) self.api_client = ApiClient() self.sql_client = MySqlClient() self.ts = TestStatus(self.driver) @allure.story("AP-8386") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-8062][Amazon Playlist] Starring/Unstarring tracks") @allure.description("TC verifies that user can add/remove tracks to/from My Starred Tracks from Amazon Playlist page.") def test_amazon_star_unstar_tracks_verification(self): self.amazon_playlist.unstar_all_tracks() self.loginPage.login_with_worker() self.tp.select_market(AppConfig.get("market")["us"]["name"]) self.amazon_playlist.open_amazon_playlist_page(self.playlist35.amazon_id) self.amazon_playlist.change_market(self.us.name) # step 1-4 isrc_track_ui = self.amazon_playlist.get_isrc_for_track_by_index(market=self.us.market) self.amazon_playlist.star_unstar_by_index_and_verify_ui() isrcs_starred = self.amazon_playlist.get_isrcs_ids_all_starred_tracks()["isrcs"] assert_that(isrcs_starred).contains(isrc_track_ui) # steps 5-7 self.amazon_playlist.star_unstar_by_index_and_verify_ui(star=False) isrcs_starred = self.amazon_playlist.get_isrcs_ids_all_starred_tracks()["isrcs"] assert_that(isrcs_starred).does_not_contain(isrc_track_ui) # step 8 self.tp.open_spotify_track_page(AppConfig.get("track40")["id"]) self.tp.star_unstar_track_and_verify_ui() isrcs_starred = self.amazon_playlist.get_isrcs_ids_all_starred_tracks()["isrcs"] assert_that(isrcs_starred).contains(AppConfig.get("track40")["isrc"]) # step 9 self.tp.star_unstar_track_and_verify_ui(star=False) isrcs_starred = self.amazon_playlist.get_isrcs_ids_all_starred_tracks()["isrcs"] assert_that(isrcs_starred).does_not_contain(AppConfig.get("track40")["isrc"])