Bitriseでオーディオ再生をテストする(iOS)

趣味で音楽プレーヤーアプリを作り始めたのでBitriseをセットアップしました。
初回テストを兼ねて最初にオーディオを再生する簡素なコードとテストを書いてCIを動かしたところテストが失敗しました。 (もちろんローカル環境でのテストはパスしている状態です。)

エラーログは下記の通り。

[AudioHAL_Client] AudioHardware.cpp:875:AudioObjectAddPropertyListenerBlock:  AudioObjectAddPropertyListenerBlock: no object with given ID 0
[AudioHAL_Client] AudioHardware.cpp:875:AudioObjectAddPropertyListenerBlock:  AudioObjectAddPropertyListenerBlock: no object with given ID 0
[DDAgg] DefaultDeviceAggregate.cpp:737:BuildAggregate: Error finding valid input or output devices!
[AudioHAL_Client] AudioHardware.cpp:2682:AudioDeviceStop:  AudioDeviceStop: no device with given ID
[aqme] 318: error -66680 finding/initializing AQDefaultDevice
[aurioc] 918: failed: -10851 (enable 2, outf< 2 ch,  44100 Hz, Int16, inter> inf< 2 ch,      0 Hz, Int16, inter>)
[AudioHAL_Client] AudioHardware.cpp:2682:AudioDeviceStop:  AudioDeviceStop: no device with given ID
[aqme] 318: error -66680 finding/initializing AQDefaultDevice
108: * * * NULL AQIONode object
771: Can't make UISound Renderer

有効な入出力デバイスが見つからないと言っていますね。 Bitriseでオーディオ再生を伴うテストをする場合、audio input/output deviceを作る必要があるみたいです。

オーディオデバイスを作成する手順

Homebrewでインストールすることができます。

  1. WorkflowにScript stepを追加
  2. Script contentを記入
#!/usr/bin/env bash
set -ex
brew install Caskroom/cask/soundflower
brew install switchaudio-osx
SwitchAudioSource -s "Soundflower (2ch)" -t input
SwitchAudioSource -s "Soundflower (2ch)" -t output

f:id:tid-a24:20180124053334p:plain

この状態でリビルドすると失敗していたテストケースが全て成功するようになりました。

参考

discuss.bitrise.io