e70ae79d-5898-4c55-8ceb-d2c701ce08b4
This commit is contained in:
1 parent
d226dabba3
commit
5855f699f3
53 files changed
+1911
-44
No files matched your search
+139
@@ -0,0 +1,139 @@
|
||||
#!/usr/bin/env bash
|
||||
# Verify the new AOS features: audit view, company drawer, lead convert, invoice dialog, create deal, search, task/time logging.
|
||||
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 "=== Start server ==="
|
||||
pkill -f "next dev" 2>/dev/null; sleep 1
|
||||
bun run dev > dev.log 2>&1 &
|
||||
SRV=$!
|
||||
for i in $(seq 1 90); do curl -s -o /dev/null "$BASE/" 2>/dev/null && break; sleep 1; done
|
||||
echo " ready after ${i}s"; sleep 2
|
||||
|
||||
echo ""
|
||||
echo "=== New API endpoints ==="
|
||||
for ep in "search?q=hamburg" "audit?limit=20"; do
|
||||
code=$(curl -s -o /dev/null -w "%{http_code}" "$BASE/api/aos/$ep")
|
||||
echo " /api/aos/$ep -> $code"
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "=== Test lead convert API (pick first pending lead) ==="
|
||||
LEADS=$(curl -s "$BASE/api/aos/leads")
|
||||
# find a pending lead id via python
|
||||
LEAD_ID=$(echo "$LEADS" | python3 -c "import sys,json; d=json.load(sys.stdin); print(next((l['id'] for l in d['leads'] if l['status']=='pending'), d['leads'][0]['id']))" 2>/dev/null)
|
||||
echo " lead id: $LEAD_ID"
|
||||
# first approve it
|
||||
curl -s -X PATCH "$BASE/api/aos/leads/$LEAD_ID" -H 'content-type: application/json' -d '{"status":"approved","reviewReason":"Test approval"}' >/dev/null
|
||||
echo " approved."
|
||||
# then convert
|
||||
CONV=$(curl -s -X POST "$BASE/api/aos/leads/convert" -H 'content-type: application/json' -d "{\"leadId\":\"$LEAD_ID\"}")
|
||||
echo " convert response (first 200 chars): $(echo "$CONV" | head -c 200)"
|
||||
echo ""
|
||||
|
||||
echo "=== Test create deal API ==="
|
||||
DEAL=$(curl -s -X POST "$BASE/api/aos/crm/deals" -H 'content-type: application/json' -d '{"companyId":"","title":"Test Deal","valueCents":500000,"stage":"lead"}')
|
||||
echo " (expected 400 for missing companyId) -> $(echo "$DEAL" | head -c 100)"
|
||||
|
||||
echo ""
|
||||
echo "=== 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
|
||||
|
||||
echo "=== Navigate to Audit view ==="
|
||||
agent-browser snapshot -i >/tmp/snap.txt 2>&1
|
||||
AUDREF=$(grep -i 'button "Audit' /tmp/snap.txt | head -1 | grep -oE 'ref=e[0-9]+' | head -1)
|
||||
echo " Audit nav ref: $AUDREF"
|
||||
[ -n "$AUDREF" ] && agent-browser click "$AUDREF" >/dev/null 2>&1
|
||||
agent-browser wait 2000 >/dev/null 2>&1
|
||||
H1=$(agent-browser get text h1 2>/dev/null | head -1)
|
||||
echo " Audit H1: $H1"
|
||||
agent-browser screenshot --full "$SHOTS/v3-audit.png" >/dev/null 2>&1 && echo " shot audit OK"
|
||||
|
||||
echo ""
|
||||
echo "=== Navigate to CRM, open company drawer ==="
|
||||
agent-browser find text "CRM" click >/dev/null 2>&1
|
||||
agent-browser wait 2000 >/dev/null 2>&1
|
||||
# click on companies tab
|
||||
agent-browser snapshot -i >/tmp/snap2.txt 2>&1
|
||||
TABREF=$(grep -i 'tab "Firmen"' /tmp/snap2.txt | head -1 | grep -oE 'ref=e[0-9]+' | head -1)
|
||||
echo " Firmen tab ref: $TABREF"
|
||||
[ -n "$TABREF" ] && agent-browser click "$TABREF" >/dev/null 2>&1
|
||||
agent-browser wait 1500 >/dev/null 2>&1
|
||||
# click first company row
|
||||
agent-browser eval "document.querySelector('tbody tr')?.click()" >/dev/null 2>&1
|
||||
agent-browser wait 1500 >/dev/null 2>&1
|
||||
agent-browser screenshot --full "$SHOTS/v3-company-drawer.png" >/dev/null 2>&1 && echo " shot company-drawer OK"
|
||||
# check drawer content
|
||||
DRAWER=$(agent-browser eval "document.querySelector('[role=dialog]')?.textContent?.slice(0,200) || 'no dialog'" 2>/dev/null | tail -1)
|
||||
echo " drawer text: $(echo "$DRAWER" | head -c 150)"
|
||||
|
||||
echo ""
|
||||
echo "=== Navigate to Finance, open invoice dialog ==="
|
||||
agent-browser find text "Finanzen" click >/dev/null 2>&1
|
||||
agent-browser wait 2000 >/dev/null 2>&1
|
||||
agent-browser eval "document.querySelector('tbody tr')?.click()" >/dev/null 2>&1
|
||||
agent-browser wait 1500 >/dev/null 2>&1
|
||||
agent-browser screenshot --full "$SHOTS/v3-invoice-dialog.png" >/dev/null 2>&1 && echo " shot invoice-dialog OK"
|
||||
DIALOG=$(agent-browser eval "document.querySelector('[role=dialog]')?.textContent?.slice(0,200) || 'no dialog'" 2>/dev/null | tail -1)
|
||||
echo " dialog text: $(echo "$DIALOG" | head -c 150)"
|
||||
|
||||
echo ""
|
||||
echo "=== Navigate to Projects, add a task ==="
|
||||
agent-browser find text "Projekte" click >/dev/null 2>&1
|
||||
agent-browser wait 2000 >/dev/null 2>&1
|
||||
# the tasks tab is default; find the task input
|
||||
agent-browser eval "document.querySelector('input[placeholder*=Neue]')?.focus()" >/dev/null 2>&1
|
||||
agent-browser snapshot -i >/tmp/snap3.txt 2>&1
|
||||
INPUTREF=$(grep -i 'textbox.*Neue' /tmp/snap3.txt | head -1 | grep -oE 'ref=e[0-9]+' | head -1)
|
||||
echo " task input ref: $INPUTREF"
|
||||
if [ -n "$INPUTREF" ]; then
|
||||
agent-browser fill "$INPUTREF" "E2E Test Aufgabe" >/dev/null 2>&1
|
||||
agent-browser wait 500 >/dev/null 2>&1
|
||||
# find the Hinzufügen button
|
||||
agent-browser find text "Hinzufügen" click >/dev/null 2>&1
|
||||
agent-browser wait 2500 >/dev/null 2>&1
|
||||
echo " task add attempted"
|
||||
fi
|
||||
agent-browser screenshot --full "$SHOTS/v3-projects-task.png" >/dev/null 2>&1 && echo " shot projects-task OK"
|
||||
|
||||
echo ""
|
||||
echo "=== Command palette global search ==="
|
||||
agent-browser set viewport 1440 900 >/dev/null 2>&1
|
||||
# open with ctrl+k
|
||||
agent-browser eval "window.dispatchEvent(new KeyboardEvent('keydown',{key:'k',metaKey:true}))" >/dev/null 2>&1
|
||||
agent-browser wait 1000 >/dev/null 2>&1
|
||||
# type into the palette
|
||||
agent-browser snapshot -i >/tmp/snap4.txt 2>&1
|
||||
PALREF=$(grep -i 'textbox.*Suche' /tmp/snap4.txt | head -1 | grep -oE 'ref=e[0-9]+' | head -1)
|
||||
echo " palette input ref: $PALREF"
|
||||
if [ -n "$PALREF" ]; then
|
||||
agent-browser fill "$PALREF" "Hamburg" >/dev/null 2>&1
|
||||
agent-browser wait 1500 >/dev/null 2>&1
|
||||
agent-browser screenshot --full "$SHOTS/v3-command-search.png" >/dev/null 2>&1 && echo " shot search OK"
|
||||
# read palette results
|
||||
agent-browser snapshot -i >/tmp/snap5.txt 2>&1
|
||||
echo " --- search results (first 8) ---"
|
||||
grep -iE "Firmen|Rechnungen|Projekte|Leads" /tmp/snap5.txt | head -8
|
||||
fi
|
||||
agent-browser press Escape >/dev/null 2>&1
|
||||
|
||||
echo ""
|
||||
echo "=== Errors check ==="
|
||||
agent-browser errors 2>&1 | head -10
|
||||
echo "--- console last 6 ---"
|
||||
agent-browser console 2>&1 | tail -6
|
||||
|
||||
echo ""
|
||||
echo "=== Cleanup ==="
|
||||
agent-browser close >/dev/null 2>&1
|
||||
kill $SRV 2>/dev/null
|
||||
echo "=== dev.log tail ==="
|
||||
tail -12 dev.log
|
||||
echo ""
|
||||
echo "=== VERIFICATION COMPLETE ==="
|
||||
ls -la "$SHOTS"/v3-* 2>/dev/null | tail -8
|
||||
Reference in new issue
Block a user