Calabash-ios: запустить тестовое физическое устройство с установленным ipa без xcodeproj

Я новичок в calabash-ios, и у меня есть фиктивный вопрос:

Как я могу запустить тест Calabash с реальным устройством, на котором установлен файл ipa (включая фреймворк Calabash) и без xcodeproj?

Проблема в том, что я занимаюсь QA, а Dev дает мне только файл ipa для тестирования без исходного кода.

ОБНОВЛЕНИЕ: я могу запустить файл ipa в консоли и огурец, добавив BUNDLE_ID. И убедитесь, что CFNetwork.framework включен в структуру приложения для установления соединения.

Но у меня возникла другая проблема с запуском сценария: 1. Когда я запускаю команду ниже:

DEVICE_ENDPOINT=http://192.168.1.9:37265 NO_LAUNCH=1 BUNDLE_ID=com.example.appname DEVICE_TARGET=UDID cucumber

Потом я получил такую ​​ошибку:

 A JSON text must at least contain two octets! (JSON::ParserError)
  features/my_first.feature:8:in `Then I touch "LOG-IN/ CREATE ACCOUNT"'

все остальные шаги были пропущены

  1. Затем я запускаю консольный код

    DEVICE_ENDPOINT=http://192.168.1.9:37265 NO_LAUNCH=1 BUNDLE_ID=com.example.appname DEVICE_TARGET=UDID calabash-ios console
    

Затем я запускаю server_version и получаю ответ, в котором говорится, что соединение выполнено УСПЕШНО. Но когда я запустил start_test_server_in_background, мне потребовалось слишком много времени, чтобы ждать, и я вижу, что приложение, которое мое физическое устройство продолжало давать сбой, запускалось снова и снова, пока оно не остановилось как:

Unable to start. Make sure you've set APP_BUNDLE_PATH to a build supported by this simulator version
Calabash::Cucumber::Launcher::StartError: Calabash::Cucumber::Launcher::StartError: 

"Timed out waiting for UIAutomation run-loop Error while writing to fifo. RunLoop::Fifo::NoReaderConfiguredError.
 2015-10-01 10:49:41.634 instruments[15640:10558880] WebKit Threading Violation - initial use of WebKit from a secondary thread.
 2015-10-01 10:49:42.574 instruments[15640:10558978] Attempting to change event horizon while disengage
 2015-10-01 10:49:42.577 instruments[15640:10558877] Attempting to change event horizon while disengage
 Instruments Trace Error : Target failed to run: Permission to debug app

Кто угодно может помочь пожалуйста! Я попытался найти какое-то решение, но они почти не работают на симуляторе и содержат xcodeproj. Как QA, у меня нет исходного кода, только файл .ipa. :( Спасибо


person Andy IsMe    schedule 30.09.2015    source источник
comment
Я обновил свой ответ.   -  person jmoody    schedule 01.10.2015


Ответы (2)


Вы должны установить 3 переменные:

$ DEVICE_TARGET=<UDID> \
    DEVICE_ENDPOINT=http://<ip>:37265 \
    BUNDLE_ID=com.example.YourApp cucumber

Устройство и главный компьютер должны быть в одной сети.

На вашем устройстве должен быть установлен .ipa.

Вы можете сделать это в Xcode, перетащив мышью в окно диспетчера устройств или с помощью стороннего инструмента, такого как ideviceinstaller (доступен с homebrew).

Вы не должны никогда устанавливать NO_LAUNCH.

http://calabashapi.xamarin.com/ios/file.ENVIRONMENT_VARIABLES.html#label-NO_LAUNCH

Вам также необходимо включить устройство для разработки и включить автоматизацию UIA в Settings.app> Developer.

  1. Включение устройства для разработка
  2. RunLoop :: Fifo :: NoReaderConfiguredError

ОБНОВЛЕНИЕ В ответ на этот вопрос я переписал Тестирование на физических устройствах Вики-страница Calabash iOS. Ух ты, контент был древний!

person jmoody    schedule 30.09.2015

Пока файл построен с использованием calabash, это не проблема. Вы просто вызываете огурец с APP_BUNDLE_PATH туда, где когда-либо был ваш файл .ipa, и он должен быть полностью настроен.

Но вы должны знать, что .ipa должен быть построен в соответствии с целью, на которой вы запускаете тесты.

person Lasse    schedule 30.09.2015
comment
Спасибо за отзыв. На самом деле я запускаю его с DEVICE_TARGET и BUNDLE_ID вместо APP_BUNDLE_PATH. В любом случае, разве вы не представляете, что, когда я выполняю действие, подобное «прикосновению», приложение вылетает из строя и появляется сообщение об ошибке: текст JSON должен содержать как минимум два октета! (JSON :: ParserError) - person Andy IsMe; 30.09.2015
comment
Энди, кажется, я ответил на твой вопрос. Однако в своем комментарии мне кажется, что вы задаете новый вопрос. Если вы хотите перефразировать свой вопрос, сделайте это. - person Lasse; 30.09.2015