import json import unittest from argparse import Namespace import allure import pytest from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig from app.api_client import ApiClient from ...pages.add_track_popup import AddTrackPopup from ...pages.comparison_page import TrackComparisonPage from ...pages.left_navigation_panel import LeftNavigationPanel from ...pages.login_page import LoginPage from ...pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class ComparisonPlaylistSupportTest(unittest.TestCase): track_name1 = ["Liar", "Camila Cabello", 1] track_name2 = ["Dance Monkey", "Tones And I", 2] track_name3 = ["Lover", "Taylor Swift", 1] track14 = json.loads(json.dumps(AppConfig.get("track14")), object_hook=lambda d: Namespace(**d)) market_us = "us" united_states = "United States" belgium = "Belgium" global_market = "Global" performance_tooltip = "First Friday (1ST FRI) refers to the first Friday of streaming data." support_tooltip_local = "For the selected time period and market, results are based on rolling 7 days consumption from Spotify Top 200 and Apple Music Top 250 playlists." support_tooltip_global = "Results are for the selected time period and sorted based on rolling 7 day consumption from Spotify (Top 200 playlists, top playlists for top 25 markets, all New Music Friday and Hot Hits playlists, and top playlists for top genres) and Apple Music (Top 250 playlists and top playlists for top 10 markets)." periods = ["28 Days", "8 Weeks", "12 Weeks", "6 Months", "1 Year"] dsp_values_support = ["Spotify", "Apple Music", AppConfig.get("dsp")["all_playlists"]] dsp_values_performance = ["Apple Music", "Amazon", AppConfig.get("dsp")["total_streams"]] @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.trackPage = TrackPage(self.driver) self.add_track_popup = AddTrackPopup(self.driver) self.comparison_page = TrackComparisonPage(self.driver) self.left_panel = LeftNavigationPanel(self.driver) self.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.issue("https://data-analytics.atlassian.net/browse/AP-7441") @pytest.mark.flaky(reruns=0) @allure.story("AP-1794") @allure.severity(allure.severity_level.NORMAL) @allure.title("Verification of (i) tooltips on Track Comparison") @allure.description("TC verifies that user can see two 'i' style tooltips next to the 'Track Streams Performance' and " "'Playlist Support' headings on the Comparison Tool, so that be in the context of logic that is used to " "display Stream Graph and Playlist Support areas.") def test_tooltips_performance_and_support(self): user = self.loginPage.get_user_email_with_worker() token = self.api_client.authorize(user=user) self.comparison_page.remove_tracks_if_present_with_worker(self.market_us) self.loginPage.login_with_worker() self.loginPage.is_logged_in() self.left_panel.open_comparison_page() self.comparison_page.comparison_page_is_opened() self.trackPage.select_market(self.united_states) self.comparison_page.click_add_first_track_button() self.add_track_popup.add_track_to_comparison(self.track_name1) self.comparison_page.add_card_to_comparison(self.track_name2) # step 1-4 self.comparison_page.verify_info_icon_and_tooltip_for("performance-title", self.performance_tooltip) self.comparison_page.verify_info_icon_and_tooltip_for("support", self.support_tooltip_local) # step 5-8 self.comparison_page.select_market_from_dd(self.global_market) self.comparison_page.verify_info_icon_and_tooltip_for("performance-title", self.performance_tooltip) self.comparison_page.verify_info_icon_and_tooltip_for("support", self.support_tooltip_global) # step 9 self.comparison_page.select_market_from_dd(self.belgium) self.comparison_page.select_period_from_dd(self.periods[3]) self.comparison_page.track_performance_select_dsp_from_dd(self.dsp_values_performance[1]) self.comparison_page.playlist_details_select_dsp_from_dd(self.dsp_values_support[1]) self.comparison_page.verify_info_icon_and_tooltip_for("performance-title", self.performance_tooltip) self.comparison_page.verify_info_icon_and_tooltip_for("support", self.support_tooltip_local) self.comparison_page.select_market_from_dd(self.global_market) self.comparison_page.select_period_from_dd(self.periods[2]) self.comparison_page.track_performance_select_dsp_from_dd(self.dsp_values_performance[2]) self.comparison_page.playlist_details_select_dsp_from_dd(self.dsp_values_support[2]) self.comparison_page.verify_info_icon_and_tooltip_for("performance-title", self.performance_tooltip) self.comparison_page.verify_info_icon_and_tooltip_for("support", self.support_tooltip_global) # step 10 self.comparison_page.remove_all_tracks_ui() self.api_client.add_track_to_comparison(token=token, market=self.market_us, isrc=self.track14.isrc, id=self.track14.id) self.comparison_page.refresh() self.comparison_page.select_market_from_dd(self.global_market) # step 11 self.comparison_page.verify_info_icon_and_tooltip_for("performance-title", self.performance_tooltip) self.comparison_page.verify_info_icon_and_tooltip_for("support", self.support_tooltip_global)