diff --git a/tests/unit/javascript/test_js_execution.py b/tests/unit/javascript/test_js_execution.py index 901c373c4..c5b5018d2 100644 --- a/tests/unit/javascript/test_js_execution.py +++ b/tests/unit/javascript/test_js_execution.py @@ -47,15 +47,32 @@ def test_element_js_webkit(webview, js_enabled, expected): @pytest.mark.usefixtures('redirect_webengine_data') -@pytest.mark.parametrize('js_enabled, expected', [(True, 2.0), (False, 2.0)]) -def test_simple_js_webengine(callback_checker, webengineview, js_enabled, - expected): +@pytest.mark.parametrize('js_enabled, world, expected', [ + # main world + (True, 0, 2.0), + (False, 0, None), + # application world + (True, 1, 2.0), + (False, 1, 2.0), + # user world + (True, 2, 2.0), + (False, 2, 2.0), +]) +def test_simple_js_webengine(callback_checker, webengineview, qapp, + js_enabled, world, expected): """With QtWebEngine, runJavaScript works even when JS is off.""" # If we get there (because of the webengineview fixture) we can be certain # QtWebEngine is available - from PyQt5.QtWebEngineWidgets import QWebEngineSettings - webengineview.settings().setAttribute(QWebEngineSettings.JavascriptEnabled, - js_enabled) + from PyQt5.QtWebEngineWidgets import QWebEngineSettings, QWebEngineScript - webengineview.page().runJavaScript('1 + 1', callback_checker.callback) + assert world in [QWebEngineScript.MainWorld, + QWebEngineScript.ApplicationWorld, + QWebEngineScript.UserWorld] + + settings = webengineview.settings() + settings.setAttribute(QWebEngineSettings.JavascriptEnabled, js_enabled) + qapp.processEvents() + + page = webengineview.page() + page.runJavaScript('1 + 1', world, callback_checker.callback) callback_checker.check(expected)