43 lines · 1.4 KB · Shell
RawDownload
#!/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=:99sleep 0.5openbox &xsetroot -solid "#0b0b10" || true mkdir -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 -e sleep 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"