問題の一般的な説明:
プロジェクト固有のため ( iDevice は Lightning ポート経由で外部ハードウェアに接続する必要があります)、Wi-Fi 経由で一連のテストを実行する必要があります。
Yosemite 10.10.2 がテスト実行用のクライアントとして動作する専用の Macbook Pro (early 2011) があります。Mac と iDevice の両方が同じ隔離された ( 1 つの Mac と 1 つの iDevice のみ) Wi-Fi アクセス ポイント (インターネットへのアクセスなし) に接続されています。
既存のテストのすべてのスイート (〜 150 テスト) を実行しようとするたびに、ランダムな時点(つまり、その時点までにいくつかのテストが既に実行されている) で、Calabash サーバーを使用したアプリケーションが視覚的に起動されるという事実に直面しています。 iDevice側ではコマンドラインの観点から見ると、サーバーは正常に起動したMacクライアントに応答していないようで(私の仮定です)、この時点で実行全体がスタックします。"Ctrl+C" を介してテストの実行をドロップし、再度実行を開始するか、コンソールを介して start_test_server_in_background を実行しようとすると、アプリケーション サーバーが何度も開始され、新しい安定したアプリケーション サーバーを確立できずにすぐに閉じられることがわかります。
ここでの唯一の回避策は、iDevice を再起動し、再起動後に USB 経由で接続された iDevice で App サーバーを起動することです。そうしないと、Wi-Fi 経由で Calabash テストを再度実行できません。
さまざまな iDevice とさまざまな Wi-Fi アクセス ポイント、およびいくつかの Mac で試してみましたが、すべてのテストで 1 回の安定した途切れのない実行を行うことができませんでした。
誰かがこの信じられないほど厄介な問題を解決するのを手伝ってくれたら、とてもうれしいです。
いくつかの詳細:
- iOS バージョン: 8.1.3、8.2
- XCode バージョン: 6.2
- Mac OS バージョン: 10.10.2
- Xcode パス: /Applications/Xcode.app/Contents/Developer
- ひょうたんバージョン: 0.13.0 (および 0.14.0)
- calabash.framework バージョン: 0.13.0 (および 0.14.0)
- 「ハング」が発生したときのコンソール出力 (DEBUG=1) は次のとおりです。
@test
Scenario: [12657] Scenario Name # features/2_feature_name.feature:87
INFO: Using uia strategy: 'host'
Preparation took 0.099263 seconds
{
:app => "com.xxx.one",
:args => [],
:bundle_dir_or_bundle_id => "com.xxx.one",
:bundle_id => "com.xxx.one",
:device => "com.xxx.one",
:device_target => "00fea94be88909c74aa7b68a2b7f3f339407163b",
:launch_method => :instruments,
:launch_retries => 5,
:log_file => "/var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1/run_loop.out",
:no_launch => false,
:no_stop => false,
:reset => false,
:results_dir => "/var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1",
:results_dir_trace => "/var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1/trace",
:script => "/var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1/_run_loop.js",
:sdk_version => nil,
:udid => "00fea94be88909c74aa7b68a2b7f3f339407163b",
:uia_strategy => :host,
:xcode => "6.2",
:xcode_path => "/Applications/Xcode.app/Contents/Developer"
}
### Starting on 00fea94be88909c74aa7b68a2b7f3f339407163b App: com.xxx.one ###
2015-04-08 12:38:22 +0300 xcrun instruments -w 00fea94be88909c74aa7b68a2b7f3f339407163b -D /var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1/trace -t Automation com.dxo.one -e UIARESULTSPATH /var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1 -e UIASCRIPT /var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1/_run_loop.js >& /var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1/run_loop.out
更新:アプリケーションが動かなくなった後にアプリケーションを再起動できない場合に、ひょうたんがターミナルに出力する内容は次のとおりです。
Calabash::Cucumber::Launcher::StartError: Time out waiting for UIAutomation run-loop Error while writing to fifo. RunLoop::Fifo::NoReaderConfiguredError.
Logfile /var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150422-35789-1mgrom1/run_loop.out
2015-04-22 11:03:41.649 instruments[35913:114217] WebKit Threading Violation - initial use of WebKit from a secondary thread.
Instruments Trace Error : Target failed to run: Failed looking up pid of launched process
(Calabash::Cucumber::Launcher::StartError)
/Users/wrathttodd/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/calabash-cucumber-0.14.0/lib/calabash-cucumber/launcher.rb:772:in `new_run_loop'
/Users/wrathttodd/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/calabash-cucumber-0.14.0/lib/calabash-cucumber/launcher.rb:630:in `relaunch'
/Users/wrathttodd/APP NAME/PATH/AAT/features/support/01_launch.rb:27:in `Before'