import unittest import allure import pytest from assertpy import assert_that from parameterized import parameterized 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.new_music_friday import NewMusicFridayPage from app.src.pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class DeepLinkingTrackPageTest(unittest.TestCase): @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.tp = TrackPage(self.driver) self.amazon_playlist = AmazonPlaylistPage(self.driver) self.nmf = NewMusicFridayPage(self.driver) self.ts = TestStatus(self.driver) @parameterized.expand([("spotify", AppConfig.get("track14")["id"]), ("apple", AppConfig.get("track14")["apple_id"])]) @allure.story("AP-8283") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-7986][Deep Linking] Track → Details section → ‘Past Playlists’ tab STEPS 1-5, 11") @allure.description("TC verifies that users can share a link to Track page → Details section → Past Playlists with selected filters. STEPS 1-5, 11") def test_tp_td_past_playlist_tab_dl_verification_steps_1_5(self, type, id): self.loginPage.login_with_worker() self.tp.open_track_page(type, id, AppConfig.get("market")["global"]["url"]) # step 1 self.tp.td_switch_to_past_playlists_tab() self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_tab: 2}) # step 2 self.tp.td_change_dsp(AppConfig.get("dsp")["apple"]) self.tp.refresh() dsp_ui = self.tp.td_get_current_dsp() self.tp.verify_params_in_url({self.tp.tr_det_tab: 2, self.tp.tr_det_dsp_prev: 2}) assert_that(dsp_ui).is_equal_to(AppConfig.get("dsp")["apple"]) self.tp.td_change_dsp(AppConfig.get("dsp")["spotify"]) self.tp.refresh() dsp_ui = self.tp.td_get_current_dsp() self.tp.verify_params_in_url({self.tp.tr_det_tab: 2, self.tp.tr_det_dsp_prev: 1}) assert_that(dsp_ui).is_equal_to(AppConfig.get("dsp")["spotify"]) self.tp.td_change_dsp(AppConfig.get("dsp")["all_dsps"]) self.tp.refresh() dsp_ui = self.tp.td_get_current_dsp() self.tp.verify_params_in_url({self.tp.tr_det_tab: 2, self.tp.tr_det_dsp_prev: 0}) assert_that(dsp_ui).is_equal_to(AppConfig.get("dsp")["all_dsps"]) # step 3 self.tp.td_change_type(AppConfig.get("type")["editorial"]) self.tp.refresh() type_ui = self.tp.td_get_current_type() self.tp.verify_params_in_url({self.tp.tr_det_tab: 2, self.tp.tr_det_dsp_prev: 0, self.tp.tr_det_playlist_type_prev: 2}) assert_that(type_ui).is_equal_to(AppConfig.get("type")["editorial"]) # step 4 self.tp.td_change_type(AppConfig.get("type")["personalized"]) self.tp.refresh() type_ui = self.tp.td_get_current_type() self.tp.verify_params_in_url({self.tp.tr_det_tab: 2, self.tp.tr_det_dsp_prev: 0, self.tp.tr_det_playlist_type_prev: 1}) assert_that(type_ui).is_equal_to(AppConfig.get("type")["personalized"]) # step 5 self.tp.td_change_type([AppConfig.get("type")["personalized"], AppConfig.get("type")["editorial"]]) self.tp.refresh() type_ui = self.tp.td_get_current_type() self.tp.verify_params_in_url({self.tp.tr_det_tab: 2, self.tp.tr_det_dsp_prev: 0, self.tp.tr_det_playlist_type_prev: 0}) assert_that(type_ui).is_equal_to("All Types") @parameterized.expand([("spotify", AppConfig.get("track14")["id"]), ("apple", AppConfig.get("track14")["apple_id"])]) @allure.story("AP-8283") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-7986][Deep Linking] Track → Details section → ‘Past Playlists’ tab STEPS 6-10, 11") @allure.description("TC verifies that users can share a link to Track page → Details section → Past Playlists with selected filters. STEPS 6-10, 11") def test_tp_td_past_playlist_tab_dl_verification_steps_6_10(self, type, id): self.loginPage.login_with_worker() self.tp.open_track_page(type, id, AppConfig.get("market")["global"]["url"]) url_before = self.tp.get_url() # step 6 self.tp.td_switch_to_past_playlists_tab() self.tp.td_change_dsp(AppConfig.get("dsp")["all_dsps"]) self.tp.td_change_type(AppConfig.get("type")["editorial"]) self.tp.td_change_type([AppConfig.get("type")["personalized"], AppConfig.get("type")["editorial"]]) self.tp.td_change_owner_category_to(AppConfig.get("owner_category")["apple_curators"]) self.tp.refresh() category_ui = self.tp.td_get_owner_category() self.tp.verify_params_in_url({self.tp.tr_det_tab: 2, self.tp.tr_det_dsp_prev: 0, self.tp.tr_det_playlist_type_prev: 0, self.tp.tr_det_owner_ctg_prev: 1}) assert_that(category_ui).is_equal_to(AppConfig.get("owner_category")["apple_curators"]) # step 7 self.tp.td_change_owner_category_to([AppConfig.get("owner_category")["apple_curators"], AppConfig.get("owner_category")["sony"], AppConfig.get("owner_category")["spotify"]]) self.tp.refresh() category_ui = self.tp.td_get_owner_category() self.tp.verify_params_in_url({self.tp.tr_det_tab: 2, self.tp.tr_det_dsp_prev: 0, self.tp.tr_det_playlist_type_prev: 0, self.tp.tr_det_owner_ctg_prev: "1,5,6"}) assert_that(category_ui).is_equal_to("3 Owner Categories") # step 8 self.tp.td_change_owner_category_to("All Owner Categories") self.tp.refresh() category_ui = self.tp.td_get_owner_category() self.tp.verify_params_in_url({self.tp.tr_det_tab: 2, self.tp.tr_det_dsp_prev: 0, self.tp.tr_det_playlist_type_prev: 0}) assert_that(category_ui).is_equal_to("All Owner Categories") # step 9 self.tp.td_change_owner_market_to([AppConfig.get("market")["global"]["name"], AppConfig.get("market")["us"]["name"], AppConfig.get("market")["australia"]["name"]]) self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_tab: 2, self.tp.tr_det_dsp_prev: 0, self.tp.tr_det_playlist_type_prev: 0, self.tp.tr_det_owner_market_prev: "_gl,au,us"}) # step 10 self.tp.td_switch_to_playlist(self.tp.TD_CURRENT_PLAYLIST_TAB) assert_that(f"{url_before}&tr_det_tab=1").is_equal_to(self.tp.get_url())