import unittest import allure import pytest from assertpy import assert_that from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig, CoreConfig from app.api_client import ApiClient from app.src.pages.album_page import AlbumPage from app.src.pages.comparison_page import TrackComparisonPage 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 DeepLinkingTrackPageTest(unittest.TestCase): @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.tp = TrackPage(self.driver) self.cp = TrackComparisonPage(self.driver) self.ap = AlbumPage(self.driver) self.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.issue("https://data-analytics.atlassian.net/browse/AP-8739") @pytest.mark.flaky(reruns=0) @allure.story("AP-5124") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-4912] Track Details -> 'Videos' tab. Deep Linking & conditional logic STEPS 1-14") @allure.description("TC verifies that the user can share the link with the selected set of parameters with colleagues. STEPS 1-14") def test_youtube_td_video_dl_and_cl_steps_1_14(self): self.loginPage.login_with_worker() self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track40")["id"], market_id=AppConfig.get("market")["global"]["url"]) # step 1 self.tp.td_switch_to_youtube_tab() self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_tab: 5, self.tp.str_gr_tab: 3}) # step 2 self.tp.td_video_change_type([self.tp.vevo]) self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_video: self.tp.vevo.lower()}) # step 3 self.tp.market_dd_choose_few_countries(tab="youtube", param=[AppConfig.get("market")["us"]["name"], AppConfig.get("market")["australia"]["name"]]) self.tp.refresh() countries_url = sorted(self.tp.parameter_from_url(self.tp.tr_det_country).split(",")) assert_that(countries_url).is_equal_to(["au", "us"]) # step 4 self.tp.td_search_filter("123") self.tp.verify_params_in_url({self.tp.tr_det_yt_filter: 123}) # step 5 self.tp.youtube_change_sources(["Playlist Page", "Notifications"]) self.tp.refresh() sources_url = sorted(self.tp.parameter_from_url(self.tp.tr_det_source).split(",")) countries_url = sorted(self.tp.parameter_from_url(self.tp.tr_det_country).split(",")) self.tp.verify_params_in_url({self.tp.tr_det_yt_filter: 123, self.tp.tr_det_video: self.tp.vevo.lower()}) assert_that(sources_url).is_equal_to(["notifications", "playlist_pages"]) assert_that(countries_url).is_equal_to(["au", "us"]) # step 6 self.tp.select_previous_mounth_period() self.tp.refresh() self.verify_step_6() # step 7 self.tp.td_video_change_type([self.tp.vevo, self.tp.manual]) self.tp.refresh() sources_url = sorted(self.tp.parameter_from_url(self.tp.tr_det_source).split(",")) countries_url = sorted(self.tp.parameter_from_url(self.tp.tr_det_country).split(",")) self.tp.td_video_verify_dd_value("type", "2 Types") self.tp.td_video_verify_dd_value("sources", "2 Sources") self.tp.td_video_verify_dd_value("markets", "2 Markets") filter_ui = self.tp.td_get_filter_value() self.tp.verify_params_in_url({self.tp.tr_det_yt_filter: 123}) assert_that(sources_url).is_equal_to(["notifications", "playlist_pages"]) assert_that(countries_url).is_equal_to(["au", "us"]) assert_that(filter_ui).is_equal_to("123") # step 8 self.tp.go_back() self.tp.refresh() sources_url = sorted(self.tp.parameter_from_url(self.tp.tr_det_source).split(",")) countries_url = sorted(self.tp.parameter_from_url(self.tp.tr_det_country).split(",")) self.tp.td_video_verify_dd_value("type", "Vevo") self.tp.td_video_verify_dd_value("sources", "2 Sources") self.tp.td_video_verify_dd_value("markets", "2 Markets") filter_ui = self.tp.td_get_filter_value() self.tp.verify_params_in_url({self.tp.tr_det_yt_filter: 123, self.tp.tr_det_video: self.tp.vevo.lower()}) assert_that(sources_url).is_equal_to(["notifications", "playlist_pages"]) assert_that(countries_url).is_equal_to(["au", "us"]) assert_that(filter_ui).is_equal_to("123") # step 9 self.tp.td_switch_to_past_playlists_tab() self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_tab: 2, self.tp.str_gr_tab: 1}) self.tp.verify_params_not_in_url([self.tp.tr_det_video, self.tp.tr_det_source, self.tp.tr_det_country, self.tp.tr_det_yt_filter]) # step 10 self.tp.td_switch_to_youtube_tab() self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_tab: 5, self.tp.str_gr_tab: 3}) self.tp.td_video_verify_dd_value("type", "All Types") self.tp.td_video_verify_dd_value("sources", "All Sources") self.tp.td_video_verify_dd_value("markets", "All Markets") filter_ui = self.tp.td_get_filter_value() assert_that(filter_ui).is_equal_to("") # step 11 self.tp.go_back() self.tp.refresh() self.tp.td_is_past_tab_active() self.tp.go_back() self.tp.refresh() self.verify_step_6() # step 12 self.tp.select_market(AppConfig.get("market")["us"]["name"]) url_step_12 = self.tp.get_url() assert_that(url_step_12).is_equal_to(f'{CoreConfig.ENV_BASE_URL}/spotify/track/{AppConfig.get("track40")["id"]}?market={AppConfig.get("market")["us"]["url"]}') # step 13 self.tp.td_switch_to_youtube_tab() self.tp.refresh() self.tp.td_video_verify_dd_value("type", "All Types") self.tp.td_video_verify_dd_value("sources", "All Sources") self.tp.td_video_verify_dd_value("markets", AppConfig.get("market")["us"]["name"]) filter_ui = self.tp.td_get_filter_value() assert_that(filter_ui).is_equal_to("") # step 14 self.tp.stream_and_source_choose_region(param=self.tp.REGION_EUROPE, dd="youtube") self.tp.refresh() self.tp.verify_params_in_url({self.tp.tr_det_region: "reu"}) @allure.issue("https://data-analytics.atlassian.net/browse/AP-8739") @allure.story("AP-5124") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-4912] Track Details -> 'Videos' tab. Deep Linking & conditional logic STEPS 15-16") @allure.description("TC verifies that the user can share the link with the selected set of parameters with colleagues. STEPS 15-16") def test_youtube_td_video_dl_and_cl_steps_15_16(self): self.loginPage.login_with_worker() self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track40")["id"], market_id=AppConfig.get("market")["global"]["url"]) # step 15 default_url = self.tp.get_url() self.tp.td_switch_to_youtube_tab() video_tab_url = self.tp.get_url() self.tp.td_video_change_type([self.tp.vevo]) url_to_go = self.tp.get_url().replace("&tr_det_video=vevo", "&tr_det_video=partner_uploaded") # step 2 self.tp.open_url(url_to_go) self.tp.td_video_verify_dd_value("type", "Manual") # step 3 self.tp.market_dd_choose_few_countries(tab="youtube", param=[AppConfig.get("market")["us"]["name"], AppConfig.get("market")["australia"]["name"]]) url_to_go = self.tp.get_url().replace("&tr_det_country=au%2Cus", f"&{self.tp.tr_det_region}=reu") self.tp.open_url(url_to_go) self.tp.td_video_verify_dd_value("markets", self.tp.REGION_EUROPE) # step 5 self.tp.youtube_change_sources(["Notifications"]) url_to_go = self.tp.get_url().replace("&tr_det_source=notifications", "&tr_det_source=browse_features") self.tp.open_url(url_to_go) self.tp.td_video_verify_dd_value("sources", "Browse Features") # step 14 self.tp.stream_and_source_choose_region(param=self.tp.REGION_NORTH_AMERICA, dd="youtube") url_to_go = self.tp.get_url().replace(f"&{self.tp.tr_det_region}=rna", "&tr_det_country=au") self.tp.open_url(url_to_go) self.tp.td_video_verify_dd_value("markets", AppConfig.get("market")["australia"]["name"]) # step 16 self.tp.open_url(f"{video_tab_url}&tr_det_video=test") self.tp.is_graph_period_displayed() assert_that(self.tp.get_url()).is_equal_to(default_url) @allure.step("Verify Step 6") def verify_step_6(self): sources_url = sorted(self.tp.parameter_from_url(self.tp.tr_det_source).split(",")) countries_url = sorted(self.tp.parameter_from_url(self.tp.tr_det_country).split(",")) self.tp.td_video_verify_dd_value("type", "Vevo") self.tp.td_video_verify_dd_value("sources", "2 Sources") self.tp.td_video_verify_dd_value("markets", "2 Markets") filter_ui = self.tp.td_get_filter_value() self.tp.verify_params_in_url({self.tp.tr_det_yt_filter: 123, self.tp.tr_det_video: self.tp.vevo.lower()}) assert_that(sources_url).is_equal_to(["notifications", "playlist_pages"]) assert_that(countries_url).is_equal_to(["au", "us"]) assert_that(filter_ui).is_equal_to("123")