From 5d21e79be5e7cb73d65f6edd47fd5f8c4dc226e6 Mon Sep 17 00:00:00 2001 From: Disco DeDisco Date: Sun, 29 Mar 2026 20:41:26 -0400 Subject: [PATCH] more headless patches to address pipeline clog; 'two-browsers' may not have been doing anything before --- src/functional_tests/base.py | 11 ++--------- src/functional_tests/test_room_tray.py | 12 +++++++++--- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/functional_tests/base.py b/src/functional_tests/base.py index 0035c23..3ed0774 100644 --- a/src/functional_tests/base.py +++ b/src/functional_tests/base.py @@ -38,17 +38,10 @@ def wait(fn): class FunctionalTest(StaticLiveServerTestCase): # Helper methods def _make_browser(self, width=1366, height=900): - """Create a Firefox instance sized to width×height. - In headless CI, pass --width/--height as binary args so the CSS - media query (orientation: landscape/portrait) is correct from the - first paint — set_window_size() alone is unreliable in headless mode. - """ + """Create a Firefox instance sized to width×height.""" options = webdriver.FirefoxOptions() - headless = os.environ.get("HEADLESS") - if headless: + if os.environ.get("HEADLESS"): options.add_argument("--headless") - options.add_argument(f"--width={width}") - options.add_argument(f"--height={height}") browser = webdriver.Firefox(options=options) browser.set_window_size(width, height) return browser diff --git a/src/functional_tests/test_room_tray.py b/src/functional_tests/test_room_tray.py index 6aeb188..01c7334 100644 --- a/src/functional_tests/test_room_tray.py +++ b/src/functional_tests/test_room_tray.py @@ -41,11 +41,17 @@ class TrayTest(FunctionalTest): Applet.objects.get_or_create(slug="new-note", defaults={"name": "New Note"}) def _switch_to_landscape(self): - """Recreate the browser at landscape dimensions (900×500). - Needed in headless CI where set_window_size() alone doesn't - update the CSS orientation media query reliably.""" + """Recreate the browser at landscape dimensions (900×500) and wait + until window.innerWidth > window.innerHeight confirms the CSS + orientation media query will fire correctly.""" self.browser.quit() self.browser = self._make_browser(900, 500) + self.browser.get('about:blank') + self.wait_for(lambda: self.assertTrue( + self.browser.execute_script( + 'return window.innerWidth > window.innerHeight' + ) + )) def _simulate_drag(self, btn, offset_x): """Dispatch JS pointer events directly — more reliable than GeckoDriver drag."""