import pytest import allure from random import choice from assertpy import assert_that from src.data.entities_data import entity_types from src.data.entities_data import entity_ids from src.helpers.api_helper import api_amplitude @allure.description("Send statistics to amplitude on Category page actions") @pytest.mark.usefixtures("app") class TestAmplitudeCategory: @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-1890") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-90") @allure.title("[Amplitude] - Category Page - Entity card clicked") @pytest.mark.regression @pytest.mark.parametrize('entity_type', entity_types) def test_amplitude_category_entity_card_click(self, entity_type): entity = self.app.api.get_random_entity(entity_type) entity_id = entity['id'] entity_name = entity['name'] # Insert artist to several categories category_name = f'cat1 for {entity_name}' category_id = self.app.api.insert_category(category_name) self.app.api.insert_entity_to_category(category_id, entity_id, entity_type) with self.app.page.expect_response( lambda response: response.url == api_amplitude and response.request.method == 'POST' and response.status == 200) as amplitude_response: self.app.go_to(self.categories_page.url) self.categories_page.is_page_loaded() event = self.common_page.get_amplitude_event(amplitude_response) assert_that(event['event_type']).is_equal_to('Categories Page Viewed') assert_that(event['event_properties']).is_equal_to({}) with self.app.page.expect_response( lambda response: response.url == api_amplitude and response.request.method == 'POST' and response.status == 200) as amplitude_response: self.categories_page.category_card.get_by(1).click() self.category_page.is_page_loaded() event = self.common_page.get_amplitude_event(amplitude_response) assert_that(event['event_type']).is_equal_to('Category Page Viewed') assert_that(event['event_properties']).is_equal_to({}) # DSP SoundCloud click dsp_ui = ["sndcld", "soundCloud"] with self.app.page.expect_response( lambda response: response.url == api_amplitude and response.request.method == 'POST' and response.status == 200) as amplitude_response: self.category_page.entity_card_dsp.get_by(1, dsp_ui[0]).click() event = self.common_page.get_amplitude_event(amplitude_response) assert_that(event['event_type']).is_equal_to(f'{entity_type.capitalize()} Card Clicked') assert_that(event['event_properties']['dsp_tab']).is_equal_to(dsp_ui[1]) assert_that(event['event_properties'][f'{entity_type}_id']).is_equal_to(int(entity_id)) if entity_type == 'artist': assert_that(event['event_properties']['artist_name']).is_equal_to(entity_name) elif entity_type == 'track': assert_that(event['event_properties']['track_title']).is_equal_to(entity_name) # DSP Spotify click dsp_ui = ["spotify", "Spotify"] with self.app.page.expect_response( lambda response: response.url == api_amplitude and response.request.method == 'POST' and response.status == 200) as amplitude_response: self.category_page.entity_card_dsp.get_by(1, dsp_ui[0]).click() event = self.common_page.get_amplitude_event(amplitude_response) assert_that(event['event_type']).is_equal_to(f'{entity_type.capitalize()} Card Clicked') assert_that(event['event_properties']['dsp_tab']).is_equal_to(dsp_ui[1]) assert_that(event['event_properties'][f'{entity_type}_id']).is_equal_to(int(entity_id)) if entity_type == 'artist': assert_that(event['event_properties']['artist_name']).is_equal_to(entity_name) elif entity_type == 'track': assert_that(event['event_properties']['track_title']).is_equal_to(entity_name) # DSP YouTube click dsp_ui = ["youtube", "YouTube"] with self.app.page.expect_response( lambda response: response.url == api_amplitude and response.request.method == 'POST' and response.status == 200) as amplitude_response: self.category_page.entity_card_dsp.get_by(1, dsp_ui[0]).click() event = self.common_page.get_amplitude_event(amplitude_response) assert_that(event['event_type']).is_equal_to(f'{entity_type.capitalize()} Card Clicked') assert_that(event['event_properties']['dsp_tab']).is_equal_to(dsp_ui[1]) assert_that(event['event_properties'][f'{entity_type}_id']).is_equal_to(int(entity_id)) if entity_type == 'artist': assert_that(event['event_properties']['artist_name']).is_equal_to(entity_name) elif entity_type == 'track': assert_that(event['event_properties']['track_title']).is_equal_to(entity_name) # DSP TikTok click dsp_ui = ["tiktok", "TikTok"] with self.app.page.expect_response( lambda response: response.url == api_amplitude and response.request.method == 'POST' and response.status == 200) as amplitude_response: self.category_page.entity_card_dsp.get_by(1, dsp_ui[0]).click() event = self.common_page.get_amplitude_event(amplitude_response) assert_that(event['event_type']).is_equal_to(f'{entity_type.capitalize()} Card Clicked') assert_that(event['event_properties']['dsp_tab']).is_equal_to(dsp_ui[1]) assert_that(event['event_properties'][f'{entity_type}_id']).is_equal_to(int(entity_id)) if entity_type == 'artist': assert_that(event['event_properties']['artist_name']).is_equal_to(entity_name) elif entity_type == 'track': assert_that(event['event_properties']['track_title']).is_equal_to(entity_name)