Я нахожусь в процессе интеграции Calabash в большой проект. У меня есть Calabash, работающий в тестовом приложении, поэтому я знаю, что моя установка и среда настроены правильно. Я использую метки специальных возможностей и файлы .feature, чтобы нажимать кнопки и вводить текст в поля. Это прекрасно работает.
Однако мой «настоящий» проект намного больше и сложнее. Несмотря на то, что конфигурация идентична моему тестовому приложению (см. статистику ниже), когда я запускаю простой файл .feature в реальном приложении, я получаю неустойчивые результаты: примерно в 80% случаев оно зависает, даже не пройдя " Given" в файле .feature, и, в конце концов, истечет время ожидания с этим сообщением:
Retrying.. HTTPClient::ReceiveTimeoutError: (execution expired)
Я заметил, что в этих случаях приложение совершенно не отвечает, когда я пытаюсь взаимодействовать с ним с помощью мыши. Вроде заморочился. Также есть UIAlertView, который должен появиться, но никогда не появляется. Обратите внимание, что когда я запускаю симулятор из XCode (та же цель "-cal"), он никогда не зависает. Я могу взаимодействовать с ним, появляется UIAlert, все работает нормально.
В остальных 20% случаев он будет проходить немного дальше в моем файле .feature, чем это - он будет эффективно передавать строку «Данная» и, возможно, другие, пока они не связаны с взаимодействием с экраном. Любое касание или ввод команд приведет к зависанию и, в конечном итоге, к истечению времени с тем же сообщением «выполнение истекло», как указано выше.
После долгих исследований я устранил все возможные различия между средой/конфигурацией этого приложения и моего тестового приложения и определил, что в моем приложении должно быть что-то, что Calabash действительно не нравится! К сожалению, я слишком плохо знаком с Calabash, чтобы знать, с чего начать поиски. Любая помощь будет оценена по достоинству.
Диагностика по запросу команды Calabash:
> xcode-select --print-path
/Applications/Xcode.app/Contents/Developer
> xcodebuild -version
Xcode 6.1
Build version 6A1052d
> calabash-ios version
0.11.3
> calabash.framework/Resources/version
0.11.3
irb(main):006:0> server_version
{
"app_version" => "0.10",
"outcome" => "SUCCESS",
"app_id" => "<redacted>",
"simulator_device" => "iPhone",
"version" => "0.11.3",
"app_name" => "<redacted>",
"iphone_app_emulated_on_ipad" => false,
"4inch" => true,
"git" => {
"remote_origin" => "[email protected]:calabash/calabash-ios-server.git",
"branch" => "master",
"revision" => "40c6245"
},
"screen_dimensions" => {
"scale" => 2,
"width" => 640,
"sample" => 1,
"height" => 1136
},
"iOS_version" => "8.1",
"system" => "x86_64",
"simulator" => ""
}