import logging import unittest import allure import pytest from assertpy import assert_that from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig from ui_automation_framework.utils import logger as cl from app.src.pages.amplitude_helper import AmplitudeHelper from app.src.pages.left_navigation_panel import LeftNavigationPanel from app.src.pages.login_page import LoginPage from app.src.pages.new_music_friday import NewMusicFridayPage from app.src.pages.new_music_friday_popup import NewMusicFridayPopup from app.src.pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class Amplitude(unittest.TestCase): log = cl.Logger(logging.DEBUG) by_markets = "By Markets" by_regions = "By Regions" featured_in = "Featured in" not_featured_in = "Not Featured in" all_featured = "All" @pytest.fixture(autouse=True) def classSetup(self): self.log = cl.Logger(logging.DEBUG) self.loginPage = LoginPage(self.driver) self.ts = TestStatus(self.driver) self.amplitude_helper = AmplitudeHelper(self.driver) self.track_page = TrackPage(self.driver) self.nmf_page = NewMusicFridayPage(self.driver) self.left_panel = LeftNavigationPanel(self.driver) self.nmf_popup = NewMusicFridayPopup(self.driver) @allure.story("AP-6036") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-5953][Amplitude] NMF Pop-up events") @allure.description("""TC Verifies events when user working with NMF pop-up""") def test_nmf_pop_up(self): self.loginPage.login_with_worker() self.track_page.select_market(AppConfig.get("market")["us"]["name"]) events = self.amplitude_helper.wait_and_get_amplitude_events(5, False) self.amplitude_helper.is_initializer_event(events[0]) self.amplitude_helper.verify_event_user_properties(events[0]) # step 1 self.left_panel.open_right_hamburger_menu_pages(self.left_panel.link_nmf) self.nmf_page.header_is_present() self.nmf_page.filter_by_sony_non_sony([self.nmf_page.filter_sony]) events = self.amplitude_helper.wait_and_get_amplitude_events(4, False) nmf_date = self.track_page.parameter_from_url(self.nmf_page.nmf_date) first_track_id = self.nmf_page.get_track_id_nmf() track_info = self.nmf_page.get_track_data_nmf_by_id(date=nmf_date, market=AppConfig.get("market")["us"]["api"], track_id=first_track_id) track_artists = ", ".join(track_info["track_artists"]) self.nmf_popup.open() events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_POPUP["event_type"]) assert_that(events[0]["event_properties"]["isrc"]).is_equal_to(track_info["isrc"]) assert_that(events[0]["event_properties"]["track_id"]).is_equal_to(track_info["track_id"]) assert_that(events[0]["event_properties"]["track_name"]).is_equal_to(track_info["track_name"]) assert_that(events[0]["event_properties"]["track_artist"]).is_equal_to(track_artists) assert_that(events[0]["event_properties"]["is_sony"]).is_true() # step 2 self.nmf_popup.close() self.nmf_page.header_is_present() self.nmf_page.filter_by_sony_non_sony([self.nmf_page.filter_non_sony]) nmf_date = self.track_page.parameter_from_url(self.nmf_page.nmf_date) first_track_id = self.nmf_page.get_track_id_nmf() track_info = self.nmf_page.get_track_data_nmf_by_id(date=nmf_date, market=AppConfig.get("market")["us"]["api"], track_id=first_track_id) track_artists = ", ".join(track_info["track_artists"]) self.nmf_popup.open() events = self.amplitude_helper.wait_and_get_amplitude_events(2) self.amplitude_helper.verify_for_event_type(events[1], self.amplitude_helper.NEW_MUSIC_FRIDAY_POPUP["event_type"]) assert_that(events[1]["event_properties"]["isrc"]).is_equal_to(track_info["isrc"]) assert_that(events[1]["event_properties"]["track_id"]).is_equal_to(track_info["track_id"]) assert_that(events[1]["event_properties"]["track_name"]).is_equal_to(track_info["track_name"]) assert_that(events[1]["event_properties"]["track_artist"]).is_equal_to(track_artists) assert_that(events[1]["event_properties"]["is_sony"]).is_equal_to(False) # step 3 self.nmf_popup.close() self.nmf_page.filter_by_sony_non_sony([self.nmf_page.filter_sony]) self.nmf_popup.open() self.nmf_popup.set_grouping(self.nmf_popup.grouping_by_markets) events = self.amplitude_helper.wait_and_get_amplitude_events(3) self.amplitude_helper.verify_for_event_type(events[2], self.amplitude_helper.NEW_MUSIC_FRIDAY_POPUP["filtered_event_type"]) assert_that(events[2]["event_properties"]["nmf_pu_grouping"]).is_equal_to(self.by_markets) self.nmf_popup.set_grouping(self.nmf_popup.grouping_by_regions) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_POPUP["filtered_event_type"]) assert_that(events[0]["event_properties"]["nmf_pu_grouping"]).is_equal_to(self.by_regions) # step 4 for value in [self.nmf_popup.sort_by_alphabetical, self.nmf_popup.sort_by_track_position, self.nmf_popup.sort_by_top_markets]: self.nmf_popup.select_sort_by(value) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_POPUP["filtered_event_type"]) assert_that(events[0]["event_properties"]["nmf_pu_sorting"]).is_equal_to(value) # step 5 self.nmf_popup.filter_by_market_features([self.nmf_popup.featured_in]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_POPUP["filtered_event_type"]) assert_that(events[0]["event_properties"]["nmf_pu_featured"]).is_equal_to(self.featured_in) self.nmf_popup.filter_by_market_features([self.nmf_popup.not_reatured_in]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_POPUP["filtered_event_type"]) assert_that(events[0]["event_properties"]["nmf_pu_featured"]).is_equal_to(self.not_featured_in) self.nmf_popup.filter_by_market_features([self.nmf_popup.featured_in, self.nmf_popup.not_reatured_in]) events = self.amplitude_helper.wait_and_get_amplitude_events(1) self.amplitude_helper.verify_for_event_type(events[0], self.amplitude_helper.NEW_MUSIC_FRIDAY_POPUP["filtered_event_type"]) assert_that(events[0]["event_properties"]["nmf_pu_featured"]).is_equal_to(self.all_featured)