133 lines
4.9 KiB
Bash
Executable File
133 lines
4.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# AOS all-in-one verification: start server, verify, cleanup.
|
|
set -u
|
|
cd /home/z/my-project
|
|
BASE=http://127.0.0.1:3000
|
|
SHOTS=/home/z/my-project/aos-shots
|
|
mkdir -p "$SHOTS"
|
|
|
|
echo "=== Starting dev server (output -> dev.log) ==="
|
|
pkill -f "next dev" 2>/dev/null
|
|
sleep 1
|
|
bun run dev > dev.log 2>&1 &
|
|
SRV=$!
|
|
echo " server pid $SRV"
|
|
|
|
echo "=== Waiting for server ready ==="
|
|
ok=0
|
|
for i in $(seq 1 90); do
|
|
if curl -s -o /dev/null -w "%{http_code}" "$BASE/" 2>/dev/null | grep -q 200; then ok=1; break; fi
|
|
sleep 1
|
|
done
|
|
if [ "$ok" != "1" ]; then
|
|
echo "SERVER NOT READY after ${i}s"
|
|
echo "--- dev.log tail ---"
|
|
tail -30 dev.log
|
|
kill $SRV 2>/dev/null
|
|
exit 1
|
|
fi
|
|
echo " server ready after ${i}s"
|
|
sleep 2
|
|
|
|
echo ""
|
|
echo "=== API smoke tests ==="
|
|
for ep in dashboard crm leads projects licenses finance modules audit; do
|
|
code=$(curl -s -o /dev/null -w "%{http_code}" "$BASE/api/aos/$ep")
|
|
echo " /api/aos/$ep -> $code"
|
|
done
|
|
|
|
echo ""
|
|
echo "=== Agent Browser: open dashboard ==="
|
|
agent-browser open "$BASE/" >/dev/null 2>&1
|
|
agent-browser wait --load networkidle >/dev/null 2>&1 || true
|
|
agent-browser wait 2000 >/dev/null 2>&1
|
|
agent-browser screenshot --full "$SHOTS/01-dashboard.png" >/dev/null 2>&1 && echo " shot 01-dashboard OK" || echo " shot 01 FAILED"
|
|
|
|
echo ""
|
|
echo "=== Snapshot interactive (first 30 lines) ==="
|
|
agent-browser snapshot -i 2>&1 | head -30
|
|
|
|
echo ""
|
|
echo "=== Page errors so far ==="
|
|
agent-browser errors 2>&1 | head -15
|
|
|
|
echo ""
|
|
echo "=== Navigate: CRM ==="
|
|
agent-browser find text "CRM" click >/dev/null 2>&1
|
|
agent-browser wait 2500 >/dev/null 2>&1
|
|
agent-browser screenshot --full "$SHOTS/02-crm.png" >/dev/null 2>&1 && echo " shot 02-crm OK" || echo " shot 02 FAILED"
|
|
|
|
echo "=== Navigate: Leads Finder ==="
|
|
agent-browser find text "Leads Finder" click >/dev/null 2>&1
|
|
agent-browser wait 2500 >/dev/null 2>&1
|
|
agent-browser screenshot --full "$SHOTS/03-leads.png" >/dev/null 2>&1 && echo " shot 03-leads OK" || echo " shot 03 FAILED"
|
|
|
|
echo "=== Navigate: Projekte ==="
|
|
agent-browser find text "Projekte" click >/dev/null 2>&1
|
|
agent-browser wait 2500 >/dev/null 2>&1
|
|
agent-browser screenshot --full "$SHOTS/04-projects.png" >/dev/null 2>&1 && echo " shot 04-projects OK" || echo " shot 04 FAILED"
|
|
|
|
echo "=== Navigate: Lizenzen ==="
|
|
agent-browser find text "Lizenzen" click >/dev/null 2>&1
|
|
agent-browser wait 2500 >/dev/null 2>&1
|
|
agent-browser screenshot --full "$SHOTS/05-licenses.png" >/dev/null 2>&1 && echo " shot 05-licenses OK" || echo " shot 05 FAILED"
|
|
|
|
echo "=== Navigate: Finanzen ==="
|
|
agent-browser find text "Finanzen" click >/dev/null 2>&1
|
|
agent-browser wait 2500 >/dev/null 2>&1
|
|
agent-browser screenshot --full "$SHOTS/06-finance.png" >/dev/null 2>&1 && echo " shot 06-finance OK" || echo " shot 06 FAILED"
|
|
|
|
echo "=== Navigate: Erweiterungen ==="
|
|
agent-browser find text "Erweiterungen" click >/dev/null 2>&1
|
|
agent-browser wait 2500 >/dev/null 2>&1
|
|
agent-browser screenshot --full "$SHOTS/07-settings.png" >/dev/null 2>&1 && echo " shot 07-settings OK" || echo " shot 07 FAILED"
|
|
|
|
echo ""
|
|
echo "=== Interactivity: Leads -> select first lead -> Erzeugen (AI) ==="
|
|
agent-browser find text "Leads Finder" click >/dev/null 2>&1
|
|
agent-browser wait 2000 >/dev/null 2>&1
|
|
# click first lead card in the list
|
|
agent-browser eval "document.querySelector('button[class*=border]')?.click()" >/dev/null 2>&1
|
|
agent-browser wait 1500 >/dev/null 2>&1
|
|
# click the Erzeugen button if present
|
|
agent-browser find text "Erzeugen" click 2>&1 | head -3
|
|
agent-browser wait 10000 >/dev/null 2>&1
|
|
agent-browser screenshot --full "$SHOTS/08-lead-explain.png" >/dev/null 2>&1 && echo " shot 08-explain OK" || echo " shot 08 FAILED"
|
|
|
|
echo ""
|
|
echo "=== Final error check ==="
|
|
echo "--- page errors ---"
|
|
agent-browser errors 2>&1 | head -15
|
|
echo "--- console (last 8) ---"
|
|
agent-browser console 2>&1 | tail -8
|
|
|
|
echo ""
|
|
echo "=== Sticky footer check (dashboard) ==="
|
|
agent-browser find text "Dashboard" click >/dev/null 2>&1
|
|
agent-browser wait 1500 >/dev/null 2>&1
|
|
agent-browser eval "JSON.stringify({vh: window.innerHeight, bodyH: document.body.scrollHeight, footer: document.querySelector('footer') ? document.querySelector('footer').getBoundingClientRect().top : -1})" 2>&1 | tail -2
|
|
|
|
echo ""
|
|
echo "=== Mobile viewport check ==="
|
|
agent-browser set viewport 390 844 >/dev/null 2>&1
|
|
agent-browser wait 1000 >/dev/null 2>&1
|
|
agent-browser screenshot --full "$SHOTS/09-mobile-dashboard.png" >/dev/null 2>&1 && echo " shot 09-mobile OK" || echo " shot 09 FAILED"
|
|
agent-browser find text "CRM" click >/dev/null 2>&1
|
|
agent-browser wait 1500 >/dev/null 2>&1
|
|
agent-browser screenshot --full "$SHOTS/10-mobile-crm.png" >/dev/null 2>&1 && echo " shot 10-mobile-crm OK" || echo " shot 10 FAILED"
|
|
# reset viewport
|
|
agent-browser set viewport 1440 900 >/dev/null 2>&1
|
|
|
|
echo ""
|
|
echo "=== Cleanup ==="
|
|
agent-browser close >/dev/null 2>&1
|
|
kill $SRV 2>/dev/null
|
|
sleep 1
|
|
echo "=== dev.log tail (last 20) ==="
|
|
tail -20 dev.log
|
|
echo ""
|
|
echo "=== Screenshots ==="
|
|
ls -la "$SHOTS" 2>/dev/null | tail -15
|
|
echo ""
|
|
echo "=== VERIFICATION COMPLETE ==="
|