No se pueden ejecutar testings de Calabash en el dispositivo iOS para la aplicación Xamarin.

No podemos hacer que las testings de Calabash se ejecuten en una aplicación de Xamarin desplegada en un iPhone real. Hemos intentado download la aplicación de muestra de:

http://developer.xamarin.com/guides/testcloud/calabash/introduction-to-calabash/

Funciona al desplegarse en un simulador, pero no cuando se trata de un dispositivo real. Podemos instalar y ejecutar en el dispositivo, simplemente no hacerlo funcionar con Calabash.

El command con el que tratamos de ejecutarlo es:

APP_BUNDLE_PATH=~/Path/to/CnetworkingitCardValidation-Calabash/CnetworkingitCardValidation.iOS/bin/iPhone/Debug/CnetworkingitCardValidationiOS-1.0.ipa DEBUG=1 BUNDLE_ID=com.xamarin.calabash.example.cnetworkingitcardvalidation DEVICE_TARGET=uuid-of-device DEVICE_ENDPOINT=http://ip.of.phone:37265 RESET_BETWEEN_SCENARIOS=1 cucumber 

La salida de lo anterior es:

 Using the iOS profile... Feature: Navigation feature @ios_only Scenario: A user can navigate between each journey stage # features/navigation.feature:4 INFO: Using uia strategy: 'preferences' Preparation took 0.087536 seconds { :app => "<snip>", :args => [], :bundle_dir_or_bundle_id => "<snip>", :bundle_id => "<snip>", :device => "<snip>", :device_target => "<device-uuid>", :launch_method => :instruments, :launch_retries => 5, :log_file => "/var/folders/w1/55hzwq792vqdrv8bgw69yvy40000gp/T/run_loop20141107-1711-1whcn00/run_loop.out", :no_launch => false, :no_stop => false, :reset => true, :results_dir => "/var/folders/w1/55hzwq792vqdrv8bgw69yvy40000gp/T/run_loop20141107-1711-1whcn00", :results_dir_trace => "/var/folders/w1/55hzwq792vqdrv8bgw69yvy40000gp/T/run_loop20141107-1711-1whcn00/trace", :script => "/var/folders/w1/55hzwq792vqdrv8bgw69yvy40000gp/T/run_loop20141107-1711-1whcn00/_run_loop.js", :sdk_version => nil, :udid => "<device-uuid>", :uia_strategy => :preferences, :xcode => "6.0.1", :xcode_path => "/Applications/Xcode.app/Contents/Developer" } ### Starting on <device-uuid> App: <snip> ### 2014-11-07 11:21:38 +0000 xcrun instruments -w "<device-uuid>" -D "/var/folders/w1/55hzwq792vqdrv8bgw69yvy40000gp/T/run_loop20141107-1711-1whcn00/trace" -t "Automation" "<snip>" -e UIARESULTSPATH /var/folders/w1/55hzwq792vqdrv8bgw69yvy40000gp/T/run_loop20141107-1711-1whcn00 -e UIASCRIPT /var/folders/w1/55hzwq792vqdrv8bgw69yvy40000gp/T/run_loop20141107-1711-1whcn00/_run_loop.js &> /var/folders/w1/55hzwq792vqdrv8bgw69yvy40000gp/T/run_loop20141107-1711-1whcn00/run_loop.out Failed to launch. execution expinetworking: execution expinetworking Running `curl http://ip.of.phone:37265/version` returns the expected json. 

¿Puedes verificar lo siguiente?

  1. Conecte el dispositivo a través de USB.
  2. Asegúrese de que el identificador del package coincida con el identificador del package de la aplicación.
  3. ¿Aparece el dispositivo en la salida de los xcrun instruments -s devices ? Si no, verifique la window Dispositivo de Xcode (Comando + Mayús + 2). Asegúrese de que el dispositivo figura en la list y aparece sin advertencias. Si aparece con errores, salga de Xcode, reinicie el dispositivo, reinicie Xcode. Enjuague y repita hasta que se borren los errores. En algún momento tengo que conectar mi dispositivo a otra máquina para borrar las advertencias.
  4. ¿La aplicación está instalada en el dispositivo? Calabash no puede instalar aplicaciones en dispositivos físicos. Vea este proyecto para una demostración de cómo usar ideviceinstaller para instalar una aplicación en el dispositivo como parte de las testings de Calabash. Agregué un TODO para mejorar README.md para ese proyecto.

APP_BUNDLE_PATH = ~ / Path / to / CnetworkingitCardValidation-Calabash / CnetworkingitCardValidation.iOS / bin / iPhone / Debug / CnetworkingitCardValidationiOS-1.0.ipa

Las variables de entorno APP (preferido) y APP_BUNDLE_PATH solo se utilizan cuando se dirigen simuladores. Se ignoran cuando se dirigen a dispositivos físicos.