Otomatik iOS Uygulama Testi
Simülatör üzerinden iOS uygulama testlerini otomatikleştirmek için Synapse + Computer Control API kullanın.
Otomatik iOS Uygulama Testi
LLM odaklı iOS uygulama testleri oluşturmak için Synapse'in bellek sistemini Computer Control API ile birleştirin. LLM test senaryolarını hatırlar, geçmiş başarısızlıklardan öğrenir ve UI değişikliklerine uyum sağlar.
Mimari
┌──────────────┐ commands ┌──────────────┐ screenshots ┌──────────────┐
│ LLM Agent │ ─────────────▶│ Synapse │ ────────────────▶ │ iOS Sim │
│ (Claude) │ │ Computer │ ◀──────────────── │ (via agent) │
└──────────────┘ │ Control │ results └──────────────┘
│ └──────────────┘
│ store/recall
▼
┌──────────────┐
│ Memories │ (test scenarios, past failures, UI patterns)
└──────────────┘Önkoşullar
- Synapse hesabı + Mind Key
- Claude Desktop'da yapılandırılmış Synapse MCP sunucusu
screen-remote-agentyüklü iOS Simülatörü- Synapse'e kayıtlı bilgisayar (bkz. Computer Control API)
Adım 1: Simülatör Bilgisayarını Kaydetme
iOS Simülatörü çalışan Mac'te:
# Get install code from Synapse
curl -X POST https://synapse.schaefer.zone/computers/install-code \
-H "Authorization: Bearer YOUR_MIND_KEY" \
-d '{"computer_name":"ios-sim"}'
# → { "install_code": "ic_..." }
# Run screen-remote-agent on the Mac
# (uses the install code to register)Adım 2: Test Senaryolarını Bellekte Saklama
Yeniden kullanılabilir test senaryolarını bellek olarak saklayın:
import requests
def store_test_scenario(name, steps, app):
requests.post(f"{URL}/memory",
headers={"Authorization": f"Bearer {MIND_KEY}"},
json={
"category": "skill",
"key": f"test_scenario_{name}",
"content": f"App: {app}\nSteps:\n" + "\n".join(steps),
"tags": ["test", "ios", app],
"priority": "high"
})
store_test_scenario("login_flow", [
"Launch app",
"Tap email field",
"Type test@example.com",
"Tap password field",
"Type password123",
"Tap Login button",
"Verify home screen appears"
], "MyApp")Adım 3: LLM Odaklı Test Yürütme
Claude Desktop'da (Synapse MCP yapılandırılmış):
Run the login_flow test scenario on the iOS Simulator.
Take a screenshot after each step and verify the expected UI.
If any step fails, store the failure as a memory so we can
avoid it next time.Claude şunları yapacak:
test_scenario_login_flowbelleğini bulmak içinmemory_searchçağırır- Mevcut durumu görmek için
computer_screenshotçağırır - Her adımı
computer_command_queueile yürütür (tıkla, yaz) - Sonuçları ekran görüntüleriyle doğrular
- Başarısızlıkları
mistakebellek olarak saklar
Adım 4: Kendinden İyileşen Testler
Bir test başarısız olduğunda, başarısızlığı ve kurtarmayı saklayın:
def store_test_failure(scenario, step, error, recovery):
requests.post(f"{URL}/memory",
headers={"Authorization": f"Bearer {MIND_KEY}"},
json={
"category": "mistake",
"key": f"failure_{scenario}_{step}",
"content": f"Scenario: {scenario}\nStep: {step}\nError: {error}\nRecovery: {recovery}",
"tags": ["test", "failure", "ios", scenario],
"priority": "high"
})
# Example
store_test_failure("login_flow", "tap_login",
"Login button not found at expected coordinates",
"Button moved due to new logo. Search by accessibility label instead.")Bir dahaki sefere LLM testi çalıştırdığında, başarısızlığı geri çağırır ve kurtarmayı otomatik olarak uygular.
Adım 5: Test Sonucu İzleme
Test çalışmalarını görev olarak izleyin:
def track_test_run(scenario, status, duration):
requests.post(f"{URL}/mind/task",
headers={"Authorization": f"Bearer {MIND_KEY}",
"Content-Type": "application/json"},
json={
"title": f"Test: {scenario}",
"description": f"Status: {status}, Duration: {duration}s",
"priority": "normal"
})Yaygın Komutlar
| Eylem | Komut |
|---|---|
| Simülatörü başlat | xcrun simctl launch booted com.example.app |
| Ekran görüntüsü | computer_screenshot (Synapse MCP ile) |
| (x,y)'de dokun | computer_command_queue {type:"click", payload:{x,y}} |
| Metin yaz | computer_command_queue {type:"type", payload:{text:"..."}} |
| Home'a bas | computer_command_queue {type:"key", payload:{keys:["Cmd","Shift","H"]}} |