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 app.mysql_db_client_custom import MySqlClient from ...pages.add_track_popup import AddTrackPopup from ...pages.audience_graph import AudienceGraphChart 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): track31 = json.loads(json.dumps(AppConfig.get("track31")), object_hook=lambda d: Namespace(**d)) track24 = json.loads(json.dumps(AppConfig.get("track24")), object_hook=lambda d: Namespace(**d)) track15 = json.loads(json.dumps(AppConfig.get("track15")), object_hook=lambda d: Namespace(**d)) track13 = json.loads(json.dumps(AppConfig.get("track13")), object_hook=lambda d: Namespace(**d)) track22 = json.loads(json.dumps(AppConfig.get("track22")), object_hook=lambda d: Namespace(**d)) tracks = [track31, track24, track15, track13, track22] global_m = json.loads(json.dumps(AppConfig.get("market")["global"]), object_hook=lambda d: Namespace(**d)) us = json.loads(json.dumps(AppConfig.get("market")["us"]), object_hook=lambda d: Namespace(**d)) uae = json.loads(json.dumps(AppConfig.get("market")["uae"]), object_hook=lambda d: Namespace(**d)) @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.audience_graph = AudienceGraphChart(self.driver) self.api_client = ApiClient() self.sql_client = MySqlClient() self.ts = TestStatus(self.driver) @pytest.mark.flaky(reruns=0) @allure.story("AP-2690") @allure.severity(allure.severity_level.NORMAL) @allure.title("""Sticky header verification""") @allure.description("""Sticky header verification""") def test_sticky_header(self): self.comparison_page.remove_tracks_if_present_with_worker(self.us.market) user = self.loginPage.get_user_email_with_worker() token = self.api_client.authorize(user=user) for track in self.tracks: self.api_client.add_track_to_comparison(token=token, market=self.us.market, isrc=track.isrc, id=track.id) self.loginPage.login_with_worker() self.loginPage.is_logged_in() self.left_panel.open_comparison_page() self.trackPage.select_market(self.global_m.name) self.comparison_page.select_market_from_dd(self.global_m.name) self.comparison_page.select_period_from_dd(AppConfig.get("periods")["28d"]["name"]) self.comparison_page.open_stream_details() self.comparison_page.scroll_to_track_streams_performance() sticky_header_displayed = self.comparison_page.is_sticky_header_displayed() self.ts.markFinal(sticky_header_displayed == False, "STEP 1-2: stocky header is displayed: {}".format(sticky_header_displayed)) self.comparison_page.by_dsp_verify_title() sticky_header_displayed = self.comparison_page.is_sticky_header_displayed() self.ts.markFinal( sticky_header_displayed, "STEP 3: stocky header is displayed after scroll to By DSP: {}".format(sticky_header_displayed), ) self.comparison_page.verify_sticky_header_content(tracks=self.tracks, market=self.global_m.name, period=AppConfig.get("periods")["28d"]["name"]) self.trackPage.select_market(self.uae.name) self.comparison_page.select_period_from_dd(AppConfig.get("periods")["1y"]["name"]) self.comparison_page.open_playlist_details() self.comparison_page.scroll_to_last_row() self.comparison_page.verify_sticky_header_content(tracks=self.tracks, market=self.uae.name, period=AppConfig.get("periods")["1y"]["name"])