further tweaked sepia palette; shored up TestTray for headless browser pipeline testing
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed

This commit is contained in:
Disco DeDisco
2026-03-29 19:10:42 -04:00
parent 11283118d6
commit 6817323f8e
3 changed files with 33 additions and 11 deletions

View File

@@ -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

View File

@@ -31,9 +31,20 @@ from apps.lyric.models import User
class TrayTest(FunctionalTest):
def setUp(self):
super().setUp()
# Portrait viewport for T1T5; landscape tests (T6, T7) override this.
self.browser.set_window_size(768, 1024)
# Portrait viewport for T1T5 (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"))