Skip to main content

Автоматизоване тестування iOS-додатків

Використовуйте Synapse + Computer Control API для автоматизації тестування iOS-додатків через Simulator.


Автоматизоване тестування iOS-додатків

Поєднайте систему пам'яті Synapse з Computer Control API для побудови тестів iOS-додатків під керуванням LLM. LLM запам'ятовує тестові сценарії, вчиться з минулих невдач та адаптується до змін UI.

Архітектура

┌──────────────┐    commands    ┌──────────────┐    screenshots    ┌──────────────┐
│  LLM Agent   │ ─────────────▶│  Synapse     │ ────────────────▶ │  iOS Sim     │
│  (Claude)    │               │  Computer    │ ◀──────────────── │  (via agent) │
└──────────────┘               │  Control     │    results        └──────────────┘
       │                       └──────────────┘
       │ store/recall
       ▼
┌──────────────┐
│  Memories    │ (test scenarios, past failures, UI patterns)
└──────────────┘

Передумови

  • Обліковий запис Synapse + Mind Key
  • MCP-сервер Synapse налаштовано у Claude Desktop
  • iOS Simulator із встановленим screen-remote-agent
  • Комп'ютер зареєстровано в Synapse (дивіться Computer Control API)

Крок 1: Зареєструйте комп'ютер Simulator

На Mac, де запущено iOS Simulator:

# Отримайте код встановлення від 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_..." }

# Запустіть screen-remote-agent на Mac
# (використовує код встановлення для реєстрації)

Крок 2: Збережіть тестові сценарії в пам'яті

Зберігайте багаторазові тестові сценарії як спогади:

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")

Крок 3: Виконання тестів під керуванням LLM

У Claude Desktop (із налаштованим Synapse MCP):

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:

  1. Викличе memory_search, щоб знайти спогад test_scenario_login_flow
  2. Викличе computer_screenshot, щоб побачити поточний стан
  3. Виконає кожен крок через computer_command_queue (click, type)
  4. Перевірить результати через знімки екрана
  5. Збереже будь-які невдачі як спогади mistake

Крок 4: Тести з самовідновленням

Коли тест провалюється, збережіть невдачу та відновлення:

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"
        })

# Приклад
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.")

Наступного разу, коли LLM запускає тест, він відкликає невдачу та застосовує відновлення автоматично.

Крок 5: Відстеження результатів тестів

Відстежуйте запуск тестів як завдання:

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"
        })

Поширені команди

Дія Команда
Запуск Simulator xcrun simctl launch booted com.example.app
Знімок екрана computer_screenshot (через Synapse MCP)
Тап у (x,y) computer_command_queue {type:"click", payload:{x,y}}
Введення тексту computer_command_queue {type:"type", payload:{text:"..."}}
Натиснути Home computer_command_queue {type:"key", payload:{keys:["Cmd","Shift","H"]}}

Найкращі практики

Наступні кроки