import json import time 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.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): track14 = json.loads(json.dumps(AppConfig.get("track14")), object_hook=lambda d: Namespace(**d)) track2 = json.loads(json.dumps(AppConfig.get("track2")), object_hook=lambda d: Namespace(**d)) track22 = json.loads(json.dumps(AppConfig.get("track22")), object_hook=lambda d: Namespace(**d)) track4 = json.loads(json.dumps(AppConfig.get("track4")), object_hook=lambda d: Namespace(**d)) track5 = json.loads(json.dumps(AppConfig.get("track5")), object_hook=lambda d: Namespace(**d)) track6 = json.loads(json.dumps(AppConfig.get("track6")), object_hook=lambda d: Namespace(**d)) track12 = json.loads(json.dumps(AppConfig.get("track12")), object_hook=lambda d: Namespace(**d)) track10 = json.loads(json.dumps(AppConfig.get("track10")), object_hook=lambda d: Namespace(**d)) track11 = json.loads(json.dumps(AppConfig.get("track11")), object_hook=lambda d: Namespace(**d)) search_query_1 = "4" search_query_2 = "4" @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.sql_client = MySqlClient() self.ts = TestStatus(self.driver) @allure.story("AP-2688") @allure.severity(allure.severity_level.NORMAL) @allure.title("""'Add a Track' popup and flow verification""") @allure.description("""TC verifies the whole flow of adding tracks to Comparison.""") def test_add_track_flow(self): self.comparison_page.remove_tracks_if_present_with_worker(AppConfig.get("market")["us"]["db"]) self.loginPage.login_with_worker() self.loginPage.is_logged_in() aut0_id = self.loginPage.get_auth0_id() self.sql_client.clear_search_history(id=aut0_id) self.left_panel.open_comparison_page() self.trackPage.select_market(AppConfig.get("market")["us"]["name"]) # step 1 self.comparison_page.click_add_first_track_button() # step 2 self.add_track_popup.is_popup_displayed() self.add_track_popup.verify_elements() # step 3 self.add_track_popup.search_for_track(self.search_query_1) self.add_track_popup.verify_search_results_present(present=False) self.add_track_popup.verify_elements() self.add_track_popup.is_search_close_icon_displayed() # step 4 self.add_track_popup.search_for_track(self.search_query_2) self.add_track_popup.verify_search_results_present() # step 5 self.add_track_popup.verify_hover() # step 6 self.add_track_popup.click_clear_icon() # step 7 for s in ["ad", "hello", "halo"]: self.add_track_popup.search_for_track(s) self.add_track_popup.verify_search_results_present() self.add_track_popup.click_clear_icon() # step 8-9 self.add_track_popup.verify_popup_height() # step 10 self.add_track_popup.search_for_track("hello") self.add_track_popup.close_popup() self.add_track_popup.refresh() self.comparison_page.comparison_page_is_opened() # step 11 self.comparison_page.click_add_first_track_button() self.add_track_popup.verify_elements() # step 12 self.add_track_popup.add_track_to_comparison([self.track14.name, self.track14.artist]) # step 13 self.comparison_page.select_market_from_dd(AppConfig.get("market")["brazil"]["name"]) self.trackPage.is_market_in_header_correct(AppConfig.get("market")["us"]["header"]) # step 14-15 self.comparison_page.click_add_first_track_button() self.add_track_popup.search_for_track("=========") self.add_track_popup.verify_no_tracks_to_show() # step 16 self.add_track_popup.click_clear_icon() self.add_track_popup.click_to_add_track([self.track14.name, self.track14.artist]) self.add_track_popup.is_popup_displayed() # step 17 self.add_track_popup.clear_input() self.add_track_popup.add_track_to_comparison([self.track2.name, self.track2.artist]) # step 18 self.trackPage.global_search_for_and_open_tp(self.track22) # step 19 self.left_panel.open_comparison_page() self.comparison_page.click_add_first_track_button() self.add_track_popup.verify_recent_searches([self.track22]) # step 20 self.add_track_popup.click_on_header() self.add_track_popup.verify_recent_searches([self.track22]) # step 21 self.add_track_popup.search_for_track(self.search_query_1) self.add_track_popup.verify_recent_searches([self.track22]) self.add_track_popup.search_for_track(self.search_query_2) self.add_track_popup.verify_search_results_present() self.add_track_popup.close_popup() # step 22 recent_tracks = [self.track4, self.track5, self.track6, self.track12, self.track10] for t in recent_tracks: self.trackPage.global_search_for_and_open_tp(t) time.sleep(10) # step 23 self.left_panel.open_comparison_page() self.comparison_page.click_add_second_track_button() recent_tracks = [self.track22] + recent_tracks self.add_track_popup.verify_recent_searches(recent_tracks) # step 24-25 self.add_track_popup.add_track_by_index(0) # step 26 self.comparison_page.remove_track(3) # step 27 self.comparison_page.add_card_to_comparison([self.track11.name, self.track11.artist])