import allure import pytest from assertpy import assert_that from src.helpers.test_data_loader import DataLoader @pytest.mark.usefixtures("one_time_set_up") class TestTracks: data = DataLoader("test_tracks_data.json") user_artist_position = data.get("user_artist_position") artist_name = DataLoader.get_artist() @allure.title("View All Tracks") @allure.description("User should be able to view All Tracks") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1891") @pytest.mark.smoke @pytest.mark.artist def test_view_all_tracks(self): self.login_page.login_as_super_user() self.welcome_page.click_skip_btn() self.artist_selector_page.select_an_artist_by_position(1) self.library_page.view_all_tracks() assert_that(self.tracks_page.all_tracks_page_visible(), "All tracks aren't shown").is_true() assert_that(self.navigation_page.get_time_interval_value()).is_equal_to("Last 4 weeks") self.navigation_page.select_period_last_1_year() assert_that(self.navigation_page.get_time_interval_value()).is_equal_to("Last 1 year") self.tracks_page.select_amazon() self.tracks_page.select_apple() self.tracks_page.select_spotify() self.tracks_page.select_all() # Go to track screen and back self.tracks_page.select_track_by_position(1) assert_that(self.track_view_page.is_track_1w_statistics_present(), "1w statistics should be shown").is_true() self.navigation_page.click_back() assert_that(self.tracks_page.all_tracks_page_visible(), "All tracks aren't shown").is_true() self.navigation_page.click_back() assert_that(self.library_page.bn_switch_artist.is_visible, "User are not on Library page").is_true() @allure.title("Favorite tracks") @allure.description("User should be able to set and unset any track as favorite") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1892") @pytest.mark.smoke def test_set_favorite_track(self): self.login_page.login_as_super_user() self.welcome_page.click_skip_btn() self.artist_selector_page.select_an_artist_by_position(1) # choose some track and make it favorite self.navigation_page.click_library_tab() self.library_page.view_all_tracks() self.tracks_page.select_track_by_position(1) if not self.track_view_page.is_favorite(): self.track_view_page.click_favorite_heart() assert_that(self.track_view_page.is_favorite(), "Heart should be set").is_true() self.navigation_page.click_back() track_name = self.tracks_page.list_tracks.texts[0] print("Tested track is '{}'".format(track_name)) # check track in Favorites section self.navigation_page.click_library_tab() self.library_page.view_favorites_tracks() assert_that(self.tracks_page.favorite_tracks_page_visible(), "Favorites aren't shown").is_true() assert_that(track_name in self.tracks_page.list_tracks.texts).is_true().described_as("Track should be in " "Favorite list") # unset favorite track self.tracks_page.select_track_by_name(track_name) self.track_view_page.click_favorite_heart() assert_that(self.track_view_page.is_favorite(), "Heart should be unset").is_false() self.navigation_page.click_back() # check track NOT in Favorites section assert_that(track_name not in self.tracks_page.list_tracks.texts).is_true().described_as("Track should not be " "in Favorite list") @allure.title("Top Trending Tracks") @allure.description("User should be able to view Top Trending Tracks") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1893") @pytest.mark.smoke def test_top_trending_tracks(self): self.login_page.login_as_super_user() self.welcome_page.click_skip_btn() self.artist_selector_page.select_an_artist_by_name(self.artist_name) self.library_page.view_top_trending_tracks() assert_that(self.tracks_page.top_trending_tracks_page_visible(), "Top Trending aren't shown").is_true() assert_that(self.navigation_page.get_time_interval_value()).is_equal_to("Last 4 weeks") self.navigation_page.select_period_last_1_year() assert_that(self.navigation_page.get_time_interval_value()).is_equal_to("Last 1 year") self.tracks_page.select_amazon() amazon_tracks = len(self.tracks_page.list_tracks.elements) self.tracks_page.select_apple() apple_tracks = len(self.tracks_page.list_tracks.elements) self.tracks_page.select_spotify() spotify_tracks = len(self.tracks_page.list_tracks.elements) self.tracks_page.select_all() # Find section with some tracks if amazon_tracks > 0: self.tracks_page.select_amazon() elif apple_tracks > 0: self.tracks_page.select_apple() elif spotify_tracks > 0: self.tracks_page.select_spotify() # Go to track screen and back or check No Results label if len(self.tracks_page.list_tracks.elements) > 0: self.tracks_page.select_track_by_position(1) self.navigation_page.click_back() self.navigation_page.click_back() assert_that(self.library_page.bn_switch_artist.is_visible, "User should be on Library page").is_true() else: assert_that(self.common_page.is_label_present("No results")).is_true() @allure.title("TikTok Top Trending Tracks") @allure.description("User should be able to view TikTok Top Trending Tracks") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-2173") @pytest.mark.smoke def test_tiktok_top_trending_tracks(self): self.login_page.login_as_super_user() self.welcome_page.click_skip_btn() self.artist_selector_page.select_an_artist_by_name(self.artist_name) self.library_page.view_tik_tok_top_trending_tracks() assert_that(self.tracks_page.tiktok_top_trending_tracks_page_visible(), "Top Trending aren't shown").is_true() assert_that(self.navigation_page.get_time_interval_value()).is_equal_to("Last 4 weeks") self.navigation_page.select_period_last_1_year() assert_that(self.navigation_page.get_time_interval_value()).is_equal_to("Last 1 year") self.tracks_page.select_track_by_position(1) assert_that(self.track_view_page.is_track_1w_statistics_present(), "1w statistics should be shown").is_true() self.navigation_page.click_back() assert_that(self.tracks_page.tiktok_top_trending_tracks_page_visible(), "Top Trending aren't shown").is_true() @allure.title("Most Streamed Tracks") @allure.description("User should be able to view Most Streamed Tracks") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1895") @pytest.mark.smoke def test_most_streamed_tracks(self): self.login_page.login_as_super_user() self.welcome_page.click_skip_btn() self.artist_selector_page.select_an_artist_by_name(self.artist_name) self.library_page.view_most_streamed_tracks() assert_that(self.tracks_page.most_streamed_tracks_page_visible(), "Most Streamed aren't shown").is_true() assert_that(self.navigation_page.get_time_interval_value()).is_equal_to("Last 4 weeks") self.navigation_page.select_period_last_1_year() assert_that(self.navigation_page.get_time_interval_value()).is_equal_to("Last 1 year") self.tracks_page.select_amazon() self.tracks_page.select_apple() self.tracks_page.select_spotify() self.tracks_page.select_all() # Go to track screen and back self.tracks_page.select_track_by_position(1) assert_that(self.track_view_page.is_track_1w_statistics_present(), "1w statistics should be shown").is_true() self.navigation_page.click_back() assert_that(self.tracks_page.most_streamed_tracks_page_visible(), "Most Streamed aren't shown").is_true() self.navigation_page.click_back() assert_that(self.library_page.bn_switch_artist.is_visible, "User should be on Library page").is_true() @allure.title("Newest Releases Tracks") @allure.description("User should be able to view Newest Releases Tracks") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1894") @pytest.mark.smoke def test_newest_releases_tracks(self): self.login_page.login_as_super_user() self.welcome_page.click_skip_btn() self.artist_selector_page.select_an_artist_by_name(self.artist_name) self.library_page.view_newest_releases_tracks() assert_that(self.tracks_page.newest_releases_tracks_page_visible(), "Newest Releases aren't shown").is_true() # Go to track screen and back self.tracks_page.select_track_by_position(1) assert_that(self.track_view_page.is_track_1w_statistics_present(), "1w statistics should be shown").is_true() self.navigation_page.click_back() assert_that(self.tracks_page.newest_releases_tracks_page_visible(), "Newest Releases aren't shown").is_true() self.navigation_page.click_back() assert_that(self.library_page.bn_switch_artist.is_visible, "User should be on Library page").is_true()