Skip to content

Device GUI Verification

Oleg Miagkov edited this page Jul 13, 2026 · 2 revisions

Верификация устройств и GUI — 🚧 старт

Источник: docs/DEVICE_GUI_VERIFICATION_ROADMAP.md. ← Обзор

Продолжение языкового роадмапа: цели, которые там были out of scope — mobile, embedded, native desktop GUI. Каждый слайс — «тот же пайплайн, новые адаптеры».

Легенда: ✅ сделано · 🟢 частично · 🚧 в работе · ⬜ запланировано

Уровни верификации

Уровень Смысл
L0 Собирается чисто
L1 Host-side unit-тесты проходят
L2 Работает в эмуляторе/симуляторе, ассерты проходят
L3 Скриншот-верификация (агент визуально подтверждает UI)
L4 Скриптованное взаимодействие (агент вводит и проверяет реакцию)
L5 На физическом устройстве (вне scope, кроме serial-harness)

Текущее состояние

Target Детект Test discovery Взаимодействие Лучший уровень
Android (Kotlin/Java) 🟢 инструмент. тесты (#422) L1→L2
Flutter 🟡 flutter test L1
iOS (Swift) 🟡 только Package.swift 🟡 swift test L1
React Native 🟡 jest L1
Embedded (PlatformIO/Zephyr/ESP-IDF) L0
Desktop GUI (Qt/GTK/native) ✅ ctest L1
Tauri 🟡 jest/vitest L1

Треки

Track A — Android (наибольшая ценность на усилие)

  • 🟢 A1 discovery инструментированных тестов: Gradle Managed Virtual Devices + connectedAndroidTest fallback (#422) → L2.
  • A2 adb-тулы (android_screenshot/android_input/android_logcat) → L3/L4.
  • A3 Maestro flows (YAML, LLM-friendly, хранятся как регресс-тесты).

Track B — Flutter

  • B1 flutter drive / integration_test + emulator lifecycle → L2.
  • B2 переиспользование adb-тулов из A2 → L3/L4.

Track C — Embedded (эмуляция; железо не предполагается)

Честный потолок без железа — L2. ⬜ C1 детект+allowlist+discovery (PlatformIO pio test, Zephyr west twister -p qemu, ESP-IDF); ⬜ C2 Renode-harness; ⬜ C3 serial-harness run_serial_session (единственный санкционированный L5); ⬜ C4 QA-честность («verified in QEMU, not on hardware»).

Track D — Native desktop GUI (скриншоты сначала)

  • D1 launch + screenshot (L3): macOS screencapture, Windows System.Drawing, Linux grim/import.
  • D2 чтение accessibility-дерева (Windows UIAutomation → Linux AT-SPI → macOS AXUIElement).
  • D3 input injection (L4).
  • D4 Tauri fast-path через tauri-driver (WebDriver), независимо от D1–D3.

Track E — iOS (последним: macOS-only раннеры)

  • E1 детект *.xcodeproj/*.xcworkspace + xcodebuild test на симуляторе (is_macos()).
  • E2 скриншоты simctl io booted screenshot (L3).
  • E3 input через idb или Maestro.

Порядок PR (impact/effort)

  1. A1 ✅ → 2. A2 adb-тулы → 3. C1 embedded detect → 4. C3 serial → 5. B1 flutter drive → 6. D1 desktop_screenshot → 7. C2 Renode → 8. E1/E2 iOS → 9. Maestro (A3/E3) → 10. D2/D3 → 11. D4 tauri-driver.

Non-goals

Device-фермы (Firebase/BrowserStack), hardware-in-the-loop сверх serial, коммерческие GUI-автоматизаторы (Squish/TestComplete).

Clone this wiki locally