mirror of
https://github.com/saphid/frame-control.git
synced 2026-10-06 01:00:18 +02:00
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>
1.1 KiB
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, tagv0.20250916.0). - Licence: the repository's
LICENSEis the LGPL 2.1 (copied here).src/steamos-devkit-service.pyitself carries an MIT header, andhooks/devkit-1-identifyandhooks/install-ssh-keycarry 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.