import unittest import allure import pytest from ui_automation_framework.core import TestStatus from app.src.pages.login_page import LoginPage from app.src.pages.top_charts_page import TopChartsPage from app.src.pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class TopChartsPageTest(unittest.TestCase): MARKET = "Poland" FIRST_WEEK = "01/30/20" SECOND_WEEK = "01/23/20" FIRST_TRACK_ID = "47vY0q2TEkkPsGNWtccNlZ" SECOND_TRACK_ID = "248wm0QJjthcaWCCXoXfDf" FIRST_TRACK_POSITION = 36 SECOND_TRACK_POSITION = 37 @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.topChartsPage = TopChartsPage(self.driver) self.trackPage = TrackPage(self.driver) self.ts = TestStatus(self.driver) @allure.story("AP-2524") @allure.severity(allure.severity_level.NORMAL) @allure.title("Trend position calculation of the track with different IDs in Spotify Weekly Chart (ISRC remains the same)") @allure.description( """TC verifies the correctness of calculation trend position for the track that is present in Top Spotify Weekly Chart at least two weeks in a row with the same ISRC but different ID numbers. Such tracks shouldn’t be considered as new ones or re-entry even though, the track ID is changed.""" ) def test_spotify_different_trackid_trend_weekly(self): self.loginPage.login_with_worker() self.topChartsPage.open_top_chart_page() self.topChartsPage.select_market(self.MARKET) self.topChartsPage.switch_tab(self.topChartsPage.SPOTIFY_TYPE) self.topChartsPage.change_sub_tab("weekly") self.topChartsPage.open_spotify_chart_for_date_dd(self.FIRST_WEEK) is_table_empty = self.topChartsPage.table_is_empty() self.ts.markFinal(not is_table_empty, "Step 1: Succesfully switched the {} date".format(self.FIRST_WEEK)) self.topChartsPage.change_filter_value("NICKI", self.topChartsPage.SPOTIFY_TYPE) is_on_position = self.topChartsPage.check_track_for_position(self.FIRST_TRACK_ID, self.FIRST_TRACK_POSITION, self.topChartsPage.UP, 1) self.ts.markFinal(is_on_position, "Step 2: Track {} at position {}".format(self.FIRST_TRACK_ID, self.FIRST_TRACK_POSITION)) self.topChartsPage.open_spotify_chart_for_date_dd(self.SECOND_WEEK) is_table_empty = self.topChartsPage.table_is_empty() self.ts.markFinal(not is_table_empty, "Step 3: Succesfully switched the {} date".format(self.SECOND_WEEK)) self.topChartsPage.change_filter_value("NICKI", self.topChartsPage.SPOTIFY_TYPE) is_on_position = self.topChartsPage.check_track_for_position(self.SECOND_TRACK_ID, self.SECOND_TRACK_POSITION, self.topChartsPage.DOWN_MORE_5, 9) self.ts.markFinal(is_on_position, "Step 4: Track {} at position {}".format(self.FIRST_TRACK_ID, self.FIRST_TRACK_POSITION)) self.topChartsPage.spotify_filter_click_clear_icon() track = self.topChartsPage.get_track_at_position(self.SECOND_TRACK_POSITION) track_previous_week_trend = track["position"] - self.FIRST_TRACK_POSITION self.ts.markFinal(track_previous_week_trend == 1, "Step 5: Moved for 1 position") self.topChartsPage.open_spotify_chart_for_date_dd(self.FIRST_WEEK) is_table_empty = self.topChartsPage.table_is_empty() self.ts.markFinal(not is_table_empty, "Step 6: Succesfully switched the {} date".format(self.FIRST_WEEK)) track = self.topChartsPage.get_track_at_position(self.FIRST_TRACK_POSITION) self.ts.markFinal(track["trendValue"] == str(track_previous_week_trend), "Step 7: Correct trend between 2 weeks") # Step 8 is skipped from test, as Trend Arrows being calucated at step 2 and 4 (trend types)