| name | verify-dashboard |
| description | Visually verify the Stack-chan web UI / on-monitor face by launching the emulator and capturing Playwright screenshots into artifacts/. Use after changing web/ (face_renderer.js, scene.js, app.js, compat.py, contract.py) or when asked to confirm the face/expressions/dashboard render correctly. |
Verify the web dashboard & on-monitor face
Launches the device emulator and drives it through Playwright (MCP) to confirm the
assembled 3D head, the face on its screen, expressions, and speech render. Output
goes to artifacts/ (gitignored).
Steps
-
Start the emulator in the background on non-privileged ports (avoids needing
:80 and port clashes):
uv run python scripts/run_device_emulator.py --port 8080 --dashboard-port 8000 --no-browser
Wait until ready: poll GET http://127.0.0.1:8000/healthz returns 200.
-
Open the dashboard with the Playwright MCP tools:
mcp__playwright__browser_navigate → http://127.0.0.1:8000.
-
Drive the emulated device over its compat API (port 8080) and screenshot:
curl "http://127.0.0.1:8080/face?expression=1" (1=happy), then
mcp__playwright__browser_take_screenshot → artifacts/verify-face-happy.png.
curl "http://127.0.0.1:8080/face?expression=5" (5=angry) → screenshot
artifacts/verify-face-angry.png.
curl "http://127.0.0.1:8080/speech?say=こんにちは" → screenshot to confirm
the mouth opens and the speech bubble shows.
- To inspect the face up close, zoom OrbitControls via
mcp__playwright__browser_evaluate dispatching wheel events (deltaY<0) on
#canvas-host canvas, then screenshot.
-
Check there are no console errors with
mcp__playwright__browser_console_messages (level "error"); a favicon.ico
404 is harmless.
-
Read the saved screenshots and report: face appears on the head's monitor,
expression switches, mouth/lip-sync works, no unexpected console errors.
-
Stop the background emulator task when done (TaskStop).
Notes
- Expression index→name follows AI_StackChan2's
/face:
0=neutral,1=happy,2=sleepy,3=doubt,4=sad,5=angry.
- Browser TTS/STT need a user gesture and a supporting browser; headless audio
may not play — verify the visual mouth/lip-sync instead.
- Keep all output under
artifacts/.