summaryrefslogtreecommitdiff
path: root/tests/unit/javascript/test_js_quirks.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/javascript/test_js_quirks.py')
-rw-r--r--tests/unit/javascript/test_js_quirks.py43
1 files changed, 30 insertions, 13 deletions
diff --git a/tests/unit/javascript/test_js_quirks.py b/tests/unit/javascript/test_js_quirks.py
index 03c3c1493..da05a74a1 100644
--- a/tests/unit/javascript/test_js_quirks.py
+++ b/tests/unit/javascript/test_js_quirks.py
@@ -24,10 +24,14 @@ polyfills for. They should either pass because the polyfill is active, or pass b
the native functionality exists.
"""
+import pathlib
+
import pytest
+from qutebrowser.qt.core import QUrl
-from PyQt5.QtCore import QUrl
+import qutebrowser
from qutebrowser.utils import usertypes
+from qutebrowser.config import configdata
@pytest.mark.parametrize('base_url, source, expected', [
@@ -50,18 +54,6 @@ from qutebrowser.utils import usertypes
id='replace-all-reserved-string',
),
pytest.param(
- QUrl('https://test.qutebrowser.org/test'),
- 'typeof globalThis.setTimeout === "function"',
- True,
- id='global-this',
- ),
- pytest.param(
- QUrl(),
- 'Object.fromEntries([["0", "a"], ["1", "b"]])',
- {'0': 'a', '1': 'b'},
- id='object-fromentries',
- ),
- pytest.param(
QUrl("https://test.qutebrowser.org/linkedin"),
'[1, 2, 3].at(1)',
2,
@@ -73,3 +65,28 @@ def test_js_quirks(config_stub, js_tester_webengine, base_url, source, expected)
js_tester_webengine.tab._scripts._inject_site_specific_quirks()
js_tester_webengine.load('base.html', base_url=base_url)
js_tester_webengine.run(source, expected, world=usertypes.JsWorld.main)
+
+
+def test_js_quirks_match_files(webengine_tab):
+ quirks_path = pathlib.Path(qutebrowser.__file__).parent / "javascript" / "quirks"
+ suffix = ".user.js"
+ quirks_files = {p.name[:-len(suffix)] for p in quirks_path.glob(f"*{suffix}")}
+ quirks_code = {q.filename for q in webengine_tab._scripts._get_quirks()}
+ assert quirks_code == quirks_files
+
+
+def test_js_quirks_match_settings(webengine_tab, configdata_init):
+ opt = configdata.DATA["content.site_specific_quirks.skip"]
+ prefix = "js-"
+ valid_values = opt.typ.get_valid_values()
+ assert valid_values is not None
+ quirks_config = {
+ val[len(prefix):].replace("-", "_")
+ for val in valid_values
+ if val.startswith(prefix)
+ }
+
+ quirks_code = {q.filename for q in webengine_tab._scripts._get_quirks()}
+ quirks_code -= {"googledocs"} # special case, UA quirk
+
+ assert quirks_code == quirks_config