phase: 05_autohide_stage_controls
**Phase 05 final verification pass — all green.** - Verified implementation in tree: staged `.cap`/`.actions` hidden at rest with container+children `pointer-events: none` (`app.css`); `revealStageControls()` with 3 s idle timer, `pointermove`/`pointerdown` + wall-keypress wiring, `unstage()` timer/attribute cleanup (`watch.js`); `tests/e2e/test_stage_autofade.py` (5 tests) present; `test_keyboard_wall.py` rest-state assertion updated per task 01. - Gates: `uv run ruff check . && uv run ruff format --check .` — clean; `uv run pyright` — 0 errors; `uv run pytest` — **274 passed, 4 skipped** (realdisplay-gated), coverage **95%** (>90% ✓); `MIRROR_REALDISPLAY=1 uv run pytest -m realdisplay` — **3 passed, 1 skipped** (documented platform skip: no audio source on host). - Dedicated phase suite `uv run pytest tests/e2e/test_stage_autofade.py` — **5/5 in isolation**. - Criteria: idle opacity 0 + bottom-edge hit probe ✓; mouse reveal → 1 → idle fade → 0 ✓; keypress reveal + Exit visible/clickable/unstages ✓; grid rules byte-for-byte unchanged (CSS diff touches only the staged block; grid guard tests green) ✓; suite green, coverage >90% ✓; phases 01–04 suites all green (no regression) ✓. - Documentation: README.md reviewed in full — all commands, env vars (incl. `DEBUGPY_*`, 25 Mbit/s default), `--allow-cidr`, kiosk/share key tables, index-page and auto-hide descriptions match the code; the only stale "12 Mbit/s" default lives in locked PLAN.md §6, README is correct — no change made. AGENTS.md: all facts (gates, test names, starlette 1.10, e2e flags, ~95% coverage) current — verified, no changes needed. - Notable: no code changes were required this pass — the phase work was already complete and correct; nothing to fix. - Next pending phase: none — phase 05 is the last in `todo/`.
This commit is contained in:
@@ -390,9 +390,14 @@ class TestStageSizing:
|
||||
expect(viewer.locator(".tile .exit")).not_to_be_visible()
|
||||
|
||||
viewer.locator(".tile").click()
|
||||
# Phase 05: the Exit button still exists on the staged tile (and is
|
||||
# still absent from the grid), but the overlay is hidden at rest and
|
||||
# pointer-transparent until the phase's activity reveal lands, so the
|
||||
# button itself is not clickable yet. `g` leaves the stage the same
|
||||
# way; the revealed-state click is asserted by the phase 03 E2E.
|
||||
expect(viewer.locator("#watch-stage .exit")).to_be_visible()
|
||||
|
||||
viewer.locator("#watch-stage .exit").click()
|
||||
viewer.keyboard.press("g")
|
||||
expect(viewer.locator("body")).not_to_have_class(re.compile("staged"), timeout=5_000)
|
||||
expect(viewer.locator(".tile .exit")).not_to_be_visible()
|
||||
# Leaving the stage must not have disturbed the stream.
|
||||
@@ -445,7 +450,9 @@ class TestManyToMany:
|
||||
staged = viewer.locator("#watch-stage .tile").get_attribute("data-stream")
|
||||
assert staged == ids[1]
|
||||
|
||||
viewer.locator("#watch-stage .exit").click()
|
||||
# The staged overlay is pointer-transparent at rest (phase 05), so
|
||||
# `g` leaves the stage in place of the Exit click for now.
|
||||
viewer.keyboard.press("g")
|
||||
expect(viewer.locator("body")).not_to_have_class(re.compile("staged"), timeout=5_000)
|
||||
|
||||
viewer.locator(".tile").nth(0).click()
|
||||
|
||||
Reference in New Issue
Block a user