316просмотров
29 октября 2025 г.
questionScore: 348
Вот я сижу в самом неудобном кресле в мире — в поезде «Ласточка» — и думаю: а что вообще написать? Ну, как говорится, главное начать. Дальше само поедет 😄 Так же было и с мобильными автотестами. Мобильные автотесты: первый шаг
В конце весны я накидал план внедрения автотестов. Первый пункт — выбор инструментов. У нас проект на iOS и Android, поэтому сначала смотрел на кроссплатформенный Appium, но после обсуждения с мобильной командой остановились на нативных инструментах (привет Тиграм ✌️):
- XCUITest → для iOS;
- Espresso → для Android. Летом как раз привезли корпоративный MacBook, а iOS-разработчик переписал часть приложения на SwiftUI. Поэтому первым пошёл iOS UI-тест. 📍 Какие проблемы пришлось решить по ходу (и как)
- UI не имел уникальных идентификаторов → Xcode просто не видел элементы → добавил свою accessibilityId(...), совместно с разработчиком разметили экраны
- На iOS < 14 .accessibilityIdentifier не работает → сделал обёртку accessibilityId(id, label:), которая безопасна для старых девайсов - Системное окно “Разрешить уведомления?” ломало флоу теста → добавил auto-хэндлинг через com.apple.springboard, теперь тест сам нажимает “Разрешить/Allow”
- Ошибка в тест-кейсе → после нажатия на крестик тест ожидал “вернуться назад”, но по бизнес-логике нужно было перейти на главный экран тестового приложения → поправил ожидаемый результат теста
- В проекте оказалось две функции для accessibilityId → Xcode вызывал случайную 🥲 → убрал старую, оставили одну Написал и оформил документацию (UITests.md), открыл PR, получил ревью, почистил — готово. Весь этот процесс я вёл совместно с ChatGPT — но, конечно, важно быть в контексте проекта. Модель очень помогает, экономит время, но думать за тебя не будет. Что дальше?
Следующий шаг — настроить удалённый запуск тестов (CI). Xcode Cloud официально недоступен в РФ, поэтому скорее всего буду настраивать через Jenkins. Но пока точно не решил. После настройки удаленного запуска буду заниматься масштабированием — написанием тестов для других функциональных частей приложения. Плюс надо будет всё это проделать еще и для Android. Вот так я ворвался в мобильную автоматизацию. Про подкаст от Carrot quest о людях не хватило мне сил написать, расскажу в следующий раз. Всем удачи! #mobileAutomation