experiments in a post-browser web
1#!/bin/bash
2# E2E test server helper
3# Usage:
4# yarn test:e2e:server start — start server (reads DATA_DIR, PORT env vars)
5# yarn test:e2e:server stop — stop server on $PORT
6# yarn test:e2e:server status — check if server is running
7# yarn test:e2e:server log — tail the server log
8
9set -e
10
11SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
12REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
13
14DATA_DIR="${DATA_DIR:-/tmp/e2e-peek-mobile-pWx75j}"
15PORT="${PORT:-28400}"
16LOG_FILE="$DATA_DIR/server.log"
17PID_FILE="$DATA_DIR/server.pid"
18
19case "${1:-status}" in
20 start)
21 # Kill existing server on this port if any
22 EXISTING="$(lsof -ti :"$PORT" 2>/dev/null || true)"
23 if [ -n "$EXISTING" ]; then
24 kill "$EXISTING" 2>/dev/null || true
25 sleep 1
26 fi
27 mkdir -p "$DATA_DIR"
28 DATA_DIR="$DATA_DIR" PORT="$PORT" node "$REPO_ROOT/backend/server/index.js" > "$LOG_FILE" 2>&1 &
29 echo "$!" > "$PID_FILE"
30 sleep 2
31 if curl -sf "http://localhost:$PORT/" > /dev/null 2>&1; then
32 echo "Server started on port $PORT (PID: $(cat "$PID_FILE"))"
33 else
34 echo "Server failed to start — check $LOG_FILE"
35 exit 1
36 fi
37 ;;
38 stop)
39 EXISTING="$(lsof -ti :"$PORT" 2>/dev/null || true)"
40 if [ -n "$EXISTING" ]; then
41 kill "$EXISTING" 2>/dev/null || true
42 echo "Stopped server (PID: $EXISTING)"
43 else
44 echo "No server running on port $PORT"
45 fi
46 ;;
47 status)
48 if curl -sf "http://localhost:$PORT/" 2>/dev/null; then
49 echo ""
50 echo "Server running on port $PORT"
51 else
52 echo "No server running on port $PORT"
53 fi
54 ;;
55 log)
56 if [ -f "$LOG_FILE" ]; then
57 cat "$LOG_FILE"
58 else
59 echo "No log file at $LOG_FILE"
60 fi
61 ;;
62 *)
63 echo "Usage: $0 {start|stop|status|log}"
64 exit 1
65 ;;
66esac