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 TestTrackComparison: artist_name = DataLoader.get_artist() data = DataLoader("test_artist_data.json") @allure.title("Artist - Track Comparison") @allure.description("User should be able to compare artist's tracks") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-2111") @pytest.mark.regression def test_artist_track_comparison(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.navigation_page.click_artist_tab() self.artist_page.go_to_track_comparison() assert_that(self.track_comparison_page.is_track_comparison_opened()).is_true() # Check searching unexistent track self.track_comparison_page.in_search_by_name_to_compare.click() self.track_comparison_page.in_search_by_name_to_compare.send_text('unexistent') self.navigation_page.press_return_to_hide_keyboard() assert_that(self.track_comparison_page.is_label_present("No results")).is_true() assert_that(self.track_comparison_page.is_label_present("Please try another track name")).is_true() self.track_comparison_page.click_try_again() # Take tracks name for future using track_name = self.track_comparison_page.get_track_name_from_list() track_name_1 = next(track_name) track_name_2 = next(track_name) if track_name_2 == track_name_1: track_name_2 = next(track_name) track_name_3 = next(track_name) if track_name_3 == track_name_1 or track_name_3 == track_name_2: track_name_3 = next(track_name) print("Tracks to compare are: {}, {}, {}".format(track_name_1, track_name_2, track_name_3)) # Select 1st track from the list self.track_comparison_page.track_comparison_list.select_by_text(track_name_1) # Search and select track by name from the track list self.track_comparison_page.search_and_select_track_to_compare_by_name(track_name_2) assert_that(self.track_comparison_page.is_label_present("Selected Tracks")).is_true() assert_that(self.track_comparison_page.is_label_present("All Tracks")).is_true() self.track_comparison_page.click_to_compare() assert_that(self.track_comparison_page.is_label_present(self.artist_name)).is_true() assert_that(self.track_comparison_page.is_label_present("ALL ")).is_true() assert_that(self.track_comparison_page.is_label_present("Track Performance")).is_true() assert_that(self.track_comparison_page.is_label_present("Tap bar chart to see the track details")).is_true() assert_that(self.track_comparison_page.is_label_present(track_name_1)).is_true() assert_that(self.track_comparison_page.is_label_present(track_name_2)).is_true() # Edit Tracks to add 3rd one self.track_comparison_page.bn_edit_tracks.click() self.track_comparison_page.track_comparison_list.select_by_text(track_name_3) self.track_comparison_page.click_to_compare() assert_that(self.artist_page.is_label_present(track_name_1)).is_true() assert_that(self.artist_page.is_label_present(track_name_2)).is_true() assert_that(self.artist_page.is_label_present(track_name_3)).is_true() # Check periods self.track_comparison_page.switch_range_to_chart_week() assert_that(self.track_comparison_page.is_label_present(track_name_1)).is_true() self.track_comparison_page.switch_range_to_2w() assert_that(self.track_comparison_page.is_label_present(track_name_2)).is_true() self.track_comparison_page.switch_range_to_4w() assert_that(self.track_comparison_page.is_label_present(track_name_3)).is_true() self.track_comparison_page.switch_range_to_6w() assert_that(self.track_comparison_page.is_label_present(track_name_1)).is_true() self.track_comparison_page.switch_range_to_8w() assert_that(self.track_comparison_page.is_label_present(track_name_2)).is_true() self.track_comparison_page.switch_range_to_26w() assert_that(self.track_comparison_page.is_label_present(track_name_3)).is_true() self.track_comparison_page.switch_range_to_1y() assert_that(self.track_comparison_page.is_label_present(track_name_1)).is_true() assert_that(self.track_comparison_page.is_label_present(track_name_2)).is_true() assert_that(self.track_comparison_page.is_label_present(track_name_3)).is_true() # Click track bar and proceed to track screen self.track_comparison_page.click_track_bar(track_name_1) assert_that(self.track_comparison_page.is_label_present("Total")).is_true() assert_that(self.track_comparison_page.is_label_present("Change")).is_true() self.track_comparison_page.bn_track_screen.click() assert_that(self.common_page.is_label_present(track_name_1)).is_true() assert_that(self.track_view_page.is_track_alltime_statistics_present(), "Alltime statistics should be shown").is_true() @allure.title("Track View - Compare") @allure.description("User should be able to proceed to Track Comparison from Track View page") @allure.testcase("https://data-analytics.atlassian.net/browse/AMA-2232") @pytest.mark.regression @pytest.mark.artist def test_view_track_compare(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() track_name = self.track_comparison_page.get_track_name_from_list() track_name_1 = next(track_name) track_name_2 = next(track_name) if track_name_2 == track_name_1: track_name_2 = next(track_name) print(track_name_1) self.tracks_page.select_track_by_position(1) # Proceed to track comparison self.track_view_page.click_compare() assert_that(self.track_comparison_page.is_track_comparison_opened()).is_true() assert_that(self.track_comparison_page.is_label_present("Selected Tracks")).is_true() assert_that(self.track_comparison_page.is_label_present("All Tracks")).is_true() self.track_comparison_page.search_and_select_track_to_compare_by_name(track_name_2) self.track_comparison_page.click_to_compare() assert_that(self.track_comparison_page.is_label_present(self.artist_name)).is_true() assert_that(self.track_comparison_page.is_label_present("ALL ")).is_true() assert_that(self.track_comparison_page.is_label_present("Track Performance")).is_true() assert_that(self.track_comparison_page.is_label_present("Tap bar chart to see the track details")).is_true() assert_that(self.track_comparison_page.is_label_present(track_name_1)).is_true() assert_that(self.track_comparison_page.is_label_present(track_name_2)).is_true()