import pytest import allure @pytest.mark.usefixtures("app") class TestDiscoveryResultsSorting: @allure.title("[Discovery Results Sorting] - Check Artist sorting for DSP: TikTok") @allure.description("As user I want to search Artist and see appropriately sorted results") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-1280") @pytest.mark.smoke def test_sorting_tiktok_only(self): self.app.go_to(self.discovery_page.url) self.discovery_page.is_page_loaded() self.discovery_page.dsp_tiktok_on(True) sort_by_dsp = 'tiktok' self.discovery_page.random_artist_tiktok_changes() with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_page.bn_discovery.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) # Pagination appears when there are more 60 items in results if len(discovery_response.value.json()) == 60: with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_results_page.bn_next_page.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) @allure.title("[Discovery Results Sorting] - Check Artist sorting for DSP: YouTube") @allure.description("As user I want to search Artist and see appropriately sorted results") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-1280") @pytest.mark.smoke def test_sorting_youtube_only(self): self.app.go_to(self.discovery_page.url) self.discovery_page.is_page_loaded() self.discovery_page.dsp_youtube_on(True) sort_by_dsp = 'youtube' self.discovery_page.random_artist_youtube_changes() with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_page.bn_discovery.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) # Pagination appears when there are more 60 items in results if len(discovery_response.value.json()) == 60: with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_results_page.bn_next_page.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) @allure.title("[Discovery Results Sorting] - Check Artist sorting for DSP: Spotify") @allure.description("As user I want to search Artist and see appropriately sorted results") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-1280") @pytest.mark.smoke def test_sorting_spotify_only(self): self.app.go_to(self.discovery_page.url) self.discovery_page.is_page_loaded() self.discovery_page.dsp_spotify_on(True) self.discovery_page.expand_sparkline_block().sparkline_spotify.select_option('Listeners/Mth') sort_by_dsp = 'spotify' self.discovery_page.random_artist_spotify_changes() with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_page.bn_discovery.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) # Pagination appears when there are more 60 items in results if len(discovery_response.value.json()) == 60: with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_results_page.bn_next_page.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) @allure.title("[Discovery Results Sorting] - Check Artist sorting for DSP: SoundCloud") @allure.description("As user I want to search Artist and see appropriately sorted results") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-1280") @pytest.mark.smoke def test_sorting_soundcloud_only(self): self.app.go_to(self.discovery_page.url) self.discovery_page.is_page_loaded() self.discovery_page.dsp_soundcloud_on(True) sort_by_dsp = 'soundcloud' self.discovery_page.random_artist_soundcloud_changes() with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_page.bn_discovery.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) # Pagination appears when there are more 60 items in results if len(discovery_response.value.json()) == 60: with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_results_page.bn_next_page.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) @allure.title("[Discovery Results Sorting] - Check Artist sorting for DSP: TikTok, YouTube, Spotify, SoundCloud") @allure.description("As user I want to search Artist and see appropriately sorted results") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-1280") @pytest.mark.regression def test_sorting_tiktok_youtube_spotify_soundcloud(self): self.app.go_to(self.discovery_page.url) self.discovery_page.is_page_loaded() self.discovery_page.dsp_tiktok_on(True) self.discovery_page.dsp_youtube_on(True) self.discovery_page.dsp_spotify_on(True) self.discovery_page.dsp_soundcloud_on(True) sort_by_dsp = 'tiktok' self.discovery_page.random_artist_tiktok_changes() self.discovery_page.random_artist_youtube_changes() self.discovery_page.random_artist_spotify_changes() self.discovery_page.random_artist_soundcloud_changes() with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_page.bn_discovery.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) # Pagination appears when there are more 60 items in results if len(discovery_response.value.json()) == 60: with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_results_page.bn_next_page.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) @allure.title("[Discovery Results Sorting] - Check Artist sorting for DSP: TikTok, YouTube") @allure.description("As user I want to search Artist and see appropriately sorted results") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-1280") @pytest.mark.regression def test_sorting_tiktok_youtube(self): self.app.go_to(self.discovery_page.url) self.discovery_page.is_page_loaded() self.discovery_page.dsp_tiktok_on(True) self.discovery_page.dsp_youtube_on(True) sort_by_dsp = 'tiktok' self.discovery_page.random_artist_tiktok_changes() self.discovery_page.random_artist_youtube_changes() with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_page.bn_discovery.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) # Pagination appears when there are more 60 items in results if len(discovery_response.value.json()) == 60: with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_results_page.bn_next_page.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) @allure.title("[Discovery Results Sorting] - Check Artist sorting for DSP: TikTok, Spotify") @allure.description("As user I want to search Artist and see appropriately sorted results") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-1280") @pytest.mark.regression def test_sorting_tiktok_spotify(self): self.app.go_to(self.discovery_page.url) self.discovery_page.is_page_loaded() self.discovery_page.dsp_tiktok_on(True) self.discovery_page.dsp_spotify_on(True) sort_by_dsp = 'tiktok' self.discovery_page.random_artist_tiktok_changes() self.discovery_page.random_artist_spotify_changes() with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_page.bn_discovery.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) # Pagination appears when there are more 60 items in results if len(discovery_response.value.json()) == 60: with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_results_page.bn_next_page.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) @allure.title("[Discovery Results Sorting] - Check Artist sorting for DSP: YouTube, Spotify, SoundCloud") @allure.description("As user I want to search Artist and see appropriately sorted results") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-1280") @pytest.mark.regression def test_sorting_youtube_spotify_soundcloud(self): self.app.go_to(self.discovery_page.url) self.discovery_page.is_page_loaded() self.discovery_page.dsp_youtube_on(True) self.discovery_page.dsp_spotify_on(True) self.discovery_page.dsp_soundcloud_on(True) self.discovery_page.expand_sparkline_block().sparkline_spotify.select_option('Listeners/Mth') sort_by_dsp = 'spotify' self.discovery_page.random_artist_youtube_changes() self.discovery_page.random_artist_spotify_changes() self.discovery_page.random_artist_soundcloud_changes() with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_page.bn_discovery.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) # Pagination appears when there are more 60 items in results if len(discovery_response.value.json()) == 60: with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_results_page.bn_next_page.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) @allure.title("[Discovery Results Sorting] - Check Artist sorting for DSP: YouTube, SoundCloud") @allure.description("As user I want to search Artist and see appropriately sorted results") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-1280") @pytest.mark.regression def test_sorting_youtube_soundcloud(self): self.app.go_to(self.discovery_page.url) self.discovery_page.is_page_loaded() self.discovery_page.dsp_youtube_on(True) self.discovery_page.dsp_soundcloud_on(True) sort_by_dsp = 'youtube' self.discovery_page.random_artist_youtube_changes() self.discovery_page.random_artist_soundcloud_changes() with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_page.bn_discovery.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp) # Pagination appears when there are more 60 items in results if len(discovery_response.value.json()) == 60: with self.discovery_page.page.expect_response(self.discovery_page.api_artist_discovery) as discovery_response: self.discovery_results_page.bn_next_page.click() self.discovery_results_page.compare_cards_lists_for_page_vs_response(discovery_response) self.discovery_results_page.verify_artist_sorting_rules(discovery_response, sort_by_dsp)