AgentMeet E2E Testing
Use this skill when validating AgentMeet runtime behavior, especially PRs that touch frontend/src/app/api/v1, room creation, agent registration, message polling, or read receipts.
Devin Secrets Needed
- None required for the local fallback flow.
- Optional for protected deployed preview testing, if available:
VERCEL_ACCESS_TOKENor browser login/session that can bypass Vercel preview protection.- One database URL env var for the deployed project:
DATABASE_URL,POSTGRES_URL,POSTGRES_PRISMA_URL, orSUPABASE_DB_URL. NEXT_PUBLIC_SUPABASE_URLandNEXT_PUBLIC_SUPABASE_ANON_KEYfor browser Realtime testing.
Local fallback environment
If the Vercel preview is protected or project secrets are unavailable, test locally with Docker PostgreSQL:
docker run --name agentmeet-test-postgres \
-e POSTGRES_PASSWORD=agentmeet_test \
-e POSTGRES_DB=agentmeet_test \
-p 127.0.0.1:55432:5432 \
-d postgres:16-alpine
Wait until Postgres is ready:
docker exec agentmeet-test-postgres pg_isready -U postgres -d agentmeet_test
Run Next.js from the repo root:
DATABASE_URL='postgresql://postgres:agentmeet_test@127.0.0.1:55432/agentmeet_test' \
PGSSLMODE=disable \
FRONTEND_URL='http://localhost:3000' \
NEXT_PUBLIC_SUPABASE_URL='https://example.supabase.co' \
NEXT_PUBLIC_SUPABASE_ANON_KEY='dummy-anon-key-for-local-e2e' \
npm --prefix frontend run dev -- --hostname 0.0.0.0
The dummy Supabase values allow the UI bundle to load. This local fallback verifies persisted data and read receipt rendering after page load/refresh, but does not verify live Supabase Realtime delivery.
Browser checks to record
- Open
http://localhost:3000. - Click Start an agent call.
- Assert the room page opens with No agents here yet, Copy invite prompt, and Invite Agent, with no visible
API error 500. - Click Invite Agent and then the popover Copy action.
- Assert the invite UI describes API credentials/endpoints and does not show the old
/waitflow. - After API assertions create messages and read receipts, open the test room URL and assert the transcript shows the message plus
✓✓checkmarks.
API assertions
Use an ESM-compatible Node script (node --input-type=module) or another HTTP client to verify:
POST /api/v1/roomsreturns HTTP 201 with:agent_idmatchingag_plus 8 hex chars.agent_tokenmatchingat_plus 8 hex chars.poll_urlcontaining/read?token=<agent_token>.
GET /api/v1/{room}/agent-join?format=jsonreturns HTTP 200 with a secondagent_id, a secondagent_token, andendpoints.read_messages.urlcontaining/read?token=<second_agent_token>.- The second join response should not contain the first agent token.
POST /api/v1/{room}/messagewith each validagent_tokenreturns HTTP 201 and increasingmessage_idvalues.- First
/read?token=<second_agent_token>returns exactly the first agent's unread message andread_byincludes the second agent ID. - Repeating
/read?token=<second_agent_token>returnsmessages: []. - First
/read?token=<first_agent_token>returns exactly the second agent's unread message andread_byincludes the first agent ID. POST /api/v1/{room}/messagewith an invalid token returns HTTP 401 and messageInvalid agent token.
Known testing limitations
- Protected Vercel preview URLs might redirect to Vercel login. Try the Vercel MCP
get_access_to_vercel_urlorweb_fetch_vercel_urltools, but they may fail depending on access. - If preview auth cannot be bypassed and no production secrets are available, clearly report that the deployed preview and live Supabase Realtime were not directly verified.
- Do not claim production env vars are correct unless you directly test the deployed preview or inspect Vercel env configuration.
Cleanup
docker rm -f agentmeet-test-postgres