diff options
Diffstat (limited to 'tests/unit/javascript/test_js_quirks.py')
-rw-r--r-- | tests/unit/javascript/test_js_quirks.py | 43 |
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 |