further tweaked sepia palette; shored up TestTray for headless browser pipeline testing
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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"))
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user