TGViewer
Мобильная разработка #1 Мобильная разработка #1 @developer_mobila · 3.82K subscribers
Post #1763 530
🧪 Как заставить XCUITest работать с интерфейсом глубиной более 100 уровней

Инженеры Циана столкнулись с необычной проблемой: экран на базе Server-Driven UI содержал настолько глубокое дерево элементов, что XCUITest не мог выполнить даже обычный поиск текстового поля.

Причиной стали ограничения фреймворка:

🔹 Accessibility переставал создавать снапшоты примерно после 60 уровней вложенности;
🔹 NSXPC не справлялся с передачей слишком глубокого дерева;
🔹 стандартные tap(), typeText() и поиск элементов завершались ошибками.

Инженеры обошли ограничения с помощью приватных API XCTest. Дерево интерфейса стали получать частями, а затем объединять в собственную структуру. Для взаимодействия с контролами использовали прямую отправку синтезированных событий ввода в демон автоматизации — без публичного поиска элементов.

Результат:

✅ собрано дерево глубиной 143 уровня;
✅ найдены поля на глубине около 136 уровней;
✅ выполнены тапы и ввод текста;
✅ значения успешно проверены — тест прошёл.

Решение работает на Xcode 26.2 и предназначено исключительно для тестового бандла. Приватные API могут измениться после обновления Xcode, поэтому использовать такой подход в продакшене нельзя.

https://habr.com/ru/companies/cian/articles/1071034/

📲 Мы в MAX

👉 @developer_mobila
  • ❤ 1
  • 👍 1
  • 👎 1
  • 🗿 1
More from @developer_mobila
  1. Sep 14, 2026Как разрабатывать приложения для iPhone на iPad Звучит как противоречие: iPad стал вполне…
  2. Jul 25, 2026🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.r…
  3. Jul 8, 2026🕵️‍♂️ «Я спрятал ключ в константу»: Как Джуны дарят доступы хакерам Вы интегрировали крут…
  4. Jun 25, 2026👾 Androguard: Швейцарский нож для реверс-инжиниринга Android Если вы занимаетесь пентесто…
  5. Jun 22, 2026Живой космос на Metal: как я переписывал фон мобильной игры и поднимал FPS с 20 до 120 В м…
  6. Jun 9, 2026Александр Евтухов, Максим Вакула — Одна билд-система, чтоб править всеми Все iOS-разработч…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →