import allure import pytest from assertpy import assert_that from src.helpers.test_data_loader import DataLoader from src.helpers.api_data_provider import ApiDataProvider @pytest.mark.usefixtures("one_time_set_up") class TestTrackView: api_data = ApiDataProvider() data = DataLoader("test_track_view_data.json") artist_name = DataLoader.get_artist() country_top_chart = 'Canada' countrycode_top_chart = 'ca' @allure.title("Track View - base info") @allure.description("User should be able to view base info on Track View page") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1910") @pytest.mark.smoke @pytest.mark.artist def test_view_track_info(self): self.login_page.login_as_super_user() self.welcome_page.click_skip_btn() self.artist_selector_page.select_an_artist_by_position(1) # Select 1st track from the list self.library_page.view_all_tracks() self.tracks_page.select_track_by_position(1) # Check track info attributes assert_that(self.track_view_page.is_image_present(), "Image should be shown").is_true() assert_that(self.track_view_page.chosen_market_value("worldwide")).is_true() assert_that(self.track_view_page.is_track_alltime_statistics_present(), "Alltime statistics should be shown").is_true() assert_that(self.track_view_page.is_track_1w_statistics_present(), "1w statistics should be shown").is_true() assert_that(self.track_view_page.is_track_2w_statistics_present(), "2w statistics should be shown").is_true() assert_that(self.track_view_page.is_track_4w_statistics_present(), "4w statistics should be shown").is_true() # Check charts # self.track_view_page.print_all_track_charts_on_page() <- for debugging assert_that(self.track_view_page.is_chart_present('ALL Streams')).is_true() assert_that(self.track_view_page.is_chart_present('SPOTIFY Streams')).is_true() assert_that(self.track_view_page.is_chart_present('APPLE Streams')).is_true() assert_that(self.track_view_page.is_chart_present('AMAZON Streams')).is_true() assert_that(self.track_view_page.is_chart_present('SPOTIFY Sources')).is_true() assert_that(self.track_view_page.is_chart_present('APPLE Sources')).is_true() assert_that(self.track_view_page.is_chart_present('AMAZON Sources')).is_true() assert_that(self.track_view_page.is_chart_present('TIKTOK User Creations')).is_true() assert_that(self.track_view_page.is_chart_present('SPOTIFY Playlists')).is_true() assert_that(self.track_view_page.is_chart_present('APPLE Playlists')).is_true() assert_that(self.track_view_page.is_chart_present('SPOTIFY Daily Top 200')).is_true() assert_that(self.track_view_page.is_chart_present('APPLE Top 100')).is_true() assert_that(self.track_view_page.is_chart_present('ALL Top Streaming Markets')).is_true() assert_that(self.track_view_page.is_chart_present('SPOTIFY Top Streaming Markets')).is_true() assert_that(self.track_view_page.is_chart_present('APPLE Top Streaming Markets')).is_true() assert_that(self.track_view_page.is_chart_present('AMAZON Top Streaming Markets')).is_true() assert_that(self.track_view_page.is_chart_present('SPOTIFY Demographics')).is_true() assert_that(self.track_view_page.is_chart_present('APPLE Demographics')).is_true() assert_that(self.track_view_page.are_demographic_elements_present_for('SPOTIFY')).is_true() assert_that(self.track_view_page.are_demographic_elements_present_for('APPLE')).is_true() # CHANGE MARKET and re-check statistics self.track_view_page.select_market_by_name("The United States") assert_that(self.track_view_page.chosen_market_value("us")).is_true() assert_that(self.track_view_page.is_track_alltime_statistics_present(), "Alltime statistics should be shown").is_true() assert_that(self.track_view_page.is_track_1w_statistics_present(), "1w statistics should be shown").is_true() assert_that(self.track_view_page.is_track_2w_statistics_present(), "2w statistics should be shown").is_true() assert_that(self.track_view_page.is_track_4w_statistics_present(), "4w statistics should be shown").is_true() assert_that(self.track_view_page.is_chart_present('ALL Streams')).is_true() assert_that(self.track_view_page.is_chart_present('SPOTIFY Streams')).is_true() assert_that(self.track_view_page.is_chart_present('APPLE Streams')).is_true() assert_that(self.track_view_page.is_chart_present('AMAZON Streams')).is_true() assert_that(self.track_view_page.is_chart_present('SPOTIFY Sources')).is_true() assert_that(self.track_view_page.is_chart_present('APPLE Sources')).is_true() assert_that(self.track_view_page.is_chart_present('AMAZON Sources')).is_true() assert_that(self.track_view_page.is_chart_present('TIKTOK User Creations')).is_true() assert_that(self.track_view_page.is_chart_present('SPOTIFY Daily Top 200')).is_true() assert_that(self.track_view_page.is_chart_present('APPLE Top 100')).is_true() assert_that(self.track_view_page.is_chart_present('ALL Top Streaming Markets')).is_true() assert_that(self.track_view_page.is_chart_present('SPOTIFY Top Streaming Markets')).is_true() assert_that(self.track_view_page.is_chart_present('APPLE Top Streaming Markets')).is_true() assert_that(self.track_view_page.is_chart_present('AMAZON Top Streaming Markets')).is_true() assert_that(self.track_view_page.is_chart_present('SPOTIFY Demographics')).is_true() assert_that(self.track_view_page.is_chart_present('APPLE Demographics')).is_true() @allure.title("Track View - Explicit label") @allure.description("'E' image should be displayed for Explicit tracks") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-2094") @pytest.mark.regression def test_explicit_track(self): artist_name_explicit = self.data.get("artist_name_explicit") track_name_explicit = self.data.get("track_name_explicit") self.login_page.login_as_super_user() self.welcome_page.click_skip_btn() self.artist_selector_page.select_an_artist_by_name(artist_name_explicit) # Search for the explicit track self.navigation_page.go_to_search() self.search_page.in_search_items.send_text(track_name_explicit) self.search_page.press_return_to_hide_keyboard() self.search_page.list_items.select_by_text("Explicit " + track_name_explicit) # Check track explicit label assert_that(self.track_view_page.is_track_explicit_label_present(), "Explicit should be shown").is_true() @allure.title("Track View - Streams") @allure.description("User should be able to view Track Streams page") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1911") @pytest.mark.regression def test_view_track_streams(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) # Select 1st track from the list self.library_page.view_all_tracks() self.tracks_page.select_track_by_position(1) # All Streams assert_that(self.video_view_page.video_charts_list.get_item_by_text('ALL Streams').text).contains('TOTAL') self.track_view_page.charts_list.select_by_text('ALL Streams') assert_that(self.track_view_page.is_image_present(), "Image should be shown").is_true() assert_that(self.track_view_page.chosen_market_value("worldwide")).is_true() assert_that(self.common_page.is_label_present("ALL ")).is_true() assert_that(self.common_page.is_label_present("Streams Worldwide")).is_true() assert_that(self.track_view_page.is_stream_data_present(), "No data or Error occurred").is_true() self.track_view_page.switch_range_to_2w() self.track_view_page.switch_range_to_4w() self.track_view_page.switch_range_to_6w() self.track_view_page.switch_range_to_8w() self.track_view_page.switch_range_to_26w() self.track_view_page.switch_range_to_1y() self.track_view_page.switch_range_to_chart_week() self.track_view_page.select_market_by_name("The United States") assert_that(self.track_view_page.chosen_market_value("us")).is_true() assert_that(self.common_page.is_label_present("ALL ")).is_true() assert_that(self.common_page.is_label_present("Streams in the United States")).is_true() assert_that(self.track_view_page.is_stream_data_present(), "No data or Error occurred").is_true() self.navigation_page.click_back() assert_that(self.track_view_page.chosen_market_value("worldwide")).is_true() self.track_view_page.select_market_by_name("The United States") # SPOTIFY Streams self.track_view_page.charts_list.select_by_text('SPOTIFY Streams') assert_that(self.track_view_page.chosen_market_value("us")).is_true() assert_that(self.common_page.is_label_present("SPOTIFY ")).is_true() assert_that(self.common_page.is_label_present("Streams in the United States")).is_true() assert_that(self.track_view_page.is_stream_data_present(), "No data or Error occurred").is_true() self.track_view_page.switch_range_to_2w() self.track_view_page.switch_range_to_4w() self.track_view_page.switch_range_to_6w() self.track_view_page.switch_range_to_8w() self.track_view_page.switch_range_to_26w() self.track_view_page.switch_range_to_1y() self.track_view_page.switch_range_to_chart_week() assert_that(self.track_view_page.is_stream_data_present(), "No data or Error occurred").is_true() self.navigation_page.click_back() assert_that(self.track_view_page.chosen_market_value("us")).is_true() # APPLE Streams self.track_view_page.charts_list.select_by_text('APPLE Streams') assert_that(self.common_page.is_label_present("APPLE ")).is_true() assert_that(self.common_page.is_label_present("Streams in the United States")).is_true() assert_that(self.track_view_page.is_stream_data_present(), "No data or Error occurred").is_true() self.track_view_page.switch_range_to_2w() self.track_view_page.switch_range_to_4w() self.track_view_page.switch_range_to_6w() self.track_view_page.switch_range_to_8w() self.track_view_page.switch_range_to_26w() self.track_view_page.switch_range_to_1y() self.track_view_page.switch_range_to_chart_week() assert_that(self.track_view_page.is_stream_data_present(), "No data or Error occurred").is_true() self.navigation_page.click_back() # AMAZON Streams self.track_view_page.charts_list.select_by_text('AMAZON Streams') self.track_view_page.select_market_by_name("Mexico") assert_that(self.common_page.is_label_present("AMAZON ")).is_true() assert_that(self.common_page.is_label_present("Streams in Mexico")).is_true() assert_that(self.track_view_page.is_stream_data_present(), "No data or Error occurred").is_true() self.track_view_page.switch_range_to_2w() self.track_view_page.switch_range_to_4w() self.track_view_page.switch_range_to_6w() self.track_view_page.switch_range_to_8w() self.track_view_page.switch_range_to_26w() self.track_view_page.switch_range_to_1y() self.track_view_page.switch_range_to_chart_week() assert_that(self.track_view_page.is_stream_data_present(), "No data or Error occurred").is_true() @allure.title("Track View - Sources") @allure.description("User should be able to view Track Sources page") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1912") @pytest.mark.regression def test_view_track_sources(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) # Select 1st track from the list self.library_page.view_all_tracks() self.tracks_page.select_track_by_position(1) # SPOTIFY Sources assert_that(self.video_view_page.video_charts_list.get_item_by_text('SPOTIFY Sources').text).contains( 'Lean Forward') assert_that(self.video_view_page.video_charts_list.get_item_by_text('SPOTIFY Sources').text).contains( 'Lean Back') self.track_view_page.charts_list.select_by_text('SPOTIFY Sources') assert_that(self.track_view_page.chosen_market_value("worldwide")).is_true() assert_that(self.common_page.is_label_present("SPOTIFY ")).is_true() assert_that(self.common_page.is_label_present("Source Breakdown")).is_true() assert_that(self.common_page.is_label_present("Forward")).is_true() assert_that(self.common_page.is_label_present("Back")).is_true() assert_that(self.track_view_page.is_source_data_present(), "No data or Error occurred").is_true() self.navigation_page.scroll_down() self.track_view_page.switch_range_to_2w() assert_that(self.track_view_page.is_source_data_present(), "No data or Error occurred").is_true() self.navigation_page.scroll_down() self.track_view_page.switch_range_to_6w() assert_that(self.track_view_page.is_source_data_present(), "No data or Error occurred").is_true() self.navigation_page.click_back() self.track_view_page.select_market_by_name("The United States") assert_that(self.track_view_page.chosen_market_value("us")).is_true() # APPLE Sources self.track_view_page.charts_list.select_by_text('APPLE Sources') assert_that(self.track_view_page.chosen_market_value("us")).is_true() assert_that(self.common_page.is_label_present("APPLE ")).is_true() assert_that(self.common_page.is_label_present("Source Breakdown")).is_true() assert_that(self.common_page.is_label_present("Forward")).is_true() assert_that(self.common_page.is_label_present("Back")).is_true() assert_that(self.track_view_page.is_source_data_present(), "No data or Error occurred").is_true() self.navigation_page.scroll_down() self.track_view_page.switch_range_to_8w() assert_that(self.track_view_page.is_source_data_present(), "No data or Error occurred").is_true() self.navigation_page.scroll_down() self.track_view_page.switch_range_to_26w() assert_that(self.track_view_page.is_source_data_present(), "No data or Error occurred").is_true() self.navigation_page.click_back() # AMAZON Source self.track_view_page.charts_list.select_by_text('AMAZON Sources') self.track_view_page.select_market_by_name("Canada") assert_that(self.track_view_page.chosen_market_value("ca")).is_true() assert_that(self.common_page.is_label_present("AMAZON ")).is_true() assert_that(self.common_page.is_label_present("Source Breakdown")).is_true() assert_that(self.common_page.is_label_present("Forward")).is_true() assert_that(self.common_page.is_label_present("Back")).is_true() assert_that(self.track_view_page.is_source_data_present(), "No data or Error occurred").is_true() self.navigation_page.scroll_down() self.track_view_page.switch_range_to_1y() assert_that(self.track_view_page.is_source_data_present(), "No data or Error occurred").is_true() self.navigation_page.scroll_down() self.track_view_page.switch_range_to_chart_week() assert_that(self.track_view_page.is_source_data_present(), "No data or Error occurred").is_true() @allure.title("Track View - User Creations") @allure.description("User should be able to view User Creations page") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1913") @pytest.mark.regression def test_view_track_user_creations(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) # Select 1st track from the list self.library_page.view_all_tracks() self.tracks_page.select_track_by_position(1) # TIKTOK User Creations assert_that(self.video_view_page.video_charts_list.get_item_by_text('TIKTOK User Creations').text).contains( 'TOTAL') self.track_view_page.charts_list.select_by_text('TIKTOK User Creations') assert_that(self.track_view_page.chosen_market_value("worldwide")).is_true() assert_that(self.common_page.is_label_present("TIKTOK ")).is_true() assert_that(self.common_page.is_label_present("Total Creations")).is_true() assert_that(self.common_page.is_label_present("VIEWS")).is_true() assert_that(self.common_page.is_label_present("CREATIONS")).is_true() self.track_view_page.switch_range_to_2w() self.track_view_page.switch_range_to_6w() self.track_view_page.select_market_by_name("The United States") assert_that(self.track_view_page.chosen_market_value("us")).is_true() assert_that(self.common_page.is_label_present("VIEWS")).is_true() assert_that(self.common_page.is_label_present("CREATIONS")).is_true() self.track_view_page.switch_range_to_8w() self.track_view_page.switch_range_to_26w() assert_that(self.common_page.is_label_present("VIEWS")).is_true() assert_that(self.common_page.is_label_present("CREATIONS")).is_true() self.navigation_page.click_back() self.track_view_page.select_market_by_name("The United Kingdom") assert_that(self.track_view_page.chosen_market_value("gb")).is_true() self.track_view_page.charts_list.select_by_text('TIKTOK User Creations') assert_that(self.track_view_page.chosen_market_value("gb")).is_true() assert_that(self.common_page.is_label_present("TIKTOK ")).is_true() assert_that(self.common_page.is_label_present("Total Creations")).is_true() assert_that(self.common_page.is_label_present("VIEWS")).is_true() assert_that(self.common_page.is_label_present("CREATIONS")).is_true() self.track_view_page.switch_range_to_1y() assert_that(self.common_page.is_label_present("VIEWS")).is_true() assert_that(self.common_page.is_label_present("CREATIONS")).is_true() @allure.title("Track View - Top 100/200") @allure.description("User should be able to view Track Top 100/200 page") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-1915") @pytest.mark.regression def test_view_track_top_100_200(self): 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) # Search for the explicit track self.navigation_page.go_to_search() self.search_page.in_search_items.send_text(top_track.split(' ')[0]) self.search_page.press_return_to_hide_keyboard() assert_that(self.common_page.is_label_present("Tracks")).is_true() self.search_page.list_items.select_by_text(top_track.split(' ')[0]) # SPOTIFY Daily Top 200 self.track_view_page.charts_list.select_by_text('SPOTIFY Daily Top 200') assert_that(self.common_page.is_label_present("SPOTIFY ")).is_true() assert_that(self.common_page.is_label_present("Daily Top 200")).is_true() assert_that(self.common_page.is_label_present("Top Markets")).is_true() assert_that(self.common_page.is_label_present("Other Markets")).is_true() self.track_view_page.select_market_by_name(self.country_top_chart) assert_that(self.track_view_page.chosen_market_value(self.countrycode_top_chart)).is_true() assert_that(self.common_page.is_label_present("SELECTED MARKET")).is_true() self.navigation_page.click_back() # APPLE Top 100 self.track_view_page.select_market_by_name(self.country_top_chart) assert_that(self.track_view_page.chosen_market_value(self.countrycode_top_chart)).is_true() self.track_view_page.charts_list.select_by_text('APPLE Top 100') assert_that(self.common_page.is_label_present("APPLE ")).is_true() assert_that(self.common_page.is_label_present("Top 100")).is_true() assert_that(self.common_page.is_label_present("Top Markets")).is_true() assert_that(self.common_page.is_label_present("Other Markets")).is_true() assert_that(self.common_page.is_label_present("SELECTED MARKET")).is_true()