import allure import pytest from assertpy import assert_that from src.helpers.date_utils import get_ui_date_from_url @pytest.mark.usefixtures("app") class TestTopChartsAppleSpotifyNewEntryTooltip: @allure.title("[AP-7573] [Top Charts> Spotify and Apple] New Entry tooltip verification. STEPS 1-3") @allure.description("[AP-7573] [Top Charts> Spotify and Apple] New Entry tooltip verification. STEPS 1-3") @allure.testcase("TC Verifies: A ‘New Entry’ tooltip on the: Top Charts → Spotify Daily/Weekly Top 200 tab" "Top Charts → Apple Daily Top 100 tab.") @pytest.mark.regression def test_top_charts_apple_spotify_new_entry_tooltip_steps_1_3(self): self.login_page.login() self.app.go_to(self.top_charts_spotify_tab.url) self.top_charts_page.spotify_tab.is_selected() self.top_charts_spotify_tab.switch_sub_tab(self.top_charts_spotify_tab.daily_tab) # step 1 date_url = '2022-10-13' track_name = 'Miss You' track_resp = self.app.api.get_top_charts_tracks('spotify', 'us', date_url)['tracks'][135] if track_resp['name'] == track_name and track_resp['is_new']: self.top_charts_spotify_tab.select_market('United States') self.top_charts_spotify_tab.select_date(get_ui_date_from_url(date_url), self.top_charts_spotify_tab.daily_tab) self.top_charts_spotify_tab.filter_input.input_text(track_name) self.top_charts_spotify_tab.column_header_trend.click() self.top_charts_spotify_tab.column_trend_values._element.first.hover() # step 2 self.top_charts_spotify_tab.entry_tooltip.exists() self.top_charts_spotify_tab.entry_tooltip.contain_text("New Entry") # step 3 track_resp_prev = self.app.api.get_top_charts_tracks('spotify', 'us', '2022-10-12')['tracks'] assert_that([t['name'] for t in track_resp_prev]).does_not_contain(track_name) @allure.title("[AP-7573] [Top Charts> Spotify and Apple] New Entry tooltip verification. STEPS 4-6") @allure.description("[AP-7573] [Top Charts> Spotify and Apple] New Entry tooltip verification. STEPS 4-6") @allure.testcase("TC Verifies: A ‘New Entry’ tooltip on the: Top Charts → Spotify Daily/Weekly Top 200 tab" "Top Charts → Apple Daily Top 100 tab.") @pytest.mark.regression def test_top_charts_apple_spotify_new_entry_tooltip_steps_4_6(self): self.login_page.login() self.app.go_to(self.top_charts_spotify_tab.url) self.top_charts_page.spotify_tab.is_selected() self.top_charts_spotify_tab.switch_sub_tab(self.top_charts_spotify_tab.weekly_tab) # step 4 date_url = '2022-10-27' track_name = 'Anti-Hero' track_resp = self.app.api.get_top_charts_tracks('spotify', 'us', date_url, 'weekly')['tracks'][0] if track_resp['name'] == track_name and track_resp['is_new']: self.top_charts_spotify_tab.select_market('United States') self.top_charts_spotify_tab.select_date(get_ui_date_from_url(date_url), self.top_charts_spotify_tab.weekly_tab) self.top_charts_spotify_tab.filter_input.input_text(track_name) self.top_charts_spotify_tab.column_header_trend.click() self.top_charts_spotify_tab.column_trend_values._element.first.hover() # step 5 self.top_charts_spotify_tab.entry_tooltip.contain_text("New Entry") # step 6 track_resp_prev = self.app.api.get_top_charts_tracks('spotify', 'us', '2022-10-20', 'weekly')['tracks'] assert_that([t['name'] for t in track_resp_prev]).does_not_contain(track_name) @allure.title("[AP-7573] [Top Charts> Spotify and Apple] New Entry tooltip verification. STEPS 7-8") @allure.description("[AP-7573] [Top Charts> Spotify and Apple] New Entry tooltip verification. STEPS 7-8") @allure.testcase("TC Verifies: A ‘New Entry’ tooltip on the: Top Charts → Spotify Daily/Weekly Top 200 tab" "Top Charts → Apple Daily Top 100 tab.") @pytest.mark.regression def test_top_charts_apple_spotify_new_entry_tooltip_steps_7_8(self): self.login_page.login() # step 7 market = 'us' track_resp = self.app.api.get_apple_top_charts_tracks(market)['items'] for track in track_resp: if track['metrics']['is_entry'] \ and not track['metrics']['previous_position']: track_name = track['public_meta']['name'] market_to_choose = market self.app.go_to(self.top_charts_apple_tab.url + f"&market={market_to_choose}") self.top_charts_page.apple_tab.is_selected() self.top_charts_apple_tab.filter_input.input_text(track_name) self.top_charts_apple_tab.column_trend_values._element.first.hover() # step 8 self.top_charts_apple_tab.entry_tooltip.contain_text("New Entry") break