import unittest import allure import pytest from parameterized import parameterized from ui_automation_framework.core import TestStatus from ui_automation_framework.utils import AppConfig from app.src.pages.album_page import AlbumPage from app.src.pages.comparison_page import TrackComparisonPage from app.src.pages.left_navigation_panel import LeftNavigationPanel from app.src.pages.login_page import LoginPage from app.src.pages.track_page import TrackPage @pytest.mark.usefixtures("set_up", "one_time_set_up") class DeepLinkingTrackPageTest(unittest.TestCase): @pytest.fixture(autouse=True) def classSetup(self): self.loginPage = LoginPage(self.driver) self.tp = TrackPage(self.driver) self.ap = AlbumPage(self.driver) self.cp = TrackComparisonPage(self.driver) self.leftPanel = LeftNavigationPanel(self.driver) self.ts = TestStatus(self.driver) @parameterized.expand([AppConfig.get("dsp")["spotify"], AppConfig.get("dsp")["apple"], AppConfig.get("dsp")["amazon"]]) @allure.story("AP-4865") @allure.severity(allure.severity_level.NORMAL) @allure.title("[Track Page] Lean Back/Lean Forward graph verification - Track Page. STEPS 1-17") @allure.description("""TC verifies that user can see ‘Lean Back/Lean Forward’ graph for each DSP with proper data. - Track Page""") def test_lean_back_lean_forward_tp_step_1_17(self, dsp): self.loginPage.login_with_worker() self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track40")["id"], market_id=AppConfig.get("market")["us"]["url"]) # step 1, 10 self.tp.verify_source_type_droplist_and_footnote() # step 2 - partially, 16, 17 self.tp.open_spotify_track_page_with_market_id(track_id=AppConfig.get("track40")["id"], market_id=AppConfig.get("market")["us"]["url"]) self.tp.select_dsp(dsp) self.tp.change_source_type(self.tp.dd_lean_back_forward) self.tp.verify_source_list_present(present=False) market_ui = self.tp.graph_get_selected_market() self.ts.markFinal(AppConfig.get("market")["us"]["name"] == market_ui, f"STEP 2: graph market is: {market_ui}") # step 3 if dsp == AppConfig.get("dsp")["amazon"]: type_verify = 5 else: type_verify = 3 self.tp.verify_params_in_url({self.tp.str_gr_type: type_verify}) # step 4 totals_before = self.tp.graph_amazon_get_totals() url_to_open = self.tp.get_url() self.cp.open_new_tab() self.cp.switch_to_tab(2) self.tp.open_url(url_to_open) totals_after = self.tp.graph_amazon_get_totals() self.ts.markFinal(totals_before == totals_after, f"STEP 4: {totals_before}\nand {totals_after} match") self.cp.close_current_tab() self.cp.switch_to_tab(1) # step 5 self.tp.graph_verify_graph_view_droplist() # step 6 self.tp.choose_graph_view_line_graph() self.tp.verify_graph_view(view=self.tp.graph_line_graph) self.tp.verify_graph_view(view=self.tp.graph_by_engagement) self.tp.choose_graph_view_area_graph() self.tp.verify_graph_view(view=self.tp.graph_area_graph) self.tp.verify_graph_view(view=self.tp.graph_by_engagement) self.tp.choose_graph_view_area_graph_percentage() self.tp.verify_graph_view(view=self.tp.graph_percentage) self.tp.verify_graph_view(view=self.tp.graph_by_engagement) # step 7 self.tp.go_back() self.tp.verify_graph_view(view=self.tp.graph_area_graph) self.tp.verify_graph_view(view=self.tp.graph_by_engagement) self.tp.go_back() self.tp.verify_graph_view(view=self.tp.graph_line_graph) self.tp.verify_graph_view(view=self.tp.graph_by_engagement) self.tp.go_back() self.tp.verify_graph_view(view=self.tp.graph_by_source) # step 8 self.tp.go_forward() self.tp.verify_graph_view(view=self.tp.graph_line_graph) self.tp.verify_graph_view(view=self.tp.graph_by_engagement) self.tp.go_forward() self.tp.verify_graph_view(view=self.tp.graph_area_graph) self.tp.verify_graph_view(view=self.tp.graph_by_engagement) self.tp.go_forward() self.tp.verify_graph_view(view=self.tp.graph_percentage) self.tp.verify_graph_view(view=self.tp.graph_by_engagement) # step 9 self.tp.graph_verify_legend() # step 11 totals_before = self.tp.graph_amazon_get_totals() self.tp.select_previous_mounth_period() tooltip = self.tp.graph_get_tooltips()[0] self.ts.markFinal("Lean Back" and "Lean Forward" and "Total" in tooltip, f"STEP 11: tooltip is: {tooltip}") # step 12 totals_after = self.tp.graph_amazon_get_totals() self.ts.markFinal(totals_before != totals_after, f"STEP 12: {totals_before}\nand {totals_after} match") # step 13-14 self.tp.market_dd_choose_few_countries([AppConfig.get("market")["us"]["name"], AppConfig.get("market")["brazil"]["name"]]) self.tp.export_to_file_amazon() @parameterized.expand( [ (AppConfig.get("dsp")["spotify"], "All Markets"), (AppConfig.get("dsp")["apple"], "All Markets"), (AppConfig.get("dsp")["amazon"], "All Markets"), (AppConfig.get("dsp")["spotify"], AppConfig.get("market")["us"]["name"]), (AppConfig.get("dsp")["apple"], AppConfig.get("market")["us"]["name"]), (AppConfig.get("dsp")["amazon"], AppConfig.get("market")["us"]["name"]), ] ) @allure.story("AP-4865") @allure.severity(allure.severity_level.NORMAL) @allure.title("[Track Page] Lean Back/Lean Forward graph verification - Track Page STEPS 13-14") @allure.description("""TC verifies that user can see ‘Lean Back/Lean Forward’ graph for each DSP with proper data. - Track Page STEPS 13-14""") def test_lean_back_lean_forward_tp_step_13_14(self, dsp, market): self.loginPage.login_with_worker() self.tp.open_spotify_track_page(track_id=AppConfig.get("track40")["id"]) self.tp.select_dsp(dsp) self.tp.change_source_type(self.tp.dd_lean_back_forward) self.tp.choose_graph_view_area_graph_percentage() self.tp.select_previous_mounth_period() # step 13-14 self.tp.stream_and_source_choose_country(market) self.tp.export_to_file_amazon() @parameterized.expand([AppConfig.get("dsp")["spotify"], AppConfig.get("dsp")["apple"]]) @allure.story("AP-4865") @allure.severity(allure.severity_level.NORMAL) @allure.title("[Track Page] Lean Back/Lean Forward graph verification - Album Page. STEP 18") @allure.description("""TC verifies that user can see ‘Lean Back/Lean Forward’ graph for each DSP with proper data. - Album Page""") def test_lean_back_lean_forward_ap_step_18(self, dsp): self.loginPage.login_with_worker() self.ap.open_album_page(AppConfig.get("album1")["id"]) # step 18 # step 1, 10 self.tp.verify_source_type_droplist_and_footnote(tp=False) # step 2 - partially, 16 self.ap.open_album_page(AppConfig.get("album1")["id"]) self.tp.select_dsp(dsp) self.tp.change_source_type(self.tp.dd_lean_back_forward) self.tp.verify_source_list_present(present=False) self.tp.stream_and_source_choose_country(AppConfig.get("market")["us"]["name"]) market_ui = self.tp.graph_get_selected_market() self.ts.markFinal(AppConfig.get("market")["us"]["name"] == market_ui, f"STEP 2: graph market is: {market_ui}") # step 5 self.tp.graph_verify_graph_view_droplist() # step 6 self.tp.choose_graph_view_line_graph() self.tp.verify_graph_view(view=self.tp.graph_line_graph) self.tp.verify_graph_view(view=self.tp.graph_by_engagement) self.tp.choose_graph_view_area_graph() self.tp.verify_graph_view(view=self.tp.graph_area_graph) self.tp.verify_graph_view(view=self.tp.graph_by_engagement) self.tp.choose_graph_view_area_graph_percentage() self.tp.verify_graph_view(view=self.tp.graph_percentage) self.tp.verify_graph_view(view=self.tp.graph_by_engagement) # step 9 self.tp.graph_verify_legend() # step 11 totals_before = self.tp.graph_amazon_get_totals() self.tp.select_previous_mounth_period() tooltip = self.tp.graph_get_tooltips()[0] self.ts.markFinal("Lean Back" and "Lean Forward" and "Total" in tooltip, f"STEP 11: tooltip is: {tooltip}") # step 12 totals_after = self.tp.graph_amazon_get_totals() self.ts.markFinal(totals_before != totals_after, f"STEP 12: {totals_before}\nand {totals_after} match") # step 13-14 self.tp.market_dd_choose_few_countries([AppConfig.get("market")["us"]["name"], AppConfig.get("market")["brazil"]["name"]]) self.tp.export_to_file_amazon([AppConfig.get("market")["us"]["market"], AppConfig.get("market")["brazil"]["market"]], ap=True) @parameterized.expand( [ (AppConfig.get("dsp")["spotify"], "All Markets"), (AppConfig.get("dsp")["apple"], "All Markets"), (AppConfig.get("dsp")["spotify"], AppConfig.get("market")["us"]), (AppConfig.get("dsp")["apple"], AppConfig.get("market")["us"]), ] ) @allure.story("AP-4865") @allure.severity(allure.severity_level.NORMAL) @allure.title("[Track Page] Lean Back/Lean Forward graph verification - Album Page STEPS 13-14") @allure.description("""TC verifies that user can see ‘Lean Back/Lean Forward’ graph for each DSP with proper data. - Album Page STEPS 13-14""") def test_lean_back_lean_forward_ap_step_13_14(self, dsp, market): self.loginPage.login_with_worker() self.ap.open_album_page(AppConfig.get("album1")["id"]) self.tp.select_dsp(dsp) self.tp.change_source_type(self.tp.dd_lean_back_forward) self.tp.choose_graph_view_area_graph_percentage() self.tp.select_previous_mounth_period() # step 13-14 if market == "All Markets": self.tp.stream_and_source_choose_country(market) self.tp.export_to_file_amazon(ap=True) else: self.tp.stream_and_source_choose_country(market["name"]) self.tp.export_to_file_amazon(market_def=market["api"], ap=True) # NOT AUTOMATED - steps 2, 15