import pytest import allure @pytest.mark.usefixtures("app") class TestArtistPerformance: entity_type = 'artist' @allure.description("As user I want to view performance data for TikTok") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-225") @allure.title("[Artist Page] - Performance section TikTok") @pytest.mark.regression def test_artist_performance_section_tiktok(self): entity = self.app.api.get_random_entity_with_performance_data(self.entity_type) entity_id = entity['id'] # Proceed to entity and select parameters with self.app.page.expect_response( self.artist_page.api_discovery_result.format(self.entity_type, entity_id)) as response: self.app.go_to(f"/{self.entity_type}/{entity_id}") self.artist_page.is_page_loaded() self.artist_page.tab_performance.get_by('tiktok').is_data_selected(True) self.artist_page.title_performance.get_by(1).contain_text('Followers') self.artist_page.check_chart_x_labels('Followers') self.artist_page.check_chart_y_labels('Followers') self.artist_page.check_chart_tooltip('Followers', 1) self.artist_page.title_performance.get_by(2).contain_text('Likes') self.artist_page.check_chart_y_labels('Likes') self.artist_page.check_chart_tooltip('Likes', 2) self.artist_page.check_discovery_data_stats_tiktok(response) @allure.description("As user I want to view performance data for YouTube") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-813") @allure.title("[Artist Page] - Performance section YouTube") @pytest.mark.regression def test_artist_performance_section_youtube(self): entity = self.app.api.get_random_entity_with_performance_data(self.entity_type) entity_id = entity['id'] # Proceed to entity and select parameters with self.app.page.expect_response( self.artist_page.api_discovery_result.format(self.entity_type, entity_id)) as response: self.app.go_to(f"/{self.entity_type}/{entity_id}") self.artist_page.is_page_loaded() self.artist_page.tab_performance.get_by('youtube').is_data_selected(False) self.artist_page.tab_performance.get_by('youtube').click() self.artist_page.tab_performance.get_by('youtube').is_data_selected(True) self.artist_page.title_performance.get_by(1).contain_text('Subscribers') self.artist_page.check_chart_x_labels('Subscribers') self.artist_page.check_chart_y_labels('Subscribers') self.artist_page.check_chart_tooltip('Subscribers', 1) self.artist_page.title_performance.get_by(2).contain_text('Views') self.artist_page.check_chart_y_labels('Views') self.artist_page.check_chart_tooltip('Views', 2) self.artist_page.check_discovery_data_stats_youtube(response) @allure.description("As user I want to view performance data for Spotify") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-945") @allure.title("[Artist Page] - Performance section Spotify") @pytest.mark.regression def test_artist_performance_section_spotify(self): entity = self.app.api.get_random_entity_with_performance_data(self.entity_type) entity_id = entity['id'] # Proceed to entity and select parameters with self.app.page.expect_response( self.artist_page.api_discovery_result.format(self.entity_type, entity_id)) as response: self.app.go_to(f"/{self.entity_type}/{entity_id}") self.artist_page.is_page_loaded() self.artist_page.tab_performance.get_by('spotify').is_data_selected(False) self.artist_page.tab_performance.get_by('spotify').click() self.artist_page.tab_performance.get_by('spotify').is_data_selected(True) self.artist_page.title_performance.get_by(1).contain_text('Followers') self.artist_page.check_chart_x_labels('Followers') self.artist_page.check_chart_y_labels('Followers') self.artist_page.check_chart_tooltip('Followers', 1) self.artist_page.title_performance.get_by(2).contain_text('Listeners/Mth') self.artist_page.check_chart_y_labels('Listeners/Mth') self.artist_page.check_chart_tooltip('Listeners/Mth', 2) self.artist_page.check_discovery_data_stats_spotify(response) @allure.description("As user I want to view performance data for SoundCloud") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-1321") @allure.title("[Artist Page] - Performance section SoundCloud") @pytest.mark.regression def test_artist_performance_section_soundcloud(self): entity = self.app.api.get_random_entity_with_performance_data(self.entity_type) entity_id = entity['id'] # Proceed to entity and select parameters with self.app.page.expect_response( self.artist_page.api_discovery_result.format(self.entity_type, entity_id)) as response: self.app.go_to(f"/{self.entity_type}/{entity_id}") self.artist_page.is_page_loaded() self.artist_page.tab_performance.get_by('soundcloud').is_data_selected(False) self.artist_page.tab_performance.get_by('soundcloud').click() self.artist_page.tab_performance.get_by('soundcloud').is_data_selected(True) self.artist_page.title_performance.get_by(1).contain_text('Followers') self.artist_page.check_chart_x_labels('Followers') self.artist_page.check_chart_y_labels('Followers') self.artist_page.check_chart_tooltip('Followers', 1) self.artist_page.title_performance.get_by(2).contain_text('Plays') self.artist_page.check_chart_y_labels('Plays') self.artist_page.check_chart_tooltip('Plays', 2) self.artist_page.check_discovery_data_stats_soundcloud(response) @pytest.mark.usefixtures("app") class TestTrackPerformance: entity_type = 'track' @allure.description("As user I want to view performance data for TikTok") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-243") @allure.title("[Track Page] - Performance section TikTok") @pytest.mark.regression def test_track_performance_section_tiktok(self): entity = self.app.api.get_random_entity_with_performance_data(self.entity_type) entity_id = entity['id'] # Proceed to entity and select parameters with self.app.page.expect_response( self.artist_page.api_discovery_result.format(self.entity_type, entity_id)) as response: self.app.go_to(f"/{self.entity_type}/{entity_id}") self.track_page.is_page_loaded() self.track_page.tab_performance.get_by('tiktok').is_data_selected(True) self.track_page.title_performance.get_by(1).contain_text('Views') self.track_page.check_chart_x_labels('Views') self.track_page.check_chart_y_labels('Views') self.track_page.check_chart_tooltip('Views', 1) self.track_page.title_performance.get_by(2).contain_text('Likes') self.track_page.check_chart_y_labels('Likes') self.track_page.check_chart_tooltip('Likes', 2) self.track_page.check_discovery_data_stats_tiktok(response) @allure.description("As user I want to view performance data for YouTube") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-831") @allure.title("[Track Page] - Performance section YouTube") @pytest.mark.regression def test_track_performance_section_youtube(self): entity = self.app.api.get_random_entity_with_performance_data(self.entity_type) entity_id = entity['id'] # Proceed to entity and select parameters with self.app.page.expect_response( self.artist_page.api_discovery_result.format(self.entity_type, entity_id)) as response: self.app.go_to(f"/{self.entity_type}/{entity_id}") self.track_page.is_page_loaded() self.track_page.tab_performance.get_by('youtube').is_data_selected(False) self.track_page.tab_performance.get_by('youtube').click() self.track_page.tab_performance.get_by('youtube').is_data_selected(True) self.track_page.title_performance.get_by(1).contain_text('Likes') self.track_page.check_chart_x_labels('Likes') self.track_page.check_chart_y_labels('Likes') self.track_page.check_chart_tooltip('Likes', 1) self.track_page.title_performance.get_by(2).contain_text('Views') self.track_page.check_chart_y_labels('Views') self.track_page.check_chart_tooltip('Views', 2) self.track_page.check_discovery_data_stats_youtube(response) @allure.description("As user I want to view performance data for Spotify") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-946") @allure.title("[Track Page] - Performance section Spotify") @pytest.mark.regression def test_track_performance_section_spotify(self): entity = self.app.api.get_random_entity_with_performance_data(self.entity_type) entity_id = entity['id'] # Proceed to entity and select parameters with self.app.page.expect_response( self.artist_page.api_discovery_result.format(self.entity_type, entity_id)) as response: self.app.go_to(f"/{self.entity_type}/{entity_id}") self.track_page.is_page_loaded() self.track_page.tab_performance.get_by('spotify').is_data_selected(False) self.track_page.tab_performance.get_by('spotify').click() self.track_page.tab_performance.get_by('spotify').is_data_selected(True) self.track_page.title_performance.get_by(1).contain_text('Streams') self.track_page.check_chart_x_labels('Streams') self.track_page.check_chart_y_labels('Streams') self.track_page.check_chart_tooltip('Streams', 1) self.track_page.title_performance.get_by(2).contain_text('Artist Listeners/Mth') self.track_page.check_chart_y_labels('Artist Listeners/Mth') self.track_page.check_chart_tooltip('Artist Listeners/Mth', 2) self.track_page.check_discovery_data_stats_spotify(response) @allure.description("As user I want to view performance data for SoundCloud") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-1321") @allure.title("[Track Page] - Performance section SoundCloud") @pytest.mark.regression def test_track_performance_section_soundcloud(self): entity = self.app.api.get_random_entity_with_performance_data(self.entity_type) entity_id = entity['id'] # Proceed to entity and select parameters with self.app.page.expect_response( self.artist_page.api_discovery_result.format(self.entity_type, entity_id)) as response: self.app.go_to(f"/{self.entity_type}/{entity_id}") self.track_page.is_page_loaded() self.track_page.tab_performance.get_by('soundcloud').is_data_selected(False) self.track_page.tab_performance.get_by('soundcloud').click() self.track_page.tab_performance.get_by('soundcloud').is_data_selected(True) self.track_page.title_performance.get_by(1).contain_text('Plays') self.track_page.check_chart_x_labels('Plays') self.track_page.check_chart_y_labels('Plays') self.track_page.check_chart_tooltip('Plays', 1) self.track_page.title_performance.get_by(2).contain_text('Artist Followers') self.track_page.check_chart_y_labels('Artist Followers') self.track_page.check_chart_tooltip('Artist Followers', 2) self.track_page.check_discovery_data_stats_soundcloud(response)