From ad69f9c86b950cc84ca103e65824b9c9129d3999 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Mon, 31 Jan 2022 18:06:13 +0100 Subject: add support for testing with other browsers (especially Abrowser and Librewolf) There are still some spurious failures when running under those newer browsers. Those will be systematically investigated and fixed. --- test/unit/test_item_preview.py | 51 +++++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 13 deletions(-) (limited to 'test/unit/test_item_preview.py') diff --git a/test/unit/test_item_preview.py b/test/unit/test_item_preview.py index 6148bc2..8b2b161 100644 --- a/test/unit/test_item_preview.py +++ b/test/unit/test_item_preview.py @@ -19,6 +19,7 @@ Haketilo unit tests - displaying resources and mappings details import pytest from selenium.webdriver.support.ui import WebDriverWait +from selenium.common.exceptions import NoSuchWindowException from ..extension_crafting import ExtraHTML from ..script_loader import load_script @@ -138,7 +139,10 @@ def test_mapping_preview(driver, execute_in_page): @pytest.mark.ext_data({ 'background_script': broker_js, - 'extra_html': ExtraHTML('html/item_preview.html', {}), + 'extra_html': [ + ExtraHTML('html/item_preview.html', {}), + ExtraHTML('html/file_preview.html', {}, wrap_into_htmldoc=False) + ], 'navigate_to': 'html/item_preview.html' }) @pytest.mark.usefixtures('webextension') @@ -148,8 +152,6 @@ def test_file_preview_link(driver, execute_in_page): referenced file to be previewed. """ execute_in_page(load_script('html/item_preview.js')) - # Mock dialog - execute_in_page('dialog.error = (...args) => window.error_args = args;') sample_data = make_complete_sample_data() sample_data['mappings'] = {} @@ -162,22 +164,45 @@ def test_file_preview_link(driver, execute_in_page): execute_in_page( ''' - let resource_preview_object = - resource_preview(arguments[0], undefined, "dummy dialog ctx"); + let resource_preview_object = resource_preview(arguments[0], undefined); document.body.append(resource_preview_object.main_div); ''', sample_resource) window0 = driver.window_handles[0] driver.find_element_by_link_text('hello.js').click() - WebDriverWait(driver, 10).until(lambda d: len(d.window_handles) > 1) - window1 = [wh for wh in driver.window_handles if wh != window0][0] - driver.switch_to.window(window1) - assert sample_files['hello.js']['contents'] in driver.page_source + def blob_url_navigated(driver): + if len(driver.window_handles) < 2: + return + window1 = [wh for wh in driver.window_handles if wh != window0][0] + driver.switch_to.window(window1) + try: + return driver.current_url.startswith('blob') + except NoSuchWindowException: + pass + + WebDriverWait(driver, 10).until(blob_url_navigated) + + assert sample_files['hello.js']['contents'].strip() \ + in driver.find_element_by_tag_name("pre").text + + driver.close() driver.switch_to.window(window0) + driver.find_element_by_link_text('bye.js').click() - assert driver.execute_script('return window.error_args;') == [ - 'dummy dialog ctx', - "File missing from Haketilo's internal database :(" - ] + + def get_error_span(driver): + if len(driver.window_handles) < 2: + return + window1 = [wh for wh in driver.window_handles if wh != window0][0] + driver.switch_to.window(window1) + try: + return driver.find_element_by_id('error_msg') + except NoSuchWindowException: + pass + + error_span = WebDriverWait(driver, 10).until(get_error_span) + assert error_span.is_displayed() + assert "Couldn't find file in Haketilo's internal database :(" \ + in error_span.text -- cgit v1.2.3