#!/usr/bin/env bash# Desk entrypoint (runs inside the desk image): boot a display, roll one# camera on it, run the scenario with E2E_DESK=1 so its windows land on the# display, then drop the film into the scenario's run dir as session.mp4.set -euo pipefailSCENARIO="${DESK_SCENARIO:-scenarios/connect-handoff-session.test.ts}"PROJECT="${DESK_PROJECT:-cloud}"SIZE="${DESK_SIZE:-1440x900}"echo "[desk] installing dependencies (cached in a volume after first run)…"bun install --frozen-lockfileecho "[desk] display :99 at ${SIZE}"Xvfb :99 -screen 0 "${SIZE}x24" -nolisten tcp &export DISPLAY=:99sleep 0.5openbox &xsetroot -solid "#0b0b10" || truemkdir -p /desk-outecho "[desk] camera rolling"ffmpeg -loglevel error -f x11grab -framerate 24 -video_size "$SIZE" -i :99 \ -c:v libx264 -preset veryfast -crf 24 -pix_fmt yuv420p -y /desk-out/desk.mp4 &FFMPEG_PID=$!set +e(cd e2e && E2E_DESK=1 npx vitest run --project "$PROJECT" "$SCENARIO")STATUS=$?set -esleep 1kill -INT "$FFMPEG_PID" 2>/dev/null || truewait "$FFMPEG_PID" 2>/dev/null || true# The desk film IS the session recording — it replaces the browser-only# video the surface recorded inside the run.RUN_DIR=$(ls -dt e2e/runs/"$PROJECT"/*/ 2>/dev/null | head -1)if [ -n "$RUN_DIR" ] && [ -f /desk-out/desk.mp4 ]; then cp /desk-out/desk.mp4 "${RUN_DIR}session.mp4" echo "[desk] film → ${RUN_DIR}session.mp4"fiexit "$STATUS"
#!/usr/bin/env bash
# Desk entrypoint (runs inside the desk image): boot a display, roll one
# camera on it, run the scenario with E2E_DESK=1 so its windows land on the
# display, then drop the film into the scenario's run dir as session.mp4.
set -euo pipefail
SCENARIO="${DESK_SCENARIO:-scenarios/connect-handoff-session.test.ts}"
PROJECT="${DESK_PROJECT:-cloud}"
SIZE="${DESK_SIZE:-1440x900}"
echo "[desk] installing dependencies (cached in a volume after first run)…"
bun install --frozen-lockfile
echo "[desk] display :99 at ${SIZE}"
Xvfb :99 -screen 0 "${SIZE}x24" -nolisten tcp &
export DISPLAY=:99
sleep 0.5
openbox &
xsetroot -solid "#0b0b10" || true
mkdir -p /desk-out
echo "[desk] camera rolling"
ffmpeg -loglevel error -f x11grab -framerate 24 -video_size "$SIZE" -i :99 \
-c:v libx264 -preset veryfast -crf 24 -pix_fmt yuv420p -y /desk-out/desk.mp4 &
FFMPEG_PID=$!
set +e
(cd e2e && E2E_DESK=1 npx vitest run --project "$PROJECT" "$SCENARIO")
STATUS=$?
set -e
sleep 1
kill -INT "$FFMPEG_PID" 2>/dev/null || true
wait "$FFMPEG_PID" 2>/dev/null || true
# The desk film IS the session recording — it replaces the browser-only
# video the surface recorded inside the run.
RUN_DIR=$(ls -dt e2e/runs/"$PROJECT"/*/ 2>/dev/null | head -1)
if [ -n "$RUN_DIR" ] && [ -f /desk-out/desk.mp4 ]; then
cp /desk-out/desk.mp4 "${RUN_DIR}session.mp4"
echo "[desk] film → ${RUN_DIR}session.mp4"
fi
exit "$STATUS"