From d85c7721b52c3501d536ab95659eecd2aa2da47c Mon Sep 17 00:00:00 2001 From: Roland Date: Wed, 10 Jun 2026 11:55:35 -0600 Subject: [PATCH] Fixing call to Chrome to generate Archive screenshots. --- .../config/package-lists/wrolpi.list.chroot | 1 + wrolpi/common.py | 2 +- wrolpi/test/test_common.py | 12 ++++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/debian-live-config/config/package-lists/wrolpi.list.chroot b/debian-live-config/config/package-lists/wrolpi.list.chroot index 04e75fd9..73c9c9ce 100644 --- a/debian-live-config/config/package-lists/wrolpi.list.chroot +++ b/debian-live-config/config/package-lists/wrolpi.list.chroot @@ -10,6 +10,7 @@ calibre cargo catdoc chromium +chromium-driver cpufrequtils curl dosfstools diff --git a/wrolpi/common.py b/wrolpi/common.py index 95b2ba68..d5b8e18d 100644 --- a/wrolpi/common.py +++ b/wrolpi/common.py @@ -2554,7 +2554,7 @@ def html_screenshot(html: bytes | str) -> bytes: fh.write(html.encode() if isinstance(html, str) else html) fh.flush() - with webdriver.Chrome(chrome_options=options) as driver: + with webdriver.Chrome(options=options) as driver: driver.get(f'file://{fh.name}') driver.set_window_size(1280, 720) screenshot = driver.get_screenshot_as_png() diff --git a/wrolpi/test/test_common.py b/wrolpi/test/test_common.py index 99100983..7f9c0fb0 100644 --- a/wrolpi/test/test_common.py +++ b/wrolpi/test/test_common.py @@ -893,6 +893,18 @@ def test_html_screenshot(singlefile_contents_factory): assert common.html_screenshot(singlefile_contents_factory()) +def test_html_screenshot_webdriver_kwargs(singlefile_contents_factory): + """Selenium 4.10 removed the `chrome_options` kwarg; `webdriver.Chrome` must be called with `options`.""" + with mock.patch('wrolpi.common.webdriver.Chrome') as mock_chrome: + driver = mock_chrome.return_value.__enter__.return_value + driver.get_screenshot_as_png.return_value = b'PNG' + + assert common.html_screenshot(singlefile_contents_factory()) == b'PNG' + + assert mock_chrome.call_args.kwargs.keys() == {'options'} + assert isinstance(mock_chrome.call_args.kwargs['options'], common.webdriver.ChromeOptions) + + @pytest.mark.parametrize('color,expected', [ ('#ffffff', True), ('#FFFFFF', True),