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): track4 = json.loads(json.dumps(AppConfig.get("track4")), object_hook=lambda d: Namespace(**d)) track15 = json.loads(json.dumps(AppConfig.get("track15")), object_hook=lambda d: Namespace(**d)) us = json.loads(json.dumps(AppConfig.get("market")["us"]), object_hook=lambda d: Namespace(**d)) hint_no_data = "There’s no data to display\nfor the selected track." @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-1669") @allure.severity(allure.severity_level.NORMAL) @allure.title("""Adding of Spotify 'Sony' tracks to comparison""") @allure.description( """TC verifies that a user has an ability to add 'Sony' tracks to comparison tool not depending on selected market and without any confirmation actions. """ ) def test_sony_tracks_to_comparison(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.track4]: self.api_client.add_track_to_comparison(token=token, market=self.us.market, isrc=track.isrc, id=track.id2) self.loginPage.login_with_worker() self.loginPage.is_logged_in() self.left_panel.open_comparison_page() self.track_page.select_market(AppConfig.get("market")["australia"]["name"]) # step 1-2 self.comparison_page.verify_sony_label_is_displayed(1) # step 3-4 self.comparison_page.open_track_page_from_track_card(self.track4) self.track_page.verify_sony_label(self.track4.name) # step 5-8 self.left_panel.open_comparison_page() # step 9 self.track_page.select_market(AppConfig.get("market")["global"]["name"]) # step 10-11 self.comparison_page.verify_sony_label_is_displayed(1) self.comparison_page.open_track_page_from_track_card(self.track4) self.track_page.verify_sony_label(self.track4.name) # step 12-13 for track in [self.track15]: self.api_client.add_track_to_comparison(token=token, market=self.us.market, isrc=track.isrc, id=track.id) self.left_panel.open_comparison_page() self.track_page.select_market(AppConfig.get("market")["uk"]["name"]) self.comparison_page.verify_sony_label_is_displayed(1, present=False) self.comparison_page.verify_sony_label_is_displayed(2) # step 14-15 self.track_page.select_market(AppConfig.get("market")["algerial"]["name"]) self.comparison_page.verify_sony_label_is_displayed(1, present=False) self.comparison_page.verify_sony_label_is_displayed(2) # step 16 hint1 = self.comparison_page.get_release_hint_with_track_index(1) hint2 = self.comparison_page.get_release_hint_with_track_index(2) self.ts.markFinal(hint1 == hint2 == self.hint_no_data, "STEP 16: no data for both track in hint") # step 17 self.track_page.select_market(AppConfig.get("market")["tunisia"]["name"]) self.track_page.select_market(AppConfig.get("market")["sweden"]["name"]) self.track_page.select_market(AppConfig.get("market")["australia"]["name"]) self.comparison_page.verify_sony_label_is_displayed(1) self.comparison_page.verify_sony_label_is_displayed(2)