В зрелом iOS-проекте автоматизированные тесты — давно не экзотика. Unit-тесты проверяют отдельные компоненты, интеграционные тесты контролируют взаимодействие между слоями, а XCUITest проходит критичные пользовательские маршруты. Проблема начинается не с отсутствия автоматизации, а с её масштабирования.
Несколько десятков независимых UI-тестов можно поддерживать практически в любом виде. Но по мере роста регрессии появляются сценарии, которым недостаточно просто запустить приложение и пройти последовательность экранов. Одному тесту нужен пользователь в определённом состоянии, другому — конкретная ошибка backend, третьему — несколько последовательных ответов от одного эндпоинта.
Если каждый тест самостоятельно подготавливает данные, настраивает приложение и реализует переходы, регрессия быстро превращается в набор изолированных мини-фреймворков. Поэтому мы стали развивать не очередную обёртку над XCUITest, а инфраструктуру вокруг существующей автоматизации.
XCUITest остался исполнителем пользовательского сценария. Robot Pattern сформировал стабильный слой взаимодействия с интерфейсом. Launch arguments позволили управлять стартовым состоянием приложения. Собственный mock backend взял на себя подготовку серверных данных, а Mock Admin сделал эту инфраструктуру доступной всей команде. Для ускорения разработки тестов мы подключили ИИ-агента, способного работать с Xcode и iOS Simulator через XcodeBuildMCP.