diff options
author | Florian Bruhin <me@the-compiler.org> | 2022-11-29 09:26:49 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2022-11-29 09:26:49 +0100 |
commit | eb5c019d0748da5cb30c45498147bcda02343f1e (patch) | |
tree | 70de369e7a7ac7b0490f50675e9da288eea661b1 | |
parent | f837da40f2f72c467664208756a4829aa6276670 (diff) | |
download | qutebrowser-eb5c019d0748da5cb30c45498147bcda02343f1e.tar.gz qutebrowser-eb5c019d0748da5cb30c45498147bcda02343f1e.zip |
Add tests to make sure quirk files/declaration/settings match
-rw-r--r-- | qutebrowser/browser/webengine/webenginetab.py | 16 | ||||
-rw-r--r-- | tests/unit/javascript/test_js_quirks.py | 31 |
2 files changed, 39 insertions, 8 deletions
diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 834f783ea..5d5c104f2 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -1182,13 +1182,10 @@ class _WebEngineScripts(QObject): log.greasemonkey.debug(f'adding script: {new_script.name()}') page_scripts.insert(new_script) - def _inject_site_specific_quirks(self): - """Add site-specific quirk scripts.""" - if not config.val.content.site_specific_quirks.enabled: - return - + def _get_quirks(self): + """Get a list of all available JS quirks.""" versions = version.qtwebengine_versions() - quirks = [ + return [ # FIXME:qt6 Double check which of those are still required _Quirk( 'whatsapp_web', @@ -1212,7 +1209,12 @@ class _WebEngineScripts(QObject): ), ] - for quirk in quirks: + def _inject_site_specific_quirks(self): + """Add site-specific quirk scripts.""" + if not config.val.content.site_specific_quirks.enabled: + return + + for quirk in self._get_quirks(): if not quirk.predicate: continue src = resources.read_file(f'javascript/quirks/{quirk.filename}.user.js') diff --git a/tests/unit/javascript/test_js_quirks.py b/tests/unit/javascript/test_js_quirks.py index 4d07ab6e0..a5785b6ed 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 pytest +import pathlib +import pytest from qutebrowser.qt.core import QUrl + +import qutebrowser from qutebrowser.utils import usertypes +from qutebrowser.config import configdata @pytest.mark.parametrize('base_url, source, expected', [ @@ -61,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 = set(p.name[:-len(suffix)] for p in quirks_path.glob(f"*{suffix}")) + quirks_code = set(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 = set( + val[len(prefix):].replace("-", "_") + for val in valid_values + if val.startswith(prefix) + ) + + quirks_code = set(q.filename for q in webengine_tab._scripts._get_quirks()) + quirks_code -= {"googledocs"} # special case, UA quirk + + assert quirks_code == quirks_config |