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.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): track24 = json.loads(json.dumps(AppConfig.get("track24")), object_hook=lambda d: Namespace(**d)) track38 = json.loads(json.dumps(AppConfig.get("track38")), object_hook=lambda d: Namespace(**d)) track15 = json.loads(json.dumps(AppConfig.get("track15")), object_hook=lambda d: Namespace(**d)) track17 = json.loads(json.dumps(AppConfig.get("track17")), object_hook=lambda d: Namespace(**d)) us = json.loads(json.dumps(AppConfig.get("market")["us"]), object_hook=lambda d: Namespace(**d)) @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.comparison_page = TrackComparisonPage(self.driver) self.left_panel = LeftNavigationPanel(self.driver) self.audience_graph = AudienceGraphChart(self.driver) self.track_page = TrackPage(self.driver) self.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.story("AP-2934") @allure.severity(allure.severity_level.NORMAL) @allure.title("""Audience Graph data calculation""") @allure.description("""TC verifies that the data for the bar chart is calculated correctly.""") def test_audience_graph_calculation(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.track24, self.track38, self.track15, self.track17]: 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.comparison_page.wait_for_stream_performance_graph_visible() self.track_page.select_market(self.us.name) self.comparison_page.select_market_from_dd(self.us.name) self.comparison_page.select_period_from_dd(AppConfig.get("periods")["28d"]["name"]) # step 1-5 tracks = [self.track24, self.track38, self.track17] self.audience_graph.verify_tooltip_dates(tracks=tracks, period=AppConfig.get("periods")["28d"]["count"]) # step 6-8 self.audience_graph.verify_tooltip_dates(tracks=tracks, period=AppConfig.get("periods")["28d"]["count"]) # step 9 for period in [ AppConfig.get("periods")["14d"], AppConfig.get("periods")["28d"], AppConfig.get("periods")["8w"], AppConfig.get("periods")["12w"], AppConfig.get("periods")["6m"], AppConfig.get("periods")["1y"], ]: self.comparison_page.select_period_from_dd(period["name"]) self.audience_graph.change_dsp(AppConfig.get("dsp")["apple"]) self.audience_graph.verify_tooltip_dates(tracks=tracks, period=period["count"]) # step 10 for period in [ AppConfig.get("periods")["14d"], AppConfig.get("periods")["28d"], AppConfig.get("periods")["8w"], AppConfig.get("periods")["12w"], AppConfig.get("periods")["6m"], AppConfig.get("periods")["1y"], ]: self.comparison_page.select_period_from_dd(period["name"]) self.audience_graph.change_dsp(AppConfig.get("dsp")["spotify"]) self.audience_graph.verify_tooltip_dates(tracks=tracks, period=period["count"]) # step 11-13 self.comparison_page.select_market_from_dd(AppConfig.get("market")["global"]["name"]) self.comparison_page.select_period_from_dd(AppConfig.get("periods")["1y"]["name"]) self.audience_graph.verify_tooltip_dates(tracks=tracks, period=AppConfig.get("periods")["1y"]["count"])