import unittest import allure import pytest from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig, CoreConfig 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): spotify_track_id = "7LzouaWGFCy4tkXDOOnEyM" apple_track_id = "1478601842" global_market_name = "Global" us_market_name = "United States" brazil_market_name = "Brazil" austria_market_name = "Austria" argentine_market_name = "Argentina" str_brazil = "br" str_austria = "at" str_gr_view = "str_gr_view" str_gr_country = "str_gr_country" str_gr_source = "str_gr_source" str_gr_dsp = "str_gr_dsp" str_gr_tab = "str_gr_tab" source_playlists = "Playlists" six_month_period = "26 Weeks" one_year_period = "1 Year" dsp_apple = "Apple Music" dsp_total_streams = AppConfig.get("dsp")["total_streams"] dsp_spotify = "Spotify" dsp_amazon = "Amazon" source_all = AppConfig.get("source")["all"] source_search = "Search" source_station = "Station" source_user_playlist = "User Playlist" playlists = "playlists" search = "search" amazon_all_sources = sorted(["playlists", "userPlaylist", "station", "search", "album", "artist", "songs"]) @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.trackPage = TrackPage(self.driver) self.ts = TestStatus(self.driver) @allure.story("AP-2307") @allure.severity(allure.severity_level.NORMAL) @allure.title("Deep linking: Stream Graph parameters setting up for Amazon STEP 1-5 Spotify track - Amazon") @allure.description("TC verifies that a user has an ability to set up stream Graph keys with a valid and invalid market value " "automatically or manually inside a page url") def test_verify_stream_graph_parameter_setting_up_spotify_amazon_1_5(self): self.loginPage.login(CoreConfig.USER_EMAIL, CoreConfig.USER_PASSWORD) self.loginPage.is_logged_in() self.trackPage.open_spotify_track_page(self.spotify_track_id) self.trackPage.select_market(self.global_market_name) self.trackPage.stream_and_source_choose_country(self.us_market_name) self.trackPage.select_dsp(self.dsp_amazon) self.trackPage.is_graph_period_displayed() current_dsp = self.trackPage.get_current_dsp() url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) self.ts.markFinal(url_gr_dsp == 3, "STEP 1 : " + self.str_gr_source + " parameter is equal to: " + str(3)) self.ts.markFinal(current_dsp == self.dsp_amazon, self.str_gr_dsp + " parameter is equal to: " + self.dsp_amazon) self.trackPage.choose_graph_view_line_graph() url_gr_view = int(self.trackPage.parameter_from_url(self.str_gr_view)) url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) self.ts.markFinal(url_gr_view == 1, " : " + self.str_gr_view + " parameter is equal to: " + str(1)) self.ts.markFinal(url_gr_dsp == 3, "STEP 2 : " + self.str_gr_source + " parameter is equal to: " + str(3)) self.trackPage.change_source_value(self.source_playlists) url_gr_source = self.trackPage.parameter_from_url(self.str_gr_source) url_gr_view = int(self.trackPage.parameter_from_url(self.str_gr_view)) url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) self.ts.markFinal(url_gr_view == 2, f"{self.str_gr_view} parameter is equal to: {url_gr_view}") self.ts.markFinal(url_gr_dsp == 3, "STEP 3 : " + self.str_gr_source + " parameter is equal to: " + str(3)) self.ts.markFinal(url_gr_source == self.playlists, self.str_gr_source + " parameter is equal to: " + url_gr_source) for source in ( (self.source_station, "station"), (self.source_user_playlist, "userPlaylist"), (self.source_search, "search"), ): self.trackPage.change_source_value(source[0]) url_gr_source = self.trackPage.parameter_from_url(self.str_gr_source) url_gr_view = int(self.trackPage.parameter_from_url(self.str_gr_view)) url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) if "," in url_gr_source: url_gr_source = sorted(str(url_gr_source).split(",")) self.ts.markFinal(url_gr_view == 2, " : " + self.str_gr_view + " parameter is equal to: " + str(1)) self.ts.markFinal(url_gr_dsp == 3, "STEP 4 : " + self.str_gr_source + " parameter is equal to: " + str(3)) self.ts.markFinal( url_gr_source == source[1], f"{self.str_gr_source} parameter is equal to: {url_gr_source}\n expected: {source[1]}", ) self.trackPage.choose_graph_view_area_graph_percentage() url_gr_source = self.trackPage.parameter_from_url(self.str_gr_source) url_gr_view = int(self.trackPage.parameter_from_url(self.str_gr_view)) url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) self.ts.markFinal(url_gr_view == 3, " : " + self.str_gr_view + " parameter is equal to: " + str(3)) self.ts.markFinal(url_gr_dsp == 3, "STEP 5 : " + self.str_gr_source + " parameter is equal to: " + str(3)) self.ts.markFinal(url_gr_source == self.search, f"{self.str_gr_source} parameter is equal to: {url_gr_source}") @allure.story("AP-2307") @allure.severity(allure.severity_level.NORMAL) @allure.title("Deep linking: Stream Graph parameters setting up for Amazon STEP 6-10 Spotify track - Amazon") @allure.description("TC verifies that a user has an ability to set up stream Graph keys with a valid and invalid market value " "automatically or manually inside a page url") def test_verify_stream_graph_parameter_setting_up_amazon_6_10(self): self.loginPage.login(CoreConfig.USER_EMAIL, CoreConfig.USER_PASSWORD) self.loginPage.is_logged_in() self.trackPage.open_spotify_track_page(self.spotify_track_id) self.trackPage.select_market(self.global_market_name) self.trackPage.stream_and_source_choose_country(self.us_market_name) self.trackPage.select_dsp(self.dsp_amazon) self.trackPage.is_graph_period_displayed() self.trackPage.choose_graph_view_area_graph_percentage() self.trackPage.choose_graph_view_area_graph() self.trackPage.change_source_value(self.source_search) self.trackPage.change_period_in_date_picker(self.six_month_period) url_gr_source = self.trackPage.parameter_from_url(self.str_gr_source) url_gr_view = int(self.trackPage.parameter_from_url(self.str_gr_view)) url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) url_start_date = self.trackPage.get_url_start_date() url_end_date = self.trackPage.get_url_end_date() calendar_start_date = self.trackPage.get_calendar_start_date() calendar_end_date = self.trackPage.get_calendar_end_date() self.ts.markFinal(url_gr_view == 2, "STEP 6 : " + self.str_gr_view + " parameter is equal to: " + str(2)) self.ts.markFinal(url_gr_dsp == 3, self.str_gr_source + " parameter is equal to: " + str(3)) self.ts.markFinal(url_gr_source == self.search, self.str_gr_source + " parameter is equal to: " + url_gr_source) self.ts.markFinal(calendar_start_date == url_start_date, "Calendar start date is equal o: " + calendar_start_date) self.ts.markFinal(calendar_end_date == url_end_date, "Calendar end date is equal to: " + calendar_end_date) self.trackPage.select_dsp(self.dsp_total_streams) url_before = self.trackPage.get_url() url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) self.ts.markFinal(url_gr_dsp == 4, "STEP 7: " + self.str_gr_source + " parameter is equal to: " + str(4)) self.trackPage.refresh() self.trackPage.is_graph_period_displayed() url_after = self.trackPage.get_url() calendar_start_date = self.trackPage.get_calendar_start_date() calendar_end_date = self.trackPage.get_calendar_end_date() current_dsp = self.trackPage.get_current_dsp() self.ts.markFinal(url_before == url_after, "STEP 8: is url correct: " + str(url_before == url_after)) self.ts.markFinal(calendar_start_date == url_start_date, "Calendar start date is equal to: " + calendar_start_date) self.ts.markFinal(calendar_end_date == url_end_date, "Calendar end date is equal to: " + calendar_end_date) self.ts.markFinal(url_gr_dsp == 4, self.str_gr_dsp + " parameter is equal to: " + str(4)) self.ts.markFinal(current_dsp == self.dsp_total_streams, "dsp parameter is equal to: " + self.dsp_total_streams) self.trackPage.go_back() self.trackPage.is_graph_period_displayed() url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) self.ts.markFinal(url_gr_dsp == 3, "STEP 9: " + self.str_gr_dsp + " parameter is equal to: " + str(3)) self.trackPage.go_forward() self.trackPage.is_graph_period_displayed() url_after = self.trackPage.get_url() calendar_start_date = self.trackPage.get_calendar_start_date() calendar_end_date = self.trackPage.get_calendar_end_date() current_dsp = self.trackPage.get_current_dsp() self.ts.markFinal(url_before == url_after, "STEP 10: is url correct: " + str(url_before == url_after)) self.ts.markFinal(calendar_start_date == url_start_date, "Calendar start date is equal to: " + calendar_start_date) self.ts.markFinal(calendar_end_date == url_end_date, "Calendar end date is equal to: " + calendar_end_date) self.ts.markFinal(current_dsp == self.dsp_total_streams, "dsp parameter is equal to: " + self.dsp_total_streams) @allure.story("AP-2307") @allure.severity(allure.severity_level.NORMAL) @allure.title("Deep linking: Stream Graph parameters setting up for Amazon STEP 1-5 Apple track - Amazon") @allure.description("TC verifies that a user has an ability to set up stream Graph keys with a valid and invalid market value " "automatically or manually inside a page url") def test_verify_stream_graph_parameter_setting_up_apple_amazon_1_5(self): self.loginPage.login(CoreConfig.USER_EMAIL, CoreConfig.USER_PASSWORD) self.loginPage.is_logged_in() self.trackPage.open_apple_track_page(self.apple_track_id) self.trackPage.select_market(self.global_market_name) self.trackPage.stream_and_source_choose_country(self.us_market_name) self.trackPage.select_dsp(self.dsp_amazon) self.trackPage.is_graph_period_displayed() current_dsp = self.trackPage.get_current_dsp() url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) self.ts.markFinal(url_gr_dsp == 3, "STEP 1 : " + self.str_gr_source + " parameter is equal to: " + str(3)) self.ts.markFinal(current_dsp == self.dsp_amazon, self.str_gr_dsp + " parameter is equal to: " + self.dsp_amazon) self.trackPage.choose_graph_view_line_graph() url_gr_view = int(self.trackPage.parameter_from_url(self.str_gr_view)) url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) self.ts.markFinal(url_gr_view == 1, " : " + self.str_gr_view + " parameter is equal to: " + str(1)) self.ts.markFinal(url_gr_dsp == 3, "STEP 2 : " + self.str_gr_source + " parameter is equal to: " + str(3)) self.trackPage.change_source_value(self.source_playlists) url_gr_source = self.trackPage.parameter_from_url(self.str_gr_source) url_gr_view = int(self.trackPage.parameter_from_url(self.str_gr_view)) url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) self.ts.markFinal(url_gr_view == 2, f"{self.str_gr_view} parameter is equal to: {url_gr_view}") self.ts.markFinal(url_gr_dsp == 3, "STEP 3 : " + self.str_gr_source + " parameter is equal to: " + str(3)) self.ts.markFinal(url_gr_source == self.playlists, self.str_gr_source + " parameter is equal to: " + url_gr_source) for source in ( (self.source_station, "station"), (self.source_user_playlist, "userPlaylist"), (self.source_search, "search"), ): self.trackPage.change_source_value(source[0]) url_gr_source = self.trackPage.parameter_from_url(self.str_gr_source) url_gr_view = int(self.trackPage.parameter_from_url(self.str_gr_view)) url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) if "," in url_gr_source: url_gr_source = sorted(str(url_gr_source).split(",")) self.ts.markFinal(url_gr_view == 2, " : " + self.str_gr_view + " parameter is equal to: " + str(1)) self.ts.markFinal(url_gr_dsp == 3, "STEP 4 : " + self.str_gr_source + " parameter is equal to: " + str(3)) self.ts.markFinal( url_gr_source == source[1], f"{self.str_gr_source} parameter is equal to: {url_gr_source}\n expected: {source[1]}", ) self.trackPage.choose_graph_view_area_graph_percentage() url_gr_source = self.trackPage.parameter_from_url(self.str_gr_source) url_gr_view = int(self.trackPage.parameter_from_url(self.str_gr_view)) url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) self.ts.markFinal(url_gr_view == 3, " : " + self.str_gr_view + " parameter is equal to: " + str(3)) self.ts.markFinal(url_gr_dsp == 3, "STEP 5 : " + self.str_gr_source + " parameter is equal to: " + str(3)) self.ts.markFinal(url_gr_source == self.search, f"{self.str_gr_source} parameter is equal to: {url_gr_source}") @allure.story("AP-2307") @allure.severity(allure.severity_level.NORMAL) @allure.title("Deep linking: Stream Graph parameters setting up for Amazon STEP 6-10 Apple track - Amazon") @allure.description("TC verifies that a user has an ability to set up stream Graph keys with a valid and invalid market value " "automatically or manually inside a page url") def test_verify_stream_graph_parameter_setting_up_apple_amazon_6_10(self): self.loginPage.login(CoreConfig.USER_EMAIL, CoreConfig.USER_PASSWORD) self.loginPage.is_logged_in() self.trackPage.open_apple_track_page(self.apple_track_id) self.trackPage.select_market(self.global_market_name) self.trackPage.stream_and_source_choose_country(self.us_market_name) self.trackPage.select_dsp(self.dsp_amazon) self.trackPage.is_graph_period_displayed() self.trackPage.choose_graph_view_area_graph_percentage() self.trackPage.choose_graph_view_area_graph() self.trackPage.change_source_value(self.source_search) self.trackPage.change_period_in_date_picker(self.six_month_period) url_gr_source = self.trackPage.parameter_from_url(self.str_gr_source) url_gr_view = int(self.trackPage.parameter_from_url(self.str_gr_view)) url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) url_start_date = self.trackPage.get_url_start_date() url_end_date = self.trackPage.get_url_end_date() calendar_start_date = self.trackPage.get_calendar_start_date() calendar_end_date = self.trackPage.get_calendar_end_date() self.ts.markFinal(url_gr_view == 2, "STEP 6 : " + self.str_gr_view + " parameter is equal to: " + str(2)) self.ts.markFinal(url_gr_dsp == 3, self.str_gr_source + " parameter is equal to: " + str(3)) self.ts.markFinal(url_gr_source == self.search, self.str_gr_source + " parameter is equal to: " + url_gr_source) self.ts.markFinal(calendar_start_date == url_start_date, "Calendar start date is equal o: " + calendar_start_date) self.ts.markFinal(calendar_end_date == url_end_date, "Calendar end date is equal to: " + calendar_end_date) self.trackPage.select_dsp(self.dsp_total_streams) url_before = self.trackPage.get_url() url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) self.ts.markFinal(url_gr_dsp == 4, "STEP 7: " + self.str_gr_source + " parameter is equal to: " + str(4)) self.trackPage.refresh() self.trackPage.is_graph_period_displayed() url_after = self.trackPage.get_url() calendar_start_date = self.trackPage.get_calendar_start_date() calendar_end_date = self.trackPage.get_calendar_end_date() current_dsp = self.trackPage.get_current_dsp() self.ts.markFinal(url_before == url_after, "STEP 8: is url correct: " + str(url_before == url_after)) self.ts.markFinal(calendar_start_date == url_start_date, "Calendar start date is equal to: " + calendar_start_date) self.ts.markFinal(calendar_end_date == url_end_date, "Calendar end date is equal to: " + calendar_end_date) self.ts.markFinal(url_gr_dsp == 4, self.str_gr_dsp + " parameter is equal to: " + str(4)) self.ts.markFinal(current_dsp == self.dsp_total_streams, "dsp parameter is equal to: " + self.dsp_total_streams) self.trackPage.go_back() self.trackPage.is_graph_period_displayed() url_gr_dsp = int(self.trackPage.parameter_from_url(self.str_gr_dsp)) self.ts.markFinal(url_gr_dsp == 3, "STEP 9: " + self.str_gr_dsp + " parameter is equal to: " + str(3)) self.trackPage.go_forward() self.trackPage.is_graph_period_displayed() url_after = self.trackPage.get_url() calendar_start_date = self.trackPage.get_calendar_start_date() calendar_end_date = self.trackPage.get_calendar_end_date() current_dsp = self.trackPage.get_current_dsp() self.ts.markFinal(url_before == url_after, "STEP 10: is url correct: " + str(url_before == url_after)) self.ts.markFinal(calendar_start_date == url_start_date, "Calendar start date is equal to: " + calendar_start_date) self.ts.markFinal(calendar_end_date == url_end_date, "Calendar end date is equal to: " + calendar_end_date) self.ts.markFinal(current_dsp == self.dsp_total_streams, "dsp parameter is equal to: " + self.dsp_total_streams)