import json import pytest import allure from src.data.entities_data import entity_types from src.data.entities_data import entity_ids @pytest.mark.usefixtures("app") class TestLoaders: @allure.title("[Discovery results] - Page Loaders") @allure.description("This test describes the case when Discovery Results page is loading.") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-188") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-206") @pytest.mark.regression @pytest.mark.parametrize('entity_type', entity_types) def test_discovery_results_loaders(self, assert_snapshot, entity_type): self.app.go_to(self.discovery_page.url) self.discovery_page.is_page_loaded() if entity_type == 'track': self.discovery_page.switch_scope_to_tracks() self.discovery_page.dsp_soundcloud_on(True) self.app.fulfill_response("**discovery", []) self.discovery_page.bn_discovery.click() self.common_page.intercom.exists() assert_snapshot( self.app.page.screenshot(mask=[self.search_page.placeholder_search._element, self.common_page.side_panel._element]), name='discovery_results_placeholders.png', threshold=0.2) @allure.title("[Saved Discoveries] - Page Loaders") @allure.description("This test describes the case when Saved Discoveries page is loading.") @allure.testcase("https://www.figma.com/file/zWXWbKaUD0HSWl6Rrjz85R/Saved-Discoveries?node-id=28%3A3155&t" "=Ev6XKo1HcF0DJyye-0") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-165") @pytest.mark.regression def test_saved_discoveries_loaders(self, assert_snapshot): self.app.api.insert_discovery('artist') self.app.go_to(self.saved_discoveries_page.url) self.saved_discoveries_page.is_page_loaded() self.app.fulfill_response(self.discovery_results_page.api_saved_discoveries, []) self.app.page.reload() assert_snapshot( self.app.page.screenshot(mask=[self.search_page.placeholder_search._element, self.common_page.side_panel._element]), name='saved_discoveries_placeholders.png', threshold=0.1) @allure.title("[Entity] - Start Page Loaders") @allure.description("This test describes the case when Artist/Track page is loading.") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-234") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-658") @pytest.mark.regression @pytest.mark.parametrize('entity_type', entity_types) def test_entity_basic_loaders(self, entity_type, assert_snapshot): entity_id = entity_ids[entity_type] self.app.go_to(f"/{entity_type}/{entity_id}") self.artist_page.is_page_loaded() self.app.fulfill_response('**discovery_result', []) self.app.page.reload() assert_snapshot( self.app.page.screenshot(mask=[self.search_page.placeholder_search._element, self.common_page.side_panel._element]), name=f'{entity_type}_basic_placeholders.png', threshold=0.1) @allure.title("[Artist] - All Page Loaders") @allure.description("This test describes the case when Artist page is loading.") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-234") @pytest.mark.regression def test_artist_all_loaders(self, assert_snapshot, entity_type='artist'): entity_id = entity_ids[entity_type] with self.app.page.expect_response( self.artist_page.api_discovery_result.format(entity_type, entity_id)) as response: self.app.go_to(f"/{entity_type}/{entity_id}") discovery_result = response.value.json() discovery_result['artwork_url'] = '' discovery_result['artwork_url_alt'] = '' discovery_result['tiktok']['followers_chart'] = [] discovery_result['tiktok']['followers'] = None discovery_result['tiktok']['likes_chart'] = [] discovery_result['tiktok']['likes'] = None discovery_result['tiktok']['videos'] = None discovery_result['tiktok']['mentions'] = None discovery_result['tiktok']['avg_duration'] = None discovery_result['tiktok']['latest_release_date'] = None data = json.dumps(discovery_result) self.artist_page.is_page_loaded() self.app.fulfill_response("**discovery_result", data) self.app.fulfill_response('**tracks**', []) self.app.fulfill_response('**videos**', []) self.app.fulfill_response('**albums**', []) self.app.fulfill_response('**labels', []) self.app.fulfill_response('**external_links', []) self.app.fulfill_response('**categories**', []) self.app.fulfill_response('**recent_searches**', []) self.app.page.reload() self.artist_page.is_page_loaded() self.app.page.wait_for_timeout(5000) assert_snapshot( self.app.page.screenshot(mask=[self.search_page.placeholder_search._element, self.common_page.side_panel._element, self.artist_page.entity_name._element, self.artist_page.entity_metadata.get_by('Label')._element, self.artist_page.entity_metadata.get_by('Genre')._element, self.artist_page.entity_metadata.get_by('Country')._element, self.artist_page.discovery_data_section._element, self.artist_page.btn_share._element]), name=f'{entity_type}_all_placeholders.png', threshold=0.2) @allure.title("[Track] - All Page Loaders") @allure.description("This test describes the case when Track page is loading.") @allure.testcase("https://data-analytics.atlassian.net/browse/DNAD-658") @pytest.mark.regression def test_track_all_loaders(self, assert_snapshot, entity_type='track'): entity_id = entity_ids[entity_type] with self.app.page.expect_response( self.artist_page.api_discovery_result.format(entity_type, entity_id)) as response: self.app.go_to(f"/{entity_type}/{entity_id}") discovery_result = response.value.json() discovery_result['artwork_url'] = '' discovery_result['artwork_url_alt'] = '' discovery_result['tiktok']['views_chart'] = [] discovery_result['tiktok']['views'] = None discovery_result['tiktok']['likes_chart'] = [] discovery_result['tiktok']['likes'] = None discovery_result['tiktok']['posts_latest'] = None discovery_result['tiktok']['mentions'] = None discovery_result['tiktok']['comments'] = None data = json.dumps(discovery_result) self.artist_page.is_page_loaded() self.app.fulfill_response("**discovery_result", data) self.app.fulfill_response('**tracks**', []) self.app.fulfill_response('**videos**', []) self.app.fulfill_response('**albums**', []) self.app.fulfill_response('**labels', []) self.app.fulfill_response('**external_links', []) self.app.fulfill_response('**categories**', []) self.app.fulfill_response('**recent_searches**', []) self.app.page.reload() self.artist_page.is_page_loaded() assert_snapshot( self.app.page.screenshot(mask=[self.search_page.placeholder_search._element, self.common_page.side_panel._element, self.artist_page.entity_name._element, self.artist_page.entity_metadata.get_by('Label')._element, self.artist_page.entity_metadata.get_by('Genre')._element, self.artist_page.entity_metadata.get_by('Country')._element, self.artist_page.discovery_data_section._element, self.artist_page.btn_share._element, self.track_page.track_artist._element, self.track_page.track_released_date._element, self.track_page.embed_widget_player._element]), name=f'{entity_type}_all_placeholders.png', threshold=0.2)