Использование Claude для автоматизации тестирования мобильных приложений с помощью Capacitor WebViews

Разработчик описал, как он научил Claude выполнять автоматизированный контроль качества для мобильного приложения, созданного с помощью Capacitor. Приложение использует React, обёрнутый в нативные оболочки (WebView на Android, WKWebView на iOS) с архитектурой серверно-управляемого интерфейса, что позволяет одному кодовому базису работать на веб-платформах, iOS и Android.
Проблема тестирования и решение
Приложения на Capacitor находятся в пробеле тестирования: Playwright не может получить доступ к нативной оболочке, а XCTest и Espresso не могут взаимодействовать с HTML внутри WebViews. Разработчик создал Python-скрипт, который использует Claude для управления обеими мобильными платформами, делает скриншоты, анализирует их на наличие проблем и автоматически создаёт отчёты об ошибках.
Детали реализации для Android
Настройка Android заняла 90 минут. Ключевые шаги:
- Исправление подключения:
adb reverse tcp:3000 tcp:3000иadb reverse tcp:8080 tcp:8080(требует повторного запуска после перезапуска эмулятора) - Доступ к DevTools WebView: Найти сокет с помощью
adb shell "cat /proc/net/unix" | grep webview_devtools_remote - Перенаправление на локальный порт:
adb forward tcp:9223 localabstract:$WV_SOCKET - Полный доступ к Chrome DevTools Protocol через
curl http://localhost:9223/json
Скрипт проверяет все 25 экранов приложения примерно за 90 секунд, используя CDP для навигации и аутентификации (внедряя JWT в localStorage) и adb shell screencap для создания скриншотов.
Анализ и отчётность об ошибках
Скриншоты анализируются на визуальные проблемы: нарушенные макеты, сообщения об ошибках, отсутствующие изображения, пустые экраны и перекрытие строки состояния. При обнаружении проблем система:
- Аутентифицируется как zabriskie_bot
- Загружает скриншоты в S3
- Создаёт отчёты об ошибках в рабочем форуме в формате:
[Android QA] Shows Hub: RSVP button overlaps venue text
Система знает ожидаемые состояния: ответы "Forbidden" для не-членов на страницах команды не являются ошибками, пустые кружки аватаров не являются ошибками, а текст "Preview" в настройках профиля — это известная косметическая проблема.
Реализация для iOS
Настройка iOS заняла более шести часов, что подчёркивает различия в инструментах мобильной автоматизации. В статье отмечается этот контраст, но предоставляется меньше конкретных технических деталей о реализации iOS по сравнению с Android.
Развёртывание
Вся система контроля качества работает как запланированная задача каждое утро в 8:47.
📖 Read the full source: HN AI Agents
👀 Смотрите также

Garry Tan's gstack: Открытая фреймворк-платформа для ИИ-агентов на основе Claude Code
gstack от Гарри Тана — это фабрика программного обеспечения с открытым исходным кодом, которая превращает Claude Code в виртуальную инженерную команду с 13 специализированными слеш-командами для планирования, проектирования, разработки, ревью, контроля качества и управления выпуском.

Патина: Навык Claude Code для обнаружения и переписывания шаблонов ИИ-текста
Разработчик создал навык Claude Code под названием patina, который определяет 112 шаблонов, делающих текст, сгенерированный ИИ, очевидным на четырёх языках, а затем переписывает отмеченные фрагменты. Инструмент включает режимы только для обнаружения, оценки и итеративного переписывания.

Плагин Claude Code анализирует потери токенов и аномалии локально.
Разработчик создал плагин Claude Code, который диагностирует потерю токенов, обнаруживая шесть типов аномалий из локальных данных сессий. Инструмент проанализировал 8 392 сессии и обнаружил 1 015 аномалий, причём ExcessiveToolUse оказался наиболее распространённым.

Агент Форж: Инструмент с открытым исходным кодом для создания каркасов многокомпонентных конвейеров для Claude Code
Agent Forge — это навык Claude Code, который генерирует полные конвейеры мультиагентных систем на основе описаний вариантов использования. Он создает файлы промптов, скрипты оркестратора, директории для потока данных и конфигурации GitHub Actions, основываясь на паттернах, наблюдаемых в существующих мультиагентных системах.