Подтвердить что ты не робот

Тесты пользовательского интерфейса Xcode 7 завершаются с "Завершение ожидания ожидания завершения ключевого события"

Моя команда и я создали сервер Jenkins для автоматизации выполнения тестов на единицу и ui на Mac Mini, которые мы используем в качестве сервера сборки. В этом Mac Mini нет периферийных устройств, и доступ к нему возможен только путем удаленного входа в систему.

Когда я вошел в систему удаленно, используя мой Mac, встроенный в приложение для совместного доступа к экрану, тесты просто отлично работают с помощью симулятора iOS. Однако, если я закрываю удаленное соединение во время тестов, тесты ui, которые включают ввод текста, будут терпеть неудачу при следующей ошибке при попытке ввода (все остальные тесты/тесты ui проходят с летающими цветами):

Ошибка подтверждения: время ожидания завершения ключевого события

Это, очевидно, вызывает некоторые проблемы, когда Jenkins автоматически запускает тесты для нас, поскольку мы не всегда хотим удаленно регистрироваться на компьютере.

Я чувствую, что это имеет какое-то отношение к программной клавиатуре симулятора, но я не понимаю, почему это будет проблемой. Должен ли Mac иметь какой-то дисплей, подключенный для того, чтобы клавиатура программного обеспечения существовала или какая-то такая вещь? Будет ли подключение монитора к машине (даже если оно действительно не используется) заставляет пройти тесты? Почему это так?

4b9b3361

Ответ 2

Я использую xcode 8.2.1 и выполняю тесты в версиях ios 9.3. Одним простым взломом является добавление сна в течение 2-5 секунд после нажатия на текстовое поле и перед вводом на него. Хотя это не постоянное решение.

ДРУГОЕ НАДЕЖНОЕ РЕШЕНИЕ

Отмените выбор всех настроек клавиатуры в настройках перед запуском тестов.

"KeyboardAllowPaddle": false,
"KeyboardAssistant": false,
"KeyboardAutocapitalization": false,
"KeyboardAutocorrection": false,
"KeyboardCapsLock": false,
"KeyboardCheckSpelling": false,
"KeyboardPeriodShortcut": false,
"KeyboardPrediction": false,
"KeyboardShowPredictionBar": false