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): us = json.loads(json.dumps(AppConfig.get("market")["us"]), object_hook=lambda d: Namespace(**d)) track_name1 = [ "RITMO (Bad Boys For Life)", "Black Eyed Peas,J Balvin", 1, "USSM11912430", "2019-12-10", "6cy3ki60hLwimwIje7tALf", "1482986096", ] track_name2 = ["Panini", "Lil Nas X", 2, "USSM11903948", "2019-06-20", "6fTt0CH2t0mdeB2N9XFG5r", "1468166328"] track_name3 = [ "Higher Love", "Kygo,Whitney Houston", 3, "USRC11901901", "2019-06-27", "6oJ6le65B3SEqPwMRNXWjY", "1469941840", ] track_name4 = [ "Call You Mine", "The Chainsmokers,Bebe Rexha", 4, "USQX91901124", "2019-07-24", "1SNiXDwSilLujcYdvfqVpT", "1464767458", ] track_name5 = [ "Talk (feat. Disclosure)", "Khalid,Disclosure", 5, "USRC11900004", "2019-02-07", "6TqXcAFInzjp0bODyvrWEq", "1451262393", ] dsp_values_support = ["Spotify", "Apple Music", AppConfig.get("dsp")["all_playlists"]] global_market = "Global" period = ["1 Year", 365] fifty = 50 playlists_api_ids = "id" @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.story("AP-1780") @allure.severity(allure.severity_level.NORMAL) @allure.title("Playlist Support: No limits for the number of shown playlists") @allure.description("TC verifies that the limit of 50 playlists for Spotify/Apple and 100 for Combined view are removed. User can " "see all the playlists from Top Spotify and Top Apple where compared tracks had their lifecycle in the " "selected period.") def test_no_limits_of_shown_playlist(self): self.comparison_page.remove_tracks_if_present_with_worker(self.global_market) user = self.loginPage.get_user_email_with_worker() token = self.api_client.authorize(user=user) for track in [self.track_name1, self.track_name2, self.track_name3, self.track_name4, self.track_name5]: self.api_client.add_track_to_comparison(token=token, market=self.us.market, isrc=track[3], id=track[5]) self.loginPage.login_with_worker() self.loginPage.is_logged_in() self.left_panel.open_comparison_page() self.trackPage.select_market(self.global_market) self.comparison_page.select_period_from_dd(self.period[0]) self.comparison_page.open_playlist_details() apple_ids = [ self.track_name1[6], self.track_name2[6], self.track_name3[6], self.track_name4[6], self.track_name5[6], ] spotify_ids = [ self.track_name1[5], self.track_name2[5], self.track_name3[5], self.track_name4[5], self.track_name5[5], ] spotify_playlists_api_count = len(self.comparison_page.get_playlists_from_api_get(apple_spotify="spotify", period=self.period[1], tracks=spotify_ids, param=self.playlists_api_ids)) apple_playlists_api_count = len(self.comparison_page.get_playlists_from_api_get(apple_spotify="apple", period=self.period[1], tracks=apple_ids, param=self.playlists_api_ids)) spotify_playlist_count_ui = len(self.comparison_page.get_playlist_details_names()) self.comparison_page.playlist_details_select_dsp_from_dd(self.dsp_values_support[1]) apple_playlist_count_ui = len(self.comparison_page.get_playlist_details_names()) self.comparison_page.playlist_details_select_dsp_from_dd(self.dsp_values_support[2]) combined_playlist_count_ui = len(self.comparison_page.get_playlist_details_names()) self.ts.markFinal(spotify_playlist_count_ui > self.fifty, "STEP 1-2: count of spotify playlists is > {}".format(self.fifty)) self.ts.markFinal(spotify_playlists_api_count == spotify_playlist_count_ui, "ui and api spotify count are equal") self.ts.markFinal(apple_playlist_count_ui > self.fifty, "STEP 3: count of apple playlists is > {}".format(self.fifty)) self.ts.markFinal(apple_playlists_api_count == apple_playlist_count_ui, "ui and api apple count are equal") self.ts.markFinal( (spotify_playlist_count_ui + apple_playlist_count_ui) == combined_playlist_count_ui, "STEP 4: UI: spotify+apple count = combined", )