test: keep rendered checks out of unit CI
All checks were successful
CI / lint (pull_request) Successful in 1m55s
CI / build-release (pull_request) Successful in 5s
CI / browser-journey (pull_request) Successful in 54s
CI / release-candidate (pull_request) Has been skipped

This commit is contained in:
timmy 2026-08-16 13:01:03 +00:00
parent 311396cfac
commit c48baac1ea

View File

@ -2,9 +2,6 @@ import json
import subprocess
from pathlib import Path
from playwright.sync_api import sync_playwright
FRONTEND = Path(__file__).resolve().parents[1] / "frontend"
CONTROLLER = FRONTEND / "mobile-issue-detail-nav.js"
@ -77,37 +74,13 @@ def test_pull_sheet_wires_four_workspace_destinations_to_existing_lazy_review():
assert "beforeNavigate:{review(target) { target.open = true; }}" in dashboard_js
def test_pull_workspace_rail_is_phone_contained_and_desktop_hidden():
html = (FRONTEND / "index.html").read_text()
def test_pull_workspace_rail_has_phone_containment_and_desktop_visibility_contracts():
css = (FRONTEND / "dashboard.css").read_text()
rendered = html.replace(
'<link rel="stylesheet" href="static/dashboard.css" />',
f"<style>{css}</style>",
)
with sync_playwright() as playwright:
browser = playwright.chromium.launch()
page = browser.new_page(viewport={"width": 320, "height": 568})
page.set_content(rendered, wait_until="domcontentloaded")
page.locator("#pull-sheet").evaluate("node => node.classList.add('open')")
for width, height in ((320, 568), (390, 844)):
page.set_viewport_size({"width": width, "height": height})
phone = page.locator(".mobile-pull-detail-nav").evaluate(
"""nav => ({
display:getComputedStyle(nav).display,
navWidth:nav.getBoundingClientRect().width,
panelWidth:nav.closest('.pull-sheet-panel').getBoundingClientRect().width,
panelOverflow:nav.closest('.pull-sheet-panel').scrollWidth > nav.closest('.pull-sheet-panel').clientWidth,
heights:Array.from(nav.querySelectorAll('button')).map(button => button.getBoundingClientRect().height),
position:getComputedStyle(nav).position,
})"""
)
assert phone["display"] == "grid"
assert phone["position"] == "sticky"
assert phone["navWidth"] <= phone["panelWidth"]
assert phone["panelOverflow"] is False
assert min(phone["heights"]) >= 44
page.set_viewport_size({"width": 900, "height": 700})
assert page.locator(".mobile-pull-detail-nav").evaluate("nav => getComputedStyle(nav).display") == "none"
browser.close()
assert "@media (max-width:600px)" in css
assert ".mobile-issue-detail-nav, .mobile-pull-detail-nav" in css
assert "position:sticky; top:env(safe-area-inset-top)" in css
assert "grid-template-columns:repeat(4,minmax(0,1fr))" in css
assert "min-width:0; min-height:44px" in css
assert "#pull-overview, #pull-conversation, #pull-comment, #pull-review { scroll-margin-top:72px; }" in css
assert "@media (min-width:601px) { .mobile-issue-detail-nav, .mobile-pull-detail-nav { display:none; } }" in css