Files
ducoterra 7359ee4e07 test: four-rung suite that asserts on decoded pixels, not log lines
130 tests, ~20s, 94% coverage. Four rungs, each proving something the one
below it cannot:

  registry   admission, fan-out, signal authorization and teardown, no I/O
  wire       camelCase round-trip, malformed frames, WebSocket lifecycle
  e2e        real capture -> encode -> SRTP -> decode -> painted frames
  realdisplay the actual X11 capture backend on a private Xvfb display

The e2e rung drives Chromium's fake media device, which produces a genuine
moving 1280x720 monitor stream, so the assertion is that a watcher's <video>
has a size and that its pixels change over time -- a frozen or never-started
peer connection fails the suite, which a "signal arrived" assertion would
not have caught.

Findings encoded as flags and comments, because each cost a debugging cycle:
the headless shell has no media stack at all (use channel="chromium");
mediaDevices is undefined off a secure context (serve over 127.0.0.1); and
--use-fake-ui-for-media-stream breaks real X11 capture by approving the
request without ever selecting a source, so the realdisplay suite selects
the source explicitly instead.

The realdisplay fixture strips WAYLAND_DISPLAY and DBUS_SESSION_BUS_ADDRESS
from the browser environment. Without that, a headed Chromium reaches
xdg-desktop-portal, mirrors the developer's actual desktop and raises a
permission dialog on their real screen -- which is exactly what happened
before this was isolated. Skipped unless MIRROR_REALDISPLAY=1.

Also guards the frontend's structure: scripts must parse as ES modules,
every id a script looks up must exist in its page, ids must not collide
across pages that share one stylesheet, and nothing may load from a CDN.

LLM-Generated: true
2026-11-01 16:54:28 -05:00

33 lines
738 B
Python

"""Shared fixtures for the non-browser test suite."""
from __future__ import annotations
import pytest
from fastapi.testclient import TestClient
from mirror.app import create_app
from mirror.config import Settings
from mirror.registry import Registry
@pytest.fixture
def settings() -> Settings:
return Settings(host="127.0.0.1", port=0, ice_servers=[], max_bitrate_bps=2_000_000)
@pytest.fixture
def registry() -> Registry:
counter = iter(f"p{i}" for i in range(1, 10_000))
return Registry(id_factory=lambda: next(counter))
@pytest.fixture
def client(app) -> TestClient:
with TestClient(app) as test_client:
yield test_client
@pytest.fixture
def app(settings) -> object:
return create_app(settings)