import allure import pytest from assertpy import assert_that from src.helpers.api_data_provider import ApiDataProvider @pytest.mark.usefixtures("one_time_set_up") class TestTrackViewPlaylists: api_data = ApiDataProvider() countrycode_top_chart = 'ca' data = ['SPOTIFY', 'APPLE'] @allure.title("Track View - Playlists") @allure.description("User should be able to view Track Playlists page") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1914") @pytest.mark.regression @pytest.mark.parametrize('dsp', data) def test_view_track_playlists(self, dsp): top_artist, top_track = self.api_data.get_artist_and_track_from_top_chart('spotify', self.countrycode_top_chart) self.login_page.login_as_super_user() self.welcome_page.click_skip_btn() self.artist_selector_page.select_an_artist_by_name(top_artist) # Select 1st track from the list self.library_page.view_most_streamed_tracks() self.tracks_page.select_track_by_position(1) # SPOTIFY Playlists self.track_view_page.charts_list.select_by_text(dsp + ' Playlists') assert_that(self.common_page.is_label_present(dsp + ' ')).is_true() assert_that(self.common_page.is_label_present("Playlists")).is_true() # self.track_view_page.print_all_playlist_items() - for debugging if len(self.track_view_page.list_playlist.texts) == 0: assert_that(self.track_view_page.is_track_has_no_playlists()).is_true() if len(self.track_view_page.list_playlist.texts) > 1: # Check filter: Past and Current playlists self.track_view_page.select_past_playlists_filter() past_pl = self.track_view_page.list_playlist.texts self.track_view_page.select_current_playlists_filter() # Check sorting by Streams | Date Added | Position top_streamed_pl = self.track_view_page.list_playlist.texts self.track_view_page.sort_playlist_by_date_added() top_date_added_pl = self.track_view_page.list_playlist.texts self.track_view_page.sort_playlist_by_position() top_position_pl = self.track_view_page.list_playlist.texts assert_that(top_streamed_pl).is_not_equal_to(top_position_pl).is_not_equal_to(top_date_added_pl) assert_that(top_streamed_pl).is_not_equal_to(past_pl) # Select playlist and inspect it self.track_view_page.list_playlist.select_by_position(1) assert_that(self.common_page.is_label_present(dsp + ' ')).is_true() assert_that(self.common_page.is_label_present("Total Streams")).is_true() assert_that(self.common_page.is_label_present("Change")).is_true() assert_that(self.common_page.is_label_present("Position in Playlist")).is_true() assert_that(self.common_page.is_label_present("Position Change")).is_true() assert_that(self.track_view_page. is_label_present("Press the chart to see the position in the playlist")).is_true() assert_that(self.common_page.is_label_present("POSITION")).is_true() assert_that(self.common_page.is_label_present("STREAMS")).is_true() self.track_view_page.select_market_by_name("The United States") assert_that(self.track_view_page.chosen_market_value("us")).is_true() self.track_view_page.switch_range_to_2w() assert_that(self.common_page.is_label_present("POSITION")).is_true() self.track_view_page.switch_range_to_4w() assert_that(self.common_page.is_label_present("POSITION")).is_true() self.track_view_page.switch_range_to_6w() assert_that(self.common_page.is_label_present("POSITION")).is_true() self.track_view_page.switch_range_to_8w() assert_that(self.common_page.is_label_present("POSITION")).is_true() self.track_view_page.switch_range_to_26w() assert_that(self.common_page.is_label_present("POSITION")).is_true() self.track_view_page.switch_range_to_1y() assert_that(self.common_page.is_label_present("POSITION")).is_true() self.track_view_page.switch_range_to_chart_week() assert_that(self.common_page.is_label_present("POSITION")).is_true() @allure.title("Track View - Amazon Playlists") @allure.description("User should be able to view Track Playlists page") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1914") @pytest.mark.regression def test_view_track_playlists_amazon(self): top_artist, top_track = self.api_data.get_artist_and_track_from_top_chart('spotify', 'global') self.login_page.login_as_super_user() self.welcome_page.click_skip_btn() self.artist_selector_page.select_an_artist_by_name(top_artist) # Select 1st track from the list self.library_page.view_most_streamed_tracks() self.tracks_page.select_track_by_position(1) self.track_view_page.charts_list.select_by_text('AMAZON Playlists') assert_that(self.common_page.is_label_present("AMAZON ")).is_true() assert_that(self.common_page.is_label_present("Playlists")).is_true() if len(self.track_view_page.list_playlist.texts) == 0: assert_that(self.track_view_page.is_track_has_no_playlists()).is_true() if len(self.track_view_page.list_playlist.texts) > 1: # Check sorting by Streams | Date Added | Position top_streamed = self.track_view_page.list_playlist.texts self.track_view_page.sort_playlist_by_date_added() top_date_added = self.track_view_page.list_playlist.texts self.track_view_page.sort_playlist_by_position() top_position = self.track_view_page.list_playlist.texts assert_that(top_streamed).is_not_equal_to(top_position).is_not_equal_to(top_date_added) self.track_view_page.list_playlist.select_by_position(1) assert_that(self.common_page.is_label_present("AMAZON ")).is_true() assert_that(self.common_page.is_label_present("Total Streams")).is_true() assert_that(self.common_page.is_label_present("Change")).is_true() assert_that(self.common_page.is_label_present("Position in Playlist")).is_true() assert_that(self.common_page.is_label_present("Position Change")).is_true() assert_that( self.common_page.is_label_present("Press the chart to see the position in the playlist")).is_true() assert_that(self.common_page.is_label_present("POSITION")).is_true() assert_that(self.common_page.is_label_present("STREAMS")).is_true() self.track_view_page.switch_range_to_2w() assert_that(self.common_page.is_label_present("POSITION")).is_true() self.track_view_page.switch_range_to_4w() assert_that(self.common_page.is_label_present("POSITION")).is_true() self.track_view_page.switch_range_to_6w() assert_that(self.common_page.is_label_present("POSITION")).is_true() self.track_view_page.switch_range_to_8w() assert_that(self.common_page.is_label_present("POSITION")).is_true() self.track_view_page.switch_range_to_26w() assert_that(self.common_page.is_label_present("POSITION")).is_true() self.track_view_page.switch_range_to_1y() assert_that(self.common_page.is_label_present("POSITION")).is_true() self.track_view_page.switch_range_to_chart_week() assert_that(self.common_page.is_label_present("POSITION")).is_true()