Verwendung von Claude zur Automatisierung der Mobile-App-QA mit Capacitor WebViews

Ein Entwickler hat dokumentiert, wie er Claude beigebracht hat, automatisierte Qualitätssicherung für eine mit Capacitor erstellte mobile App durchzuführen. Die App verwendet React, das in native Hüllen eingebettet ist (WebView auf Android, WKWebView auf iOS) mit einer servergesteuerten UI-Architektur, sodass eine Codebasis auf Web-, iOS- und Android-Plattformen läuft.
Testherausforderung und Lösung
Capacitor-Apps befinden sich in einer Testlücke: Playwright kann nicht auf die native Hülle zugreifen, während XCTest und Espresso nicht mit HTML innerhalb von WebViews interagieren können. Der Entwickler hat ein Python-Skript erstellt, das Claude nutzt, um beide Mobilplattformen zu steuern, Screenshots zu machen, sie auf Probleme zu analysieren und automatisch Fehlerberichte zu erstellen.
Details zur Android-Implementierung
Die Android-Einrichtung dauerte 90 Minuten. Wichtige Schritte:
- Konnektivitätskorrektur:
adb reverse tcp:3000 tcp:3000undadb reverse tcp:8080 tcp:8080(muss nach Emulator-Neustart erneut ausgeführt werden) - WebView DevTools-Zugriff: Socket finden mit
adb shell "cat /proc/net/unix" | grep webview_devtools_remote - Weiterleitung an lokalen Port:
adb forward tcp:9223 localabstract:$WV_SOCKET - Voller Chrome DevTools Protocol-Zugriff über
curl http://localhost:9223/json
Das Skript durchläuft alle 25 App-Bildschirme in etwa 90 Sekunden, nutzt CDP für Navigation und Authentifizierung (Injektion von JWT in localStorage) und adb shell screencap für Screenshots.
Analyse und Fehlerberichterstattung
Screenshots werden auf visuelle Probleme analysiert: defekte Layouts, Fehlermeldungen, fehlende Bilder, leere Bildschirme und Überlappungen der Statusleiste. Wenn Probleme gefunden werden, führt das System folgende Schritte durch:
- Authentifiziert sich als zabriskie_bot
- Lädt Screenshots auf S3 hoch
- Erstellt Fehlerberichte im Produktionsforum mit Format:
[Android QA] Shows Hub: RSVP-Button überlappt Venue-Text
Das System kennt erwartete Zustände: "Forbidden"-Antworten für Nicht-Mitglieder auf Crew-Seiten sind keine Fehler, leere Avatar-Kreise sind keine Fehler, und "Preview"-Text in Profileinstellungen ist ein bekanntes kosmetisches Problem.
iOS-Implementierung
Die iOS-Einrichtung dauerte über sechs Stunden und hebt Unterschiede in der mobilen Automatisierungstooling hervor. Der Artikel erwähnt diesen Kontrast, liefert aber weniger spezifische technische Details zur iOS-Implementierung im Vergleich zu Android.
Bereitstellung
Das gesamte QA-System läuft als geplante Aufgabe jeden Morgen um 8:47 Uhr.
📖 Read the full source: HN AI Agents
👀 Siehe auch

Effizientes Token-Management mit Open-Source-MCP-Servern: Pare
Pare MCP-Server reduzieren Token-Abfälle und verbessern die Effizienz, wenn KI-Coding-Agenten Entwicklertools nutzen, indem sie strukturierte Ausgaben bereitstellen.

GoModel: Ein leichtgewichtiges Open-Source-AI-Gateway, geschrieben in Go
GoModel ist ein Open-Source-AI-Gateway, das eine einheitliche OpenAI-kompatible API für mehrere Anbieter bereitstellt, darunter OpenAI, Anthropic, Gemini, Groq, xAI und Ollama. Es zeichnet sich durch ein 17 MB großes Docker-Image aus, das 44-mal kleiner ist als LiteLLM, mit umgebungsvariablenbasierter Konfiguration und integrierter Beobachtbarkeit.

DecisionNode: CLI und MCP-Server für semantische Entscheidungsspeicherung
DecisionNode ist ein rein lokaler CLI- und MCP-Server, der strukturierte Entscheidungen als JSON speichert, sie als Vektoren für semantische Suche einbettet und sie über MCP für KI-Tools zugänglich macht. Es ist unter der MIT-Lizenz verfügbar und wurde für die Zusammenarbeit mit Claude Code, Cursor, Windsurf, Antigravity und anderen MCP-Clients entwickelt.

Aufbau eines Coding-Agenten für 8K-Kontext: Planer/Ausführer-Aufteilung, Token-Budgetierung und parallele Ausführung
Eine detaillierte Aufschlüsselung zum Bau eines CLI-Coding-Agenten, der für 8k-Token-Limits ausgelegt ist und eine Planer/Ausführer-Architektur, striktes Token-Budgeting und parallele Aufgabenausführung nutzt.