| # MVP Acceptance Test Checklist |
|
|
| ## Pre-requisites |
| - [ ] Docker and Docker Compose installed |
| - [ ] LLM API key configured in `.env` |
| - [ ] All containers running (`docker-compose up -d`) |
|
|
| ## Test Scenarios |
|
|
| ### Scenario 1: Basic Query Flow |
| 1. [ ] Open http://localhost:3000 |
| 2. [ ] Type: "Show all customers" |
| 3. [ ] Verify workflow created message appears |
| 4. [ ] Verify graph visualization updates |
| 5. [ ] Wait for results (may take 5+ minutes due to pauses) |
| 6. [ ] Verify table with customer data appears |
| 7. [ ] Verify SQL query is displayed |
|
|
| ### Scenario 2: Human Intervention |
| 1. [ ] Start new query: "Count all orders" |
| 2. [ ] During the 5-minute pause (watch agent logs) |
| 3. [ ] Open Neo4j Browser: http://localhost:7474 |
| 4. [ ] Run query: `MATCH (i:Instruction {status: 'pending', type: 'generate_sql'}) RETURN i` |
| 5. [ ] Edit instruction: `SET i.parameters = '{"question": "Count orders with status completed"}'` |
| 6. [ ] Verify agent uses modified query after pause |
| 7. [ ] Verify results reflect the change |
|
|
| ### Scenario 3: Stop Workflow |
| 1. [ ] Start query: "Find expensive orders" |
| 2. [ ] Click STOP button during execution |
| 3. [ ] Verify workflow stops |
| 4. [ ] Check Neo4j: `MATCH (w:Workflow) RETURN w.status` shows 'stopped' |
|
|
| ### Scenario 4: Graph Visualization |
| 1. [ ] Start any query |
| 2. [ ] Verify workflow node appears (blue/gray) |
| 3. [ ] Verify instruction nodes appear |
| 4. [ ] Verify colors change: |
| - Gray = pending |
| - Yellow = executing |
| - Green = complete |
| 5. [ ] Click on node shows properties |
|
|
| ### Scenario 5: Audit Trail |
| 1. [ ] After running queries, open Neo4j Browser |
| 2. [ ] Run: `MATCH (l:Log) RETURN l ORDER BY l.timestamp DESC LIMIT 10` |
| 3. [ ] Verify all MCP operations are logged |
| 4. [ ] Run: `MATCH (e:Execution) RETURN e` |
| 5. [ ] Verify all executions have results |
|
|
| ## Performance Checks |
| - [ ] Agent processes instructions within 30 seconds of becoming available |
| - [ ] Frontend responds within 1 second |
| - [ ] Graph updates within 10 seconds |
| - [ ] No memory leaks after 10+ queries |
|
|
| ## Data Validation |
| Run these queries in Neo4j Browser: |
|
|
| ```cypher |
| // Check schema discovered |
| MATCH (t:Table) RETURN t.name |
| |
| // Check instructions executed |
| MATCH (i:Instruction)-[:EXECUTED_AS]->(e:Execution) |
| RETURN i.type, i.status, e.completed_at |
| |
| // Check successful SQL generation |
| MATCH (qt:QueryTemplate) |
| RETURN qt.query, qt.created_at |
| ORDER BY qt.created_at DESC |
| LIMIT 5 |
| |
| // Check workflow completion rate |
| MATCH (w:Workflow) |
| RETURN w.status, count(w) as count |
| ``` |
|
|
| ## Sign-off |
| - [ ] All test scenarios pass |
| - [ ] No errors in container logs |
| - [ ] System recovers from agent restart |
| - [ ] Clean startup from `docker-compose down && docker-compose up -d` |
|
|
| **Tester:** _________________ |
| **Date:** _________________ |
| **Version:** MVP 1.0 |
|
|
| --- |
|
|
| ## Final validation commands: |
|
|
| ```bash |
| # Complete test sequence |
| docker-compose down |
| docker-compose up -d |
| sleep 10 |
| |
| # Check health |
| curl -s http://localhost:8000/health && echo "MCP: OK" |
| curl -s http://localhost:3000 > /dev/null && echo "Frontend: OK" |
| |
| # Seed data |
| docker-compose exec mcp python /app/ops/scripts/seed.py |
| |
| # Run automated validation |
| docker-compose exec mcp python /app/ops/scripts/validate.py |
| |
| # Run demo |
| bash ops/scripts/demo.sh |
| |
| # In another terminal, watch all logs |
| docker-compose logs -f |
| |
| # Manual test in another terminal |
| curl -X POST http://localhost:8000/mcp \ |
| -H "Content-Type: application/json" \ |
| -H "X-API-Key: dev-key-123" \ |
| -d '{ |
| "tool": "write_graph", |
| "params": { |
| "action": "create_node", |
| "label": "Instruction", |
| "properties": { |
| "id": "final-test", |
| "type": "generate_sql", |
| "status": "pending", |
| "sequence": 999, |
| "pause_duration": 30, |
| "parameters": "{\"question\": \"What is the total revenue from all orders?\"}" |
| } |
| } |
| }' |
| |
| # Check execution after ~30 seconds |
| curl -X POST http://localhost:8000/mcp \ |
| -H "Content-Type: application/json" \ |
| -H "X-API-Key: dev-key-123" \ |
| -d '{ |
| "tool": "query_graph", |
| "params": { |
| "query": "MATCH (i:Instruction {id: \"final-test\"})-[:EXECUTED_AS]->(e:Execution) RETURN e.result" |
| } |
| }' |
| ``` |
|
|