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-8276") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-7986][Deep Linking] Track → Details section → ‘Current Playlists&Stations’ tab STEPS 1-7, 21") @allure.description("TC verifies that users can share a link to Track page → Details section → Current Playlists&Stations with selected filters. STEPS 1-7, 21") def test_tp_td_current_playlist_and_stations_tab_dl_verification_steps_1_7(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_change_dsp(AppConfig.get("dsp")["apple"]) self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_dsp: 2}) td_dsp = self.tp.td_get_current_dsp() assert_that(td_dsp).is_equal_to(AppConfig.get("dsp")["apple"]) # step 2 self.tp.td_change_dsp(AppConfig.get("dsp")["spotify"]) self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_dsp: 1}) td_dsp = self.tp.td_get_current_dsp() assert_that(td_dsp).is_equal_to(AppConfig.get("dsp")["spotify"]) self.tp.td_change_dsp(AppConfig.get("dsp")["amazon"]) self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_dsp: 3}) td_dsp = self.tp.td_get_current_dsp() assert_that(td_dsp).is_equal_to(AppConfig.get("dsp")["amazon"]) self.tp.td_change_dsp(AppConfig.get("dsp")["all_dsps"]) self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_dsp: 0}) td_dsp = self.tp.td_get_current_dsp() assert_that(td_dsp).is_equal_to(AppConfig.get("dsp")["all_dsps"]) # step 3 self.tp.td_change_dsp([AppConfig.get("dsp")["spotify"], AppConfig.get("dsp")["apple"]]) self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_dsp: "1,2"}) td_dsp = self.tp.td_get_current_dsp() assert_that(td_dsp).is_equal_to("2 DSPs") # step 4 self.tp.td_change_entities(AppConfig.get("source")["stations"]) self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_dsp: "1,2", self.tp.tr_det_current_entity: 2}) entity_ui = self.tp.td_get_current_entities() assert_that(entity_ui).is_equal_to_ignoring_case(AppConfig.get("source")["stations"]) # step 5 self.tp.td_change_entities(AppConfig.get("source")["playlists"]) self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_dsp: "1,2", self.tp.tr_det_current_entity: 1}) entity_ui = self.tp.td_get_current_entities() assert_that(entity_ui).is_equal_to_ignoring_case(AppConfig.get("source")["playlists"]) # step 6 self.tp.td_change_entities([AppConfig.get("source")["playlists"], AppConfig.get("source")["stations"]]) self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_dsp: "1,2", self.tp.tr_det_current_entity: 0}) entity_ui = self.tp.td_get_current_entities() assert_that(entity_ui).is_equal_to("All Entities") # step 7 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_dsp: "1,2", self.tp.tr_det_current_entity: 0, self.tp.tr_det_playlist_type: 2}) assert_that(type_ui).is_equal_to(AppConfig.get("type")["editorial"]) @parameterized.expand([("spotify", AppConfig.get("track14")["id"]), ("apple", AppConfig.get("track14")["apple_id"])]) @allure.story("AP-8276") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-7986][Deep Linking] Track → Details section → ‘Current Playlists&Stations’ tab STEPS 8-14, 21") @allure.description("TC verifies that users can share a link to Track page → Details section → Current Playlists&Stations with selected filters. STEPS 8-14, 21") def test_tp_td_current_playlist_and_stations_tab_dl_verification_steps_8_14(self, type, id): self.loginPage.login_with_worker() self.tp.open_track_page(type, id, AppConfig.get("market")["global"]["url"]) # step 8 self.tp.td_change_dsp([AppConfig.get("dsp")["spotify"], AppConfig.get("dsp")["apple"]]) self.tp.td_change_entities([AppConfig.get("source")["playlists"], AppConfig.get("source")["stations"]]) 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_dsp: "1,2", self.tp.tr_det_current_entity: 0, self.tp.tr_det_playlist_type: 1}) assert_that(type_ui).is_equal_to(AppConfig.get("type")["personalized"]) # step 9 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_dsp: "1,2", self.tp.tr_det_current_entity: 0, self.tp.tr_det_playlist_type: 0}) assert_that(type_ui).is_equal_to("All Types") # step 10 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_dsp: "1,2", self.tp.tr_det_current_entity: 0, self.tp.tr_det_playlist_type: 0, self.tp.tr_det_owner_ctg: 1}) assert_that(category_ui).is_equal_to(AppConfig.get("owner_category")["apple_curators"]) # step 11 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_dsp: "1,2", self.tp.tr_det_current_entity: 0, self.tp.tr_det_playlist_type: 0, self.tp.tr_det_owner_ctg: "1,5,6"}) assert_that(category_ui).is_equal_to("3 Owner Categories") # step 12 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_dsp: "1,2", self.tp.tr_det_current_entity: 0, self.tp.tr_det_playlist_type: 0}) self.tp.verify_params_not_in_url([self.tp.tr_det_owner_ctg]) assert_that(category_ui).is_equal_to("All Owner Categories") # step 13 self.tp.td_switch_market_toggle(self.tp.MARKETS_ALL["tab"]) self.tp.refresh() self.tp.verify_selected_td_markets_toggle(self.tp.MARKETS_ALL["tab"]) self.tp.verify_params_in_url({self.tp.tr_det_dsp: "1,2", self.tp.tr_det_current_entity: 0, self.tp.tr_det_playlist_type: 0, self.tp.tr_det_top_markets: 2}) self.tp.verify_params_not_in_url([self.tp.tr_det_owner_ctg]) # step 14 self.tp.td_switch_market_toggle(self.tp.MARKETS_TOP["tab"]) self.tp.refresh() self.tp.verify_selected_td_markets_toggle(self.tp.MARKETS_TOP["tab"]) self.tp.verify_params_in_url({self.tp.tr_det_dsp: "1,2", self.tp.tr_det_current_entity: 0, self.tp.tr_det_playlist_type: 0, self.tp.tr_det_top_markets: 1}) self.tp.verify_params_not_in_url([self.tp.tr_det_owner_ctg]) @parameterized.expand([("spotify", AppConfig.get("track14")["id"]), ("apple", AppConfig.get("track14")["apple_id"])]) @allure.story("AP-8276") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-7986][Deep Linking] Track → Details section → ‘Current Playlists&Stations’ tab STEPS 15-20, 21") @allure.description("TC verifies that users can share a link to Track page → Details section → Current Playlists&Stations with selected filters. STEPS 15-20, 21") def test_tp_td_current_playlist_and_stations_tab_dl_verification_steps_15_20(self, type, id): self.loginPage.login_with_worker() self.tp.open_track_page(type, id, AppConfig.get("market")["global"]["url"]) # step 15 self.tp.td_change_dsp([AppConfig.get("dsp")["spotify"], AppConfig.get("dsp")["apple"]]) self.tp.td_change_entities([AppConfig.get("source")["playlists"], AppConfig.get("source")["stations"]]) self.tp.td_change_type(AppConfig.get("type")["personalized"]) self.tp.td_change_type([AppConfig.get("type")["personalized"], AppConfig.get("type")["editorial"]]) self.tp.td_switch_market_toggle(self.tp.MARKETS_ALL["tab"]) 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_selected_td_markets_toggle(self.tp.MARKETS_ALL["tab"]) self.tp.verify_params_in_url({self.tp.tr_det_dsp: "1,2", self.tp.tr_det_current_entity: 0, self.tp.tr_det_playlist_type: 0, self.tp.tr_det_top_markets: 2, self.tp.tr_det_owner_market: "_gl,au,us"}) # step 16 self.tp.td_switch_to_past_playlists_tab() self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_tab: 2}) # step 17 self.tp.select_market(AppConfig.get("market")["us"]["name"]) self.tp.verify_params_in_url({self.tp.market: 4}) self.tp.verify_params_not_in_url([self.tp.tr_det_dsp, self.tp.tr_det_current_entity, self.tp.tr_det_playlist_type, self.tp.tr_det_top_markets, self.tp.tr_det_owner_market]) # step 18 self.tp.td_switch_to_worldwide_streams() self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_market_str: 1}) # step 19 self.tp.td_switch_to_worldwide_streams(False) self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_market_str: 2}) # step 20 self.tp.td_switch_to_past_playlists_tab() self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_tab: 2})