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.apple_playlist_page import ApplePlaylistPage 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.app = ApplePlaylistPage(self.driver) self.cp = TrackComparisonPage(self.driver) self.leftPanel = LeftNavigationPanel(self.driver) self.ts = TestStatus(self.driver) @parameterized.expand([("apple", str(AppConfig.get("track15")["apple_id"])), ("spotify", AppConfig.get("track15")["id"])]) @allure.story("AP-4646") @allure.severity(allure.severity_level.NORMAL) @allure.title("[Track Page]Verification of 'By Voice' graph view for Amazon DSP") @allure.description("""[Track Page]Verification of 'By Voice' graph view for Amazon DSP""") def test_by_voice_amazon(self, dsp, id): self.loginPage.login_with_worker() self.tp.open_track_page(apple_spotify=dsp, track_id=id, market=AppConfig.get("market")["us"]["url"]) # step 1 self.tp.select_dsp(AppConfig.get("dsp")["amazon"]) self.tp.verify_graph_view(view=self.tp.graph_amazon) # step 2 self.tp.change_source_type(self.tp.dd_by_voice) self.tp.verify_graph_view(view=self.tp.graph_by_voice) # step 3-4 self.tp.graph_verify_legend(view=self.tp.graph_by_voice) url_before = self.tp.get_url() # step 5 for p in self.app.dp_predefined_periods: totals_before = self.tp.graph_amazon_get_totals() self.tp.select_predefined_period(period=p) totals_after = self.tp.graph_amazon_get_totals() self.ts.markFinal(totals_before != totals_after, f"STEP 5: {totals_before} and {totals_after} are different") # step 6 totals_before = self.tp.graph_amazon_get_totals() self.tp.select_previous_mounth_period() totals_after = self.tp.graph_amazon_get_totals() self.ts.markFinal(totals_before != totals_after, f"STEP 6: {totals_before} and {totals_after} are different") # step 7 self.tp.open_url(url_before + "&str_gr_start_date=2020-11-14&str_gr_end_date=2020-11-16") totals_exp = ["198,738", "66,246", "136,425\n(68.6%)", "45,475", "62,313\n(31.4%)", "20,771"] totals_ui = self.tp.graph_amazon_get_totals() device_type_tooltip_values = self.tp.get_device_type_tooltips()["streams"] tooltip_val_exp = [136425, 45286, 4673, 12354] self.ts.markFinal(totals_ui == totals_exp, f"STEP 7: {totals_ui} and {totals_exp} match") self.ts.markFinal( tooltip_val_exp == device_type_tooltip_values, f"device type tooltip values: {device_type_tooltip_values} and {tooltip_val_exp} match", ) # step 8 tooltip = self.tp.graph_get_tooltips()[0] self.ts.markFinal("Non-Voice Controlled " and "Voice Controlled" and "Total" in tooltip, f"STEP 8: tooltip is: {tooltip}") # step 9 for m in [ AppConfig.get("market")["spain"]["name"], AppConfig.get("market")["australia"]["name"], AppConfig.get("market")["global"]["name"], ]: totals_before = self.tp.graph_amazon_get_totals() self.tp.select_market(m) self.tp.select_dsp(AppConfig.get("dsp")["amazon"]) self.tp.change_source_type(self.tp.dd_by_voice) totals_after = self.tp.graph_amazon_get_totals() self.ts.markFinal(totals_before != totals_after, f"STEP 9: {totals_before} and {totals_after} are different") # step 10-11 self.tp.export_to_file_amazon(source=self.tp.graph_by_voice)