API Reference
WebSocket Events
Real-time events for monitoring OpenQA activity via WebSocket.
Connection
javascript
const ws = new WebSocket('ws://localhost:3000');
ws.onopen = () => {
console.log('Connected to OpenQA');
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('Event:', data.type, data);
};
ws.onclose = () => {
console.log('Disconnected from OpenQA');
};Event Types
EVENT
thinkingBrain is processing/thinking
Payload
{
"type": "thinking",
"thought": "Analyzing checkout flow for potential vulnerabilities..."
}EVENT
analysis-completeApplication analysis finished
Payload
{
"type": "analysis-complete",
"understanding": "E-commerce app with user auth...",
"suggestedTests": ["Test cart persistence", ...],
"risks": ["Cart race conditions", ...]
}EVENT
test-generatedA new test was generated
Payload
{
"type": "test-generated",
"test": {
"id": "test_001",
"name": "test_checkout_flow.spec.ts",
"type": "e2e"
}
}EVENT
agent-createdA new dynamic agent was created
Payload
{
"type": "agent-created",
"agent": {
"id": "agent_001",
"name": "Checkout Flow Tester",
"purpose": "Test checkout with various payment methods"
}
}EVENT
test-startedA test execution started
Payload
{
"type": "test-started",
"testId": "test_001",
"name": "test_checkout_flow.spec.ts"
}EVENT
test-completedA test execution completed
Payload
{
"type": "test-completed",
"testId": "test_001",
"name": "test_checkout_flow.spec.ts",
"status": "passed",
"duration": 2300
}EVENT
bug-foundA bug was discovered
Payload
{
"type": "bug-found",
"bug": {
"id": "bug_001",
"title": "XSS vulnerability in search",
"severity": "high",
"testId": "test_002"
}
}EVENT
session-completeA test session finished
Payload
{
"type": "session-complete",
"sessionId": "session_abc123",
"testsRun": 15,
"testsPassed": 13,
"testsFailed": 2,
"bugsFound": 1,
"duration": 1800000
}EVENT
git-mergeA merge to main branch was detected
Payload
{
"type": "git-merge",
"source": "github",
"branch": "feature/checkout-fix",
"commit": "abc123",
"author": "developer@example.com"
}EVENT
git-pipeline-successA CI/CD pipeline completed successfully
Payload
{
"type": "git-pipeline-success",
"source": "github",
"pipelineId": "12345",
"branch": "main"
}Complete Example
javascript
const ws = new WebSocket('ws://localhost:3000');
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
switch (data.type) {
case 'thinking':
console.log('๐ง Brain:', data.thought);
break;
case 'test-generated':
console.log('๐งช New test:', data.test.name);
break;
case 'agent-created':
console.log('๐ค New agent:', data.agent.name);
break;
case 'test-started':
console.log('โถ๏ธ Running:', data.name);
break;
case 'test-completed':
const icon = data.status === 'passed' ? 'โ
' : 'โ';
console.log(`${icon} ${data.name}: ${data.status}`);
break;
case 'bug-found':
console.log('๐ Bug found:', data.bug.title);
break;
case 'session-complete':
console.log(`๐ Session complete: ${data.testsPassed}/${data.testsRun} passed`);
break;
case 'git-merge':
console.log('๐ Merge detected, starting tests...');
break;
}
};React Hook Example
typescript
import { useEffect, useState } from 'react';
interface OpenQAEvent {
type: string;
[key: string]: any;
}
export function useOpenQA() {
const [events, setEvents] = useState<OpenQAEvent[]>([]);
const [connected, setConnected] = useState(false);
useEffect(() => {
const ws = new WebSocket('ws://localhost:3000');
ws.onopen = () => setConnected(true);
ws.onclose = () => setConnected(false);
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
setEvents(prev => [...prev.slice(-99), data]);
};
return () => ws.close();
}, []);
return { events, connected };
}