summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-03-09 18:10:51 +0100
committerFlorian Bruhin <me@the-compiler.org>2021-03-09 18:10:51 +0100
commit7eae8f069406bb72fa4a663c22a4c04245d750f2 (patch)
treee5f2e15c989c9982da431d9a603d413860e815f1 /tests
parentc4144a6e4b524631cad3113617ab64a909fd0503 (diff)
downloadqutebrowser-7eae8f069406bb72fa4a663c22a4c04245d750f2.tar.gz
qutebrowser-7eae8f069406bb72fa4a663c22a4c04245d750f2.zip
Fix @run-at default for GreaseMonkey
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/browser/webengine/test_webenginetab.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/unit/browser/webengine/test_webenginetab.py b/tests/unit/browser/webengine/test_webenginetab.py
index 7827c379b..2c792f80e 100644
--- a/tests/unit/browser/webengine/test_webenginetab.py
+++ b/tests/unit/browser/webengine/test_webenginetab.py
@@ -20,6 +20,7 @@
"""Test webenginetab."""
import logging
+import textwrap
import pytest
QtWebEngineWidgets = pytest.importorskip("PyQt5.QtWebEngineWidgets")
@@ -116,6 +117,39 @@ class TestWebengineScripts:
script = collection.toList()[-1]
assert script.injectionPoint() == QWebEngineScript.DocumentReady
+ @pytest.mark.parametrize('run_at, expected', [
+ # UserScript::DocumentElementCreation
+ ('document-start', QWebEngineScript.DocumentCreation),
+ # UserScript::DocumentLoadFinished
+ ('document-end', QWebEngineScript.DocumentReady),
+ # UserScript::AfterLoad
+ ('document-idle', QWebEngineScript.Deferred),
+ # default according to https://wiki.greasespot.net/Metadata_Block#.40run-at
+ (None, QWebEngineScript.DocumentReady),
+ ])
+ def test_run_at_values(self, webengine_scripts, run_at, expected):
+ if run_at is None:
+ script = """
+ // ==UserScript==
+ // @name qutebrowser test userscript
+ // ==/UserScript==
+ """
+ else:
+ script = f"""
+ // ==UserScript==
+ // @name qutebrowser test userscript
+ // @run-at {run_at}
+ // ==/UserScript==
+ """
+
+ script = textwrap.dedent(script.lstrip('\n'))
+ scripts = [greasemonkey.GreasemonkeyScript.parse(script)]
+ webengine_scripts._inject_greasemonkey_scripts(scripts)
+
+ collection = webengine_scripts._widget.page().scripts()
+ script = collection.toList()[-1]
+ assert script.injectionPoint() == expected
+
def test_notification_permission_workaround():
"""Make sure the value for QWebEnginePage::Notifications is correct."""