Files
saphid--frame-control/tests/fakeframe/steamos-devkit-service/README.md
T
saphidandClaude Opus 5.5 0181071b83 Tests against a fake Frame, and a headset smoke test
tests/fakeframe: a container that stands in for the Frame (Arch Linux, or
Arch Linux ARM on arm64) with sshd, rsync, Valve's steamos-devkit-service
and hooks (vendored unmodified), a fake Steam client for the devkit pipe and
the DevTools port (the app's JavaScript runs in Node against stand-in
SteamClient/appStore objects), stubs for steam, wpctl, flatpak, podman,
Lepton and friends, battery and thermal files under /sys, and fault
switches (fakeframe-ctl): pairing mode, approve/deny/timeout, Steam not
running, headset asleep, sshd off, disk full, runtimes missing. A second
container is the computer running Frame Control.

tests/e2e: 29 tests driving the real ui/server.py, frame_connect.py and
frame_titles.py against it; skipped unless FRAME_E2E=1. scripts/e2e.sh
builds, runs and tears down; CI runs it on ubuntu-24.04-arm.

tests/smoke + scripts/frame-smoke.sh: the core cases against a real Frame,
recorded with its BUILD_ID, cleaning up after itself; --pair to pair a
throwaway key. docs/testing.md describes the layers.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-27 17:40:09 +10:00

1.1 KiB

Valve's steamos-devkit-service (vendored, for the fake Frame only)

Unmodified copy of steamos-devkit-service: the HTTP service on port 32000 (src/) and its hooks (hooks/), which the fake Frame image installs at /usr/lib/steamos-devkit/ and /usr/share/steamos-devkit/hooks/, where the service looks for them.

  • Source: commit 74cf8fe (2025-09-16, tag v0.20250916.0).
  • Licence: the repository's LICENSE is the LGPL 2.1 (copied here). src/steamos-devkit-service.py itself carries an MIT header, and hooks/devkit-1-identify and hooks/install-ssh-key carry LGPL-2.1+ headers. Nothing here ships in Frame Control; it's only built into the test image.

The service imports dbus to advertise itself over mDNS through systemd-resolved, which a container doesn't have. The image puts a small stand-in dbus module on its PYTHONPATH (rootfs/usr/local/lib/fakeframe/pystubs) that records the registration instead. Everything else runs as Valve wrote it.

To update: copy src/, hooks/ and LICENSE from a newer checkout and update the commit line above.