>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
TypeScript

Come Far Testare le App Mobile da una Rete Neurale per Te

Ogni volta che apro un pull request di qualcun altro in un progetto React Native, mi ritrovo a pensare: controllare manualmente i layout su iOS e Android è una seccatura che ti fa venire voglia di urlare. Devi fare il pull del branch, buildare il bundle, lanciare l'emulatore, cliccare attraverso lo scenario, fare screenshot e scrivere all'autore che il pulsante è andato fuori schermo.

Il team di Callstack ha rilasciato la seconda versione dello strumento cali. È un'utility da riga di comando che gestisce il testing mobile, gli audit delle performance e le code review utilizzando agenti LLM.

Di cosa tratta il progetto

Gli agenti web non sorprendono più nessuno: Playwright e Puppeteer sono da tempo integrati con i modelli linguistici. Con il mobile, le cose sono sempre state più complicate. Gli emulatori sono imprevedibili, il debugger di React Native vive nel suo mondo a parte, e collegare un modello senza rompere l'ambiente richiede un certo sforzo.

Cali risolve il problema attraverso la separazione dei ruoli. L'utility non cerca di essere un chatbot universale che fa tutto. Invece, ha modalità operative strict dove ogni agente riceve solo il pacchetto di strumenti necessario:

  • cali qa esegue scenari di test su un simulatore o emulatore reale tramite l'utility agent-device.
  • cali perf-review trova re-render non necessari e rallentamenti connettendosi direttamente a agent-react-devtools.
  • cali review legge il repository e controlla le diff nei pull request.
  • cali dev tenta di apportare modifiche al codice autonomamente sotto la supervisione dei test e del type checker.

I comandi review, perf-review e dev sono ancora marcati come sperimentali, ma lo scenario base qa è pronto per l'uso.

Come eseguire il testing sulla tua macchina locale

Per iniziare ti servono Node.js e il pacchetto agent-device installato globalmente. Se all'agente mancano le skill necessarie, Cali le installerà tramite npx skills nella directory ~/.cali/skills.

Puoi controllare il lancio con una singola riga:

cali qa \
  --local ios \
  --artifact ./artifacts/MyApp.app \
  --prompt "проверь текст на экране онбординга и нажми кнопку далее"

Se hai un solo simulatore iOS o emulatore Android in esecuzione, l'utility lo selezionerà automaticamente. Quando lanci su Android, Cali può persino parsare AndroidManifest.xml direttamente da .apk per estrarre applicationId senza flag extra.

Dettaglio importante: per i build di debug, devi avviare e fermare il server Metro separatamente. Cali è responsabile solo dell'interazione con l'interfaccia dell'app.

Profiling e ricerca di re-render non necessari

Forse la modalità più interessante è perf-review. Tutti sappiamo quanto sia facile compromettere le performance in React Native passando accidentalmente un callback instabile a una lista pesante.

Cali connette un agente a React DevTools ed esegue la schermata target:

cali perf-review \
  --context ./cali-context.json \
  --platform android \
  --artifact ./artifacts/app.apk \
  --prompt "проверь экран оформления заказа на подвисания"

L'agente analizza le interazioni, cattura le metriche e genera un report strutturato. I risultati vanno nella cartella artifacts/perf-review, che contiene screenshot, un manifest e un sommario testuale con i problemi principali.

Contesto condiviso e lavoro in CI

Invece di lunghe catene di argomenti da terminale, Cali usa un file di configurazione cali-context.json. Descrive il repository, il build, i criteri di accettazione e i vincoli per l'agente:

{
  "workspaceRoot": ".",
  "repository": {
    "provider": "github.com",
    "owner": "my-team",
    "name": "shop-app",
    "defaultBranch": "main",
    "currentBranch": "feature/checkout-redesign"
  },
  "mobile": {
    "platform": "android",
    "artifactPath": "./artifacts/app.apk"
  },
  "qa": {
    "acceptanceCriteria": [
      "На экране оплаты отображается итоговая сумма",
      "Кнопка подтверждения остаётся кликабельной"
    ]
  },
  "dev": {
    "allowedValidations": ["bun test", "bunx tsc --noEmit"],
    "writePolicy": "workspace",
    "pushPolicy": "disabled"
  }
}

I flag da riga di comando hanno sempre la priorità sul file. Questo è comodo quando devi sostituire un percorso a un artifact fresco in una pipeline.

In GitHub Actions e Expo Application Services (EAS), l'utility rileva l'ambiente autonomamente. Un helper aggiuntivo cali export-ci genera un report markdown con screenshot che puoi postare immediatamente come commento su un pull request aperto tramite GitHub CLI:

name: Запуск мобильного QA
  env:
    AI_GATEWAY_API_KEY: ${{ secrets.AI_GATEWAY_API_KEY }}
    CALI_PLATFORM: android
    CALI_ARTIFACT_PATH: ./builds/app.apk
  run: npx cali qa --quiet

name: Подготовка отчёта
  run: npx cali export-ci --report ./artifacts/qa/report.json

name: Публикация комментария в PR
  env:
    GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  run: gh pr comment "${{ github.event.pull_request.number }}" --body-file ./artifacts/qa/ci-comment.md

Connettere i modelli e sicurezza

Di default, Cali è configurato per lavorare con openai/gpt-5.4-mini tramite AI Gateway. Se hai una chiave Anthropic diretta, puoi passare a Sonnet tramite variabili d'ambiente:

ANTHROPIC_API_KEY=your-anthropic-api-key
QA_MODEL=anthropic/claude-sonnet-4.6

È bello che gli autori abbiano pensato alla sicurezza: l'utility rimuove token e secret dagli URL del repository quando carica il contesto, e il report.json finale salva solo i campi sicuri.

Vale la pena provarlo

Lo strumento sembra solido e risolve un problema specifico per i team che scrivono su Expo e React Native. Il vantaggio principale qui è lo strict contract in input e l'output JSON prevedibile. L'agente non vaga in un terminale astratto ma è limitato a un set chiaro di utility.

Il progetto sta ancora guadagnando trazione (circa mille stelle su GitHub), ma l'architettura a ruoli permette già di implementare il controllo automatizzato dei percorsi utente critici nella fase CI. Se sei stanco di eseguire manualmente i test smoke di base prima di ogni rilascio, vale la pena clonare il repository e provare un paio di schermate su un simulatore locale.

Progetti correlati