darkmode: Improve/fix various tests
This commit is contained in:
parent
cc3b6fce7b
commit
9eabd09645
|
|
@ -459,6 +459,7 @@ def test_preferred_colorscheme(request, quteproc_new, value):
|
|||
"auto": [dark_text, light_text],
|
||||
None: [dark_text, light_text],
|
||||
}
|
||||
xfail = False
|
||||
if not qtutils.version_check('5.15.2', compiled=False):
|
||||
# On older versions, "light" is not supported, so the result will depend on the
|
||||
# environment.
|
||||
|
|
@ -468,11 +469,47 @@ def test_preferred_colorscheme(request, quteproc_new, value):
|
|||
# With that workaround, we should always get the light preference.
|
||||
for key in ["auto", None]:
|
||||
expected_values[key].remove(dark_text)
|
||||
xfail = value in ["auto", None]
|
||||
|
||||
quteproc_new.open_path('data/darkmode/prefers-color-scheme.html')
|
||||
content = quteproc_new.get_content()
|
||||
assert content in expected_values[value]
|
||||
|
||||
if xfail:
|
||||
# Unsatisfactory result, but expected based on a Qt bug.
|
||||
pytest.xfail("QTBUG-89753")
|
||||
|
||||
|
||||
@pytest.mark.qtwebkit_skip
|
||||
@utils.qt514
|
||||
def test_preferred_colorscheme_with_dark_mode(request, quteproc_new):
|
||||
"""Test interaction between preferred-color-scheme and dark mode."""
|
||||
args = _base_args(request.config) + [
|
||||
'--temp-basedir',
|
||||
'-s', 'colors.webpage.preferred_color_scheme', 'dark',
|
||||
'-s', 'colors.webpage.darkmode.enabled', 'true',
|
||||
'-s', 'colors.webpage.darkmode.algorithm', 'brightness-rgb',
|
||||
]
|
||||
quteproc_new.start(args)
|
||||
|
||||
quteproc_new.open_path('data/darkmode/prefers-color-scheme.html')
|
||||
content = quteproc_new.get_content()
|
||||
|
||||
img = quteproc_new.get_screenshot()
|
||||
# Position chosen by fair dice roll.
|
||||
# https://xkcd.com/221/
|
||||
color = utils.Color(img.pixelColor(4, 4))
|
||||
|
||||
if qtutils.version_check('5.15.2', exact=True, compiled=False):
|
||||
# Our workaround breaks when dark mode is enabled...
|
||||
# Also, for some reason, dark mode doesn't work on that page either!
|
||||
assert content == 'No preference detected.'
|
||||
assert color == utils.Color(0, 170, 0)
|
||||
pytest.xfail("QTBUG-89753")
|
||||
else:
|
||||
assert content == 'Dark preference detected.'
|
||||
assert color == utils.Color(127, 127, 127)
|
||||
|
||||
|
||||
@pytest.mark.qtwebkit_skip
|
||||
@pytest.mark.parametrize('reason', [
|
||||
|
|
|
|||
|
|
@ -47,10 +47,18 @@ def gentoo_version_patch(monkeypatch):
|
|||
("auto", "5.14", []),
|
||||
("auto", "5.15.0", []),
|
||||
("auto", "5.15.1", []),
|
||||
("auto", "5.15.2", []),
|
||||
("auto", "5.15.2", [("preferredColorScheme", "2")]), # QTBUG-89753
|
||||
("auto", "5.15.3", []),
|
||||
("auto", "6.0.0", []),
|
||||
|
||||
# Unset
|
||||
(None, "5.14", []),
|
||||
(None, "5.15.0", []),
|
||||
(None, "5.15.1", []),
|
||||
(None, "5.15.2", [("preferredColorScheme", "2")]), # QTBUG-89753
|
||||
(None, "5.15.3", []),
|
||||
(None, "6.0.0", []),
|
||||
|
||||
# Dark
|
||||
("dark", "5.14", []),
|
||||
("dark", "5.15.0", []),
|
||||
|
|
@ -71,7 +79,8 @@ def gentoo_version_patch(monkeypatch):
|
|||
def test_colorscheme(config_stub, monkeypatch, value, webengine_version, expected):
|
||||
versions = version.WebEngineVersions.from_pyqt(webengine_version)
|
||||
monkeypatch.setattr(version, 'qtwebengine_versions', lambda avoid_init: versions)
|
||||
config_stub.val.colors.webpage.preferred_color_scheme = value
|
||||
if value is not None:
|
||||
config_stub.val.colors.webpage.preferred_color_scheme = value
|
||||
assert darkmode.settings([])['blink-settings'] == expected
|
||||
|
||||
|
||||
|
|
@ -86,25 +95,26 @@ def test_colorscheme_gentoo_workaround(config_stub, gentoo_version_patch):
|
|||
({}, []),
|
||||
|
||||
# Enabled without customization
|
||||
({'enabled': True}, [('forceDarkModeEnabled', 'true')]),
|
||||
({'enabled': True}, [('darkModeEnabled', 'true')]),
|
||||
|
||||
# Algorithm
|
||||
(
|
||||
{'enabled': True, 'algorithm': 'brightness-rgb'},
|
||||
[
|
||||
('forceDarkModeEnabled', 'true'),
|
||||
('forceDarkModeInversionAlgorithm', '2')
|
||||
('darkModeEnabled', 'true'),
|
||||
('darkModeInversionAlgorithm', '2')
|
||||
],
|
||||
),
|
||||
])
|
||||
def test_basics(config_stub, monkeypatch, settings, expected):
|
||||
for k, v in settings.items():
|
||||
config_stub.set_obj('colors.webpage.darkmode.' + k, v)
|
||||
monkeypatch.setattr(darkmode, '_variant',
|
||||
lambda: darkmode.Variant.qt_515_2)
|
||||
|
||||
# Using Qt 5.15.1 because it has the least special cases.
|
||||
monkeypatch.setattr(darkmode, '_variant', lambda: darkmode.Variant.qt_515_1)
|
||||
|
||||
if expected:
|
||||
expected.append(('forceDarkModeImagePolicy', '2'))
|
||||
expected.append(('darkModeImagePolicy', '2'))
|
||||
|
||||
assert darkmode.settings([])['blink-settings'] == expected
|
||||
|
||||
|
|
@ -132,6 +142,7 @@ QT_515_1_SETTINGS = {'blink-settings': [
|
|||
|
||||
|
||||
QT_515_2_SETTINGS = {'blink-settings': [
|
||||
('preferredColorScheme', '2'), # QTBUG-89753
|
||||
('forceDarkModeEnabled', 'true'),
|
||||
('forceDarkModeInversionAlgorithm', '2'),
|
||||
('forceDarkModeImagePolicy', '2'),
|
||||
|
|
@ -195,13 +206,13 @@ def test_qt_version_differences(config_stub, monkeypatch, qversion, expected):
|
|||
def test_customization(config_stub, monkeypatch, setting, value, exp_key, exp_val):
|
||||
config_stub.val.colors.webpage.darkmode.enabled = True
|
||||
config_stub.set_obj('colors.webpage.darkmode.' + setting, value)
|
||||
monkeypatch.setattr(darkmode, '_variant', lambda: darkmode.Variant.qt_515_2)
|
||||
monkeypatch.setattr(darkmode, '_variant', lambda: darkmode.Variant.qt_515_1)
|
||||
|
||||
expected = []
|
||||
expected.append(('forceDarkModeEnabled', 'true'))
|
||||
expected.append(('darkModeEnabled', 'true'))
|
||||
if exp_key != 'ImagePolicy':
|
||||
expected.append(('forceDarkModeImagePolicy', '2'))
|
||||
expected.append(('forceDarkMode' + exp_key, exp_val))
|
||||
expected.append(('darkModeImagePolicy', '2'))
|
||||
expected.append(('darkMode' + exp_key, exp_val))
|
||||
|
||||
assert darkmode.settings([])['blink-settings'] == expected
|
||||
|
||||
|
|
@ -269,13 +280,13 @@ def test_broken_smart_images_policy(config_stub, monkeypatch, caplog):
|
|||
])
|
||||
def test_pass_through_existing_settings(config_stub, monkeypatch, flag, expected):
|
||||
config_stub.val.colors.webpage.darkmode.enabled = True
|
||||
versions = version.WebEngineVersions.from_pyqt('5.15.2')
|
||||
versions = version.WebEngineVersions.from_pyqt('5.15.1')
|
||||
monkeypatch.setattr(version, 'qtwebengine_versions', lambda avoid_init: versions)
|
||||
settings = darkmode.settings([flag])
|
||||
|
||||
dark_mode_expected = [
|
||||
('forceDarkModeEnabled', 'true'),
|
||||
('forceDarkModeImagePolicy', '2'),
|
||||
('darkModeEnabled', 'true'),
|
||||
('darkModeImagePolicy', '2'),
|
||||
]
|
||||
assert settings['blink-settings'] == expected + dark_mode_expected
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import pytest
|
|||
|
||||
from qutebrowser import qutebrowser
|
||||
from qutebrowser.config import qtargs
|
||||
from qutebrowser.utils import usertypes
|
||||
from qutebrowser.utils import usertypes, version
|
||||
from helpers import utils
|
||||
|
||||
|
||||
|
|
@ -43,6 +43,8 @@ def parser(mocker):
|
|||
def reduce_args(monkeypatch, config_stub):
|
||||
"""Make sure no --disable-shared-workers/referer argument get added."""
|
||||
monkeypatch.setattr(qtargs.qtutils, 'qVersion', lambda: '5.15.0')
|
||||
versions = version.WebEngineVersions.from_pyqt('5.15.0')
|
||||
monkeypatch.setattr(version, 'qtwebengine_versions', lambda avoid_init: versions)
|
||||
config_stub.val.content.headers.referer = 'always'
|
||||
|
||||
|
||||
|
|
@ -370,8 +372,9 @@ class TestWebEngineArgs:
|
|||
assert ('--enable-features=OverlayScrollbar' in args) == added
|
||||
|
||||
@pytest.fixture
|
||||
def feature_flag_patch(self, monkeypatch):
|
||||
def feature_flag_patch(self, monkeypatch, config_stub):
|
||||
"""Patch away things affecting feature flags."""
|
||||
config_stub.val.scrolling.bar = 'never'
|
||||
monkeypatch.setattr(qtargs.objects, 'backend',
|
||||
usertypes.Backend.QtWebEngine)
|
||||
monkeypatch.setattr(qtargs.qtutils, 'version_check',
|
||||
|
|
@ -441,6 +444,20 @@ class TestWebEngineArgs:
|
|||
features -= {'InstalledApp'}
|
||||
assert features == set(passed_features)
|
||||
|
||||
def test_blink_settings_passthrough(self, parser, config_stub, feature_flag_patch):
|
||||
config_stub.val.colors.webpage.darkmode.enabled = True
|
||||
|
||||
flag = qtargs._BLINK_SETTINGS + 'foo=bar'
|
||||
parsed = parser.parse_args(['--qt-flag', flag.lstrip('-')])
|
||||
args = qtargs.qt_args(parsed)
|
||||
|
||||
blink_settings_args = [
|
||||
arg for arg in args
|
||||
if arg.startswith(qtargs._BLINK_SETTINGS)
|
||||
]
|
||||
assert len(blink_settings_args) == 1
|
||||
assert blink_settings_args[0].startswith('--blink-settings=foo=bar,')
|
||||
|
||||
@pytest.mark.parametrize('qt_version, has_workaround', [
|
||||
('5.14.0', False),
|
||||
('5.15.1', False),
|
||||
|
|
@ -464,9 +481,19 @@ class TestWebEngineArgs:
|
|||
assert disable_features_args == expected
|
||||
|
||||
@pytest.mark.parametrize('variant, expected', [
|
||||
(
|
||||
'qt_515_1',
|
||||
['--blink-settings=darkModeEnabled=true,darkModeImagePolicy=2'],
|
||||
),
|
||||
(
|
||||
'qt_515_2',
|
||||
['--blink-settings=forceDarkModeEnabled=true,forceDarkModeImagePolicy=2'],
|
||||
[
|
||||
(
|
||||
'--blink-settings=preferredColorScheme=2,'
|
||||
'forceDarkModeEnabled=true,'
|
||||
'forceDarkModeImagePolicy=2'
|
||||
)
|
||||
],
|
||||
),
|
||||
(
|
||||
'qt_515_3',
|
||||
|
|
|
|||
Loading…
Reference in New Issue