affiliate-launch-kit / e2e /run-browser-e2e.sh
mohmmed5787's picture
Deploying Affiliate Launch Kit - Production Ready
d44ff09 verified
Raw
History Blame Contribute Delete
2.17 kB
#!/bin/bash
# Boots backend + frontend, runs the real-browser E2E, captures screenshots.
ROOT=/home/user/affiliate-launch-kit
echo "▶ ensuring chromium system deps"
dpkg -s libnspr4 >/dev/null 2>&1 || \
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -qq \
libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 \
libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 \
libpango-1.0-0 libcairo2 libasound2t64 libatspi2.0-0 >/dev/null 2>&1
cd $ROOT/e2e
[ -d node_modules ] || npm install --no-audit --no-fund --silent
[ -d /home/user/.cache/ms-playwright/chromium_headless_shell-1228 ] || \
npx playwright install chromium
# ensure backend built
cd $ROOT/backend
[ -d node_modules ] || npm install --no-audit --no-fund --silent
[ -f dist/main.js ] || npm run build --silent
pkill -f "node dist/main.js" 2>/dev/null
pkill -f vite 2>/dev/null
sleep 1
node dist/main.js > /tmp/backend.log 2>&1 &
BPID=$!
echo "▶ waiting for BACKEND..."
BK=0
for i in $(seq 1 60); do
code=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/api/campaigns 2>/dev/null)
echo "$code" | grep -qE "^(401|403|200)$" && { echo " backend ready (${i}s, $code)"; BK=1; break; }
kill -0 $BPID 2>/dev/null || { echo " backend DIED"; tail -20 /tmp/backend.log; break; }
sleep 1
done
[ "$BK" != "1" ] && { echo "BACKEND FAILED"; tail -30 /tmp/backend.log; kill $BPID 2>/dev/null; exit 2; }
echo "▶ waiting for VITE..."
cd $ROOT/frontend
[ -d node_modules ] || npm install --no-audit --no-fund --silent
npm run dev > /tmp/frontend.log 2>&1 &
FPID=$!
VITE_OK=0
for i in $(seq 1 40); do
code=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:5173/ 2>/dev/null)
[ "$code" = "200" ] && { echo " vite ready (${i}s)"; VITE_OK=1; break; }
sleep 1
done
[ "$VITE_OK" != "1" ] && { echo "VITE FAILED"; cat /tmp/frontend.log; kill $BPID $FPID 2>/dev/null; exit 2; }
# Settle for NestJS module init
sleep 2
echo "▶ running real-browser E2E"
cd $ROOT/e2e
node browser-e2e.js
E2E_EXIT=$?
kill $BPID $FPID 2>/dev/null
echo "▶ screenshots saved:"
ls -1 screenshots/*.png 2>/dev/null | sed 's/^/ /'
exit $E2E_EXIT