Synapse: Ovládaj QA automatizáciu hlasom cez Gemini Live API
Synapse: Ovládaj QA automatizáciu hlasom cez Gemini Live API
Predstavte si toto: sedíte pri monitore, sledujete bežiacu aplikáciu a poviete:
"Vygeneruj testovacie scenáre pre login komponent"
A o 30 sekúnd máte hotové JSON scenáre. Bez písania príkazov. Bez prepínania okien. Len hlas.
Synapse je hlasový orchestrátor, ktorý pomocou Google Gemini Live API riadi celý QA automation stack v reálnom čase.
Problém: CLI je fajn, ale...
Máme skvelé nástroje:
- Marker - pridá data-testid
- Scout - vygeneruje scenáre z kódu
- Golem - premení scenáre na testy
Ale každý vyžaduje CLI príkazy:
# Marker
python marker/main.py add --project ./frontend
# Scout
python scout/main.py generate ./frontend -o scenarios.json
# Golem
python golem/main.py generate scenarios.json -f playwright
# Spusti testy
pytest result/tests/ --base-url http://localhost:42004 príkazy. 4× prepnutie terminálu. 4× písanie cesty.
Čo keby ste mohli povedať:
"Pridaj test ID do frontend projektu,
potom vygeneruj scenáre,
vytvor Playwright testy
a spusti ich na localhost:4200"A AI by to všetko urobila za vás?
Riešenie: Synapse - Voice-Controlled QA Orchestrator
Synapse je hlasový command center pre QA automatizáciu:
┌─────────────────────────────────────────────────────┐
│ VY │
│ (hlas alebo text) │
└──────────────────────┬──────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ SYNAPSE │
│ Google Gemini Live API │
│ Real-time bidirectional voice │
└──────────────────────┬──────────────────────────────┘
↓
┌──────────────┼──────────────┐
↓ ↓ ↓
┌─────────┐ ┌─────────┐ ┌─────────┐
│ SCOUT │ │ GOLEM │ │ MARKER │
│ :50051 │ │ :50052 │ │ :50053 │
│ gRPC │ │ gRPC │ │ gRPC │
└─────────┘ └─────────┘ └─────────┘Synapse počúva váš hlas, pochopí čo chcete, a automaticky zavolá správny microservice.
Ako to funguje?
1. Real-time Voice s Gemini Live API
Synapse používa Gemini 2.0 Flash Live - nie bežné API, ale bidirectional streaming:
Vy hovoríte → mikrofón → Synapse → Gemini Live API
↓
AI rozumie + odpovedá
↓
Vy počujete ← reproduktor ← Synapse ← audio streamNie je to speech-to-text + LLM + text-to-speech. Je to natívna real-time konverzácia s AI.
2. Tool Calling
Gemini Live podporuje function calling v reálnom čase:
# Synapse definuje 4 nástroje
tools = [
{
"name": "generate_scenarios",
"description": "Generate test scenarios from frontend code",
"parameters": {"project_path": "string"}
},
{
"name": "generate_tests",
"description": "Generate executable tests from scenarios",
"parameters": {"scenarios_path": "string", "framework": "string"}
},
{
"name": "run_tests",
"description": "Run generated tests",
"parameters": {"test_dir": "string", "base_url": "string"}
},
{
"name": "add_test_ids",
"description": "Add data-testid attributes to components",
"parameters": {"project_path": "string"}
}
]Keď poviete "vygeneruj scenáre pre môj Angular projekt", Gemini:
- Pochopí intent
- Vyberie správny tool (
generate_scenarios) - Pýta sa na chýbajúce parametre ("Aká je cesta k projektu?")
- Zavolá tool
- Oznámi výsledok hlasom
3. gRPC Microservices
Synapse komunikuje so službami cez gRPC:
# grpc_clients.py
class ScoutClient:
def __init__(self, host="localhost", port=50051):
self.channel = grpc.insecure_channel(f"{host}:{port}")
self.stub = scout_pb2_grpc.ScoutServiceStub(self.channel)
def generate_scenarios(self, project_path: str) -> ServiceResult:
request = scout_pb2.GenerateRequest(project_path=project_path)
response = self.stub.Generate(request)
return ServiceResult(success=response.success, data=response.scenarios)Každý nástroj beží ako samostatný server - Synapse ich len orchestruje.
Praktický príklad
Spustenie
# 1. Spustite microservices (každý v samostatnom termináli)
cd scout && python main.py grpc-server --port 50051
cd golem && python main.py grpc-server --port 50052
cd marker && python grpc_server.py --port 50053
# 2. Spustite Synapse
cd synapse && python main.py liveVoice Session
┌────────────────────────────────────────────────────────┐
│ 🎤 SYNAPSE - Voice-Controlled QA Automation │
│ Gemini Live API connected │
│ Listening... │
└────────────────────────────────────────────────────────┘
Vy: "Ahoj, potrebujem vygenerovať testy pre môj frontend"
AI: "Ahoj! Rád pomôžem. Aká je cesta k tvojmu frontend projektu?"
Vy: "Je to /projects/my-angular-app"
AI: "Rozumiem. Chceš najprv pridať test ID do komponentov,
alebo už ich máš?"
Vy: "Pridaj ich prosím"
AI: "Spúšťam Marker na pridanie data-testid atribútov..."
[Marker beží]
AI: "Hotovo! Pridaných 47 test ID do 12 komponentov.
Mám teraz vygenerovať testovacie scenáre?"
Vy: "Áno, prosím"
AI: "Spúšťam Scout na analýzu komponentov..."
[Scout beží]
AI: "Vygenerovaných 23 scenárov pre 8 stránok.
Uložené do result/scenarios.json.
Chceš z nich vytvoriť Playwright testy?"
Vy: "Áno, a potom ich spusti na localhost:4200"
AI: "Generujem Playwright testy..."
[Golem generuje]
AI: "Vytvorených 23 testov. Spúšťam na localhost:4200..."
[Testy bežia]
AI: "Hotovo! 21 testov prešlo, 2 zlyhali.
Zlyhané testy: test_login_validation, test_checkout_empty_cart.
Chceš vidieť detaily?"Celý workflow = jedna konverzácia. Žiadne príkazy, žiadne cesty, žiadne prepínanie okien.
Tri režimy použitia
1. Live Voice (hlavný režim)
python main.py live- Real-time hlasová konverzácia
- Gemini Live API
- Odporúčané slúchadlá (aby AI nepočula samu seba)
2. Text Mode (fallback)
python main.py text- Pre prostredia bez mikrofónu
- Interaktívny chat
- Rovnaká funkcionalita, len písaná
> Vygeneruj scenáre pre ./frontend
AI: Spúšťam Scout...
AI: Hotovo! 15 scenárov vygenerovaných.
> Vytvor Playwright testy
AI: Z akého súboru mám čítať scenáre?
> result/scenarios.json
AI: Generujem testy...3. Single Command (scripting)
python main.py command "pridaj test ID do ./frontend"- Jeden príkaz, jeden výsledok
- Ideálne pre CI/CD
- Bez interaktivity
Architektúra
synapse/
├── main.py # CLI entry point
├── live_voice.py # Gemini Live API integration
├── agents.py # Tool handlers + text mode
├── grpc_clients.py # Scout, Golem, Marker clients
├── config.py # Configuration
└── proto/
└── *.proto # gRPC definitionslive_voice.py - Srdce Synapse
class SynapseLive:
def __init__(self):
self.client = genai.Client(api_key=config.google_api_key)
self.model = "gemini-2.0-flash-live-001"
async def run(self):
async with self.client.aio.live.connect(
model=self.model,
config={
"tools": self.tools,
"system_instruction": self.system_prompt
}
) as session:
# Concurrent tasks
await asyncio.gather(
self.send_audio(session), # Mic → Gemini
self.receive_audio(session), # Gemini → Speaker
self.handle_tools(session) # Tool calls
)System Instruction
system_prompt = """
Si QA automation asistent. Máš k dispozícii 4 nástroje:
1. generate_scenarios(project_path) - Vygeneruje test scenáre z kódu
2. generate_tests(scenarios_path, framework, base_url) - Vytvorí testy
3. run_tests(test_dir, base_url, headed) - Spustí testy
4. add_test_ids(project_path) - Pridá data-testid atribúty
Keď používateľ potrebuje zadať cestu, povedz mu nech ju napíše.
Vždy potvrď čo ideš robiť predtým ako to spravíš.
Hovor slovensky alebo anglicky podľa používateľa.
"""Podporované príkazy (hlasom)
| Čo poviete | Čo Synapse spraví |
|---|---|
| "Pridaj test ID do projektu" | Zavolá Marker |
| "Vygeneruj scenáre" | Zavolá Scout |
| "Vytvor Playwright testy" | Zavolá Golem generate |
| "Spusti testy" | Zavolá Golem run |
| "Spusti testy s browserom" | Golem run --headed |
| "Použi Firefox" | Golem run --browser firefox |
| "Analyzuj projekt" | Scout analyze |
| "Preview zmeny" | Marker dry-run |
| "Rollback" | Marker rollback |
Synapse rozumie kontextu - nemusíte opakovať cesty ak ste ich už zadali.
Prečo Voice Control?
1. Hands-Free Testing
Monitor 1: Bežiaca aplikácia
Monitor 2: DevTools
Vy: Sledujete UI a hovoríte príkazy
"Spusti test pre checkout flow"
[Sledujete ako test beží v browseri]
"Ten button nefunguje, pridaj mu test ID"
[Marker pridá ID]
"Regeneruj test"
[Nový test s lepším selektorom]2. Rýchlejšie Iteration
# CLI: 4 kroky
python scout/main.py generate ./frontend -o scenarios.json
python golem/main.py generate scenarios.json -f playwright
pytest result/tests/
# Našli ste bug, opravíte, a znovu...
# Voice: 1 veta
"Regeneruj a spusti testy"3. Nižšia Cognitive Load
Nemusíte si pamätať:
- Syntax príkazov
- Cesty k súborom
- Parametre a flagy
- Poradie operácií
Poviete čo chcete, AI vyrieši ako.
Konfigurácia
# .env
GOOGLE_API_KEY=your-gemini-api-key
# Microservice ports
SCOUT_HOST=localhost
SCOUT_PORT=50051
GOLEM_HOST=localhost
GOLEM_PORT=50052
MARKER_HOST=localhost
MARKER_PORT=50053
# Output
OUTPUT_DIR=resultAudio Setup
Synapse používa prebuilt wheels - žiadna kompilácia:
# Inštalácia (Windows/macOS/Linux)
pip install sounddevice numpy
# Zoznam audio zariadení
python main.py devices
# Output:
# Input devices:
# 0: Microphone (Realtek Audio)
# 1: Headset Microphone
# Output devices:
# 0: Speakers (Realtek Audio)
# 1: HeadphonesTip: Používajte slúchadlá, aby mikrofón nezachytával výstup z reproduktorov.
Kompletný QA Stack s Voice Control
┌─────────────────────────────────────────────────────┐
│ SYNAPSE │
│ Voice Command Center │
│ "Vygeneruj a spusti testy" │
└──────────────────────┬──────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ MARKER │
│ "Pridaj test ID" → data-testid atribúty │
└──────────────────────┬──────────────────────────────┘
↓
┌──────────────────────┴──────────────────────────────┐
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ SCOUT │ │ SENTINEL │ │
│ │ "Analyzuj │ │ "Prehľadaj │ │
│ │ kód" │ │ UI" │ │
│ └──────┬──────┘ └──────┬──────┘ │
│ └──────────┬─────────────────┘ │
│ ↓ │
│ JSON Scenáre │
└────────────────────┬────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ GOLEM │
│ "Vytvor testy" → Playwright/Cypress/Robot │
│ "Spusti testy" → pytest execution │
└─────────────────────────────────────────────────────┘Voice-first workflow:
Vy: "Kompletný test workflow pre frontend"
Synapse:
1. Zavolá Marker → pridá test ID
2. Zavolá Scout → vygeneruje scenáre
3. Zavolá Golem → vytvorí testy
4. Zavolá Golem → spustí testy
5. Reportuje výsledky hlasom
Vy: [Počúvate výsledky, sledujete browser]Quick Start
# 1. Získajte Gemini API key
# https://aistudio.google.com/apikey
# 2. Nakonfigurujte
cp .env.example .env
# Upravte GOOGLE_API_KEY
# 3. Nainštalujte
pip install google-genai sounddevice numpy grpcio protobuf python-dotenv pydantic
# 4. Spustite microservices
# (V samostatných termináloch)
cd scout && python main.py grpc-server
cd golem && python main.py grpc-server
cd marker && python grpc_server.py
# 5. Spustite Synapse
cd synapse && python main.py live
# 6. Hovorte!
"Ahoj, pomôž mi s testami pre môj Angular projekt"Use Cases
1. QA Engineer - Daily Workflow
Ráno: "Spusti regresné testy pre staging"
Po bug fixe: "Regeneruj testy pre login modul"
Pred PR: "Pridaj test ID do nových komponentov"2. Developer - Quick Validation
"Vygeneruj smoke testy pre komponent ktorý som práve napísal"
[Pokračuje v kódovaní, testy bežia na pozadí]
"Ako dopadli testy?"3. CI/CD Integration
# Voice command cez single mode
- name: Generate and run tests
run: |
python synapse/main.py command "generate tests for ./frontend"
python synapse/main.py command "run tests on $STAGING_URL"4. Demo / Prezentácia
"Ukáž mi ako funguje test automation"
[Synapse ukazuje celý workflow hlasom]Záver
Synapse mení paradigmu QA automatizácie:
| Tradičný prístup | So Synapse |
|---|---|
| CLI príkazy | Hlasové povely |
| Pamätať syntax | AI rozumie intent |
| Prepínať terminály | Jedna konverzácia |
| Manuálna orchestrácia | AI koordinuje služby |
| Keyboard-first | Voice-first |
Kedy použiť Synapse:
- ✅ Chcete hands-free testing
- ✅ Potrebujete rýchlu iteráciu
- ✅ Máte running QA microservices (Scout, Golem, Marker)
- ✅ Preferujete konverzáciu pred príkazmi
Synapse nie je len voice interface. Je to inteligentný asistent, ktorý rozumie QA workflow, pamätá si kontext, a koordinuje celý automation stack.
Povedzte mu čo potrebujete. On sa postará o zvyšok.
Synapse je orchestrátor pre QA automation ecosystem: Marker, Scout, Sentinel a Golem. Všetky nástroje komunikujú cez gRPC a môžu byť ovládané jedným hlasom.