From 6817323f8e2f1f0418ffdfddabb5db3a8483ddc7 Mon Sep 17 00:00:00 2001 From: Disco DeDisco Date: Sun, 29 Mar 2026 19:10:42 -0400 Subject: [PATCH] further tweaked sepia palette; shored up TestTray for headless browser pipeline testing --- src/functional_tests/base.py | 17 ++++++++++++++--- src/functional_tests/test_room_tray.py | 25 ++++++++++++++++++------- src/static_src/scss/rootvars.scss | 2 +- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/functional_tests/base.py b/src/functional_tests/base.py index 8e4d3b2..0035c23 100644 --- a/src/functional_tests/base.py +++ b/src/functional_tests/base.py @@ -37,13 +37,24 @@ def wait(fn): # Functional Tests class FunctionalTest(StaticLiveServerTestCase): # Helper methods - def setUp(self): + 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. + """ options = webdriver.FirefoxOptions() headless = os.environ.get("HEADLESS") if headless: options.add_argument("--headless") - self.browser = webdriver.Firefox(options=options) - self.browser.set_window_size(1366, 900) + 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 + + def setUp(self): + self.browser = self._make_browser(1366, 900) self.test_server = os.environ.get("TEST_SERVER") if self.test_server: self.live_server_url = 'http://' + self.test_server diff --git a/src/functional_tests/test_room_tray.py b/src/functional_tests/test_room_tray.py index 1b651f7..c16b6d8 100644 --- a/src/functional_tests/test_room_tray.py +++ b/src/functional_tests/test_room_tray.py @@ -31,9 +31,20 @@ from apps.lyric.models import User class TrayTest(FunctionalTest): def setUp(self): - super().setUp() - # Portrait viewport for T1–T5; landscape tests (T6, T7) override this. - self.browser.set_window_size(768, 1024) + # Portrait viewport for T1–T5 (768×1024). Use _make_browser so + # headless CI gets --width/--height args and the CSS orientation + # media query is correct from first paint. + self.browser = self._make_browser(768, 1024) + self.test_server = None + from apps.applets.models import Applet + 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.""" + self.browser.quit() + self.browser = self._make_browser(900, 500) def _simulate_drag(self, btn, offset_x): """Dispatch JS pointer events directly — more reliable than GeckoDriver drag.""" @@ -195,8 +206,8 @@ class TrayTest(FunctionalTest): def test_tray_btn_anchored_near_top_in_landscape(self): room = self._make_sig_select_room() + self._switch_to_landscape() self.create_pre_authenticated_session("founder@test.io") - self.browser.set_window_size(900, 500) self.browser.get(self._room_url(room)) btn = self.wait_for( @@ -216,8 +227,8 @@ class TrayTest(FunctionalTest): def test_dragging_tray_btn_down_opens_tray_in_landscape(self): room = self._make_sig_select_room() + self._switch_to_landscape() self.create_pre_authenticated_session("founder@test.io") - self.browser.set_window_size(900, 500) self.browser.get(self._room_url(room)) btn = self.wait_for(lambda: self.browser.find_element(By.ID, "id_tray_btn")) @@ -272,8 +283,8 @@ class TrayTest(FunctionalTest): # T9a — column/row count (structure) def test_tray_grid_is_8_columns_by_1_row_in_landscape(self): room = self._make_sig_select_room() + self._switch_to_landscape() self.create_pre_authenticated_session("founder@test.io") - self.browser.set_window_size(900, 500) self.browser.get(self._room_url(room)) btn = self.wait_for(lambda: self.browser.find_element(By.ID, "id_tray_btn")) @@ -306,8 +317,8 @@ class TrayTest(FunctionalTest): def test_landscape_tray_all_8_cells_visible(self): room = self._make_sig_select_room() + self._switch_to_landscape() self.create_pre_authenticated_session("founder@test.io") - self.browser.set_window_size(900, 500) self.browser.get(self._room_url(room)) btn = self.wait_for(lambda: self.browser.find_element(By.ID, "id_tray_btn")) diff --git a/src/static_src/scss/rootvars.scss b/src/static_src/scss/rootvars.scss index 17fdc2d..7248f96 100644 --- a/src/static_src/scss/rootvars.scss +++ b/src/static_src/scss/rootvars.scss @@ -237,7 +237,7 @@ --priSwp: 221, 206, 149; --secSwp: 148, 150, 103; --terSwp: 102, 92, 67; - --quaSwp: 43, 76, 37; + --quaSwp: 33, 56, 27; // blood (Tyche's Phlegethon) --priBld: 200, 79, 50; --secBld: 177, 63, 52;