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, CoreConfig from app.api_client import ApiClient 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.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class NewMusicFridayPageTest(unittest.TestCase): @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.nmf = NewMusicFridayPage(self.driver) self.left_panel = LeftNavigationPanel(self.driver) self.tp = TrackPage(self.driver) self.api_client = ApiClient() self.ts = TestStatus(self.driver) @allure.story("AP-6028") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-5943] NMF. Deep Linking verification STEPS 1-6") @allure.description("""TC verifies that the user can share/open a link to the NMF page for the specific date. STEPS 1-6""") def test_nmf_deep_linking_steps_1_6(self): self.loginPage.login_with_worker() self.left_panel.open_right_hamburger_menu_pages(self.left_panel.link_nmf) self.nmf.header_is_present() self.tp.select_market(AppConfig.get("market")["us"]["name"]) # step 1-2 nmf_dates = self.api_client.get_playlists_summary_nmf()["available_dates"] assert_that(self.nmf.get_url()).is_equal_to(f"{CoreConfig.ENV_BASE_URL}/spotify/new-music-friday?nmf_date={nmf_dates[0]}") # step 3 previous_date_nmf = f"{nmf_dates[1]}" self.tp.change_param_in_url_new(self.nmf.nmf_date, previous_date_nmf) self.nmf.header_is_present() self.tp.verify_params_in_url({self.nmf.nmf_date: previous_date_nmf}) # step 4 self.nmf.refresh() self.nmf.header_is_present() self.tp.verify_params_in_url({self.nmf.nmf_date: previous_date_nmf}) # step 5 url_before = self.nmf.get_url() self.nmf.filter_check_uncheck(self.nmf.filter_non_sony) self.nmf.sort_by(self.nmf.sort_alphabetical) url_after = self.nmf.get_url() assert_that(url_before).is_equal_to(url_after) # step 6 self.tp.select_market(AppConfig.get("market")["global"]["name"]) self.nmf.header_is_present() url_us = self.nmf.get_url() self.nmf.verify_owner([self.nmf.filter_non_sony, self.nmf.filter_sony]) self.nmf.verify_sort_by(self.nmf.sort_top_markets) assert_that(url_us).is_equal_to(url_after) @allure.story("AP-6028") @allure.severity(allure.severity_level.NORMAL) @allure.title("[AP-5943] NMF. Deep Linking verification STEPS 7-12") @allure.description("""TC verifies that the user can share/open a link to the NMF page for the specific date. STEPS 7-12""") def test_nmf_deep_linking_steps_7_12(self): self.loginPage.login_with_worker() self.left_panel.open_right_hamburger_menu_pages(self.left_panel.link_nmf) self.nmf.header_is_present() # step 7 nmf_dates = self.api_client.get_playlists_summary_nmf()["available_dates"] for date in nmf_dates[1:4]: self.tp.change_param_in_url_new(self.nmf.nmf_date, date) self.nmf.header_is_present() self.tp.verify_params_in_url({self.nmf.nmf_date: date}) # step 8 self.nmf.go_back() self.tp.verify_params_in_url({self.nmf.nmf_date: nmf_dates[2]}) self.nmf.go_back() self.tp.verify_params_in_url({self.nmf.nmf_date: nmf_dates[1]}) # step 9 self.nmf.go_forward() self.tp.verify_params_in_url({self.nmf.nmf_date: nmf_dates[2]}) self.nmf.go_forward() self.tp.verify_params_in_url({self.nmf.nmf_date: nmf_dates[3]}) # step 10 for inc_date in ["2021-21-21", "2021-05-20", "2021-05-21test"]: self.tp.change_param_in_url_new(self.nmf.nmf_date, inc_date) self.nmf.header_is_present() self.tp.verify_params_in_url({self.nmf.nmf_date: nmf_dates[0]}) # step 11 self.nmf.open_url(f"{CoreConfig.ENV_BASE_URL}/spotify/new-music-friday?nmf_date_test={nmf_dates[0]}") self.nmf.header_is_present() self.tp.verify_params_in_url({self.nmf.nmf_date: nmf_dates[0]}) # step 12 self.nmf.open_url(f"{CoreConfig.ENV_BASE_URL}/spotify/new-music-fridy?nmf_date={nmf_dates[0]}") self.nmf.verify_404()