iOSでAirtestを動かしてみる

# はじめに
AirtestIDE でスマホアプリ（ゲーム）のテスト自動化をしています。そこで実際に作成したスクリプトや環境をつくるために実施したことを綴ってみたいと思います。

※続編[「【続】iOSでAirtestを動かす」](https://qiita.com/s_noza/items/518d4ee28490c25d95b7)にて情報更新しております。あわせてご覧ください

# 参考
こちらのドキュメンを参考にして AirtestIDEから iOSに接続、テストスクリプトの実行までを行う環境を構築しました。
Airtest Project Docs　- 2.4 iOS device connection / 2.4.3 Deployment process -
https://airtest.doc.io.netease.com/en/IDEdocs/device_connection/4_ios_connection/
※AirtestIDEの右下にある「？」アイコンから飛べます
<img width="70%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/ec942f3f-ac7d-224f-572d-d1bb9adc077f.png">

# 環境
macOS 10.15.7
Xcode 11.6
Airtest IDE 1.2.6（Python）
iPhone XS（iOS 12.0）

# セットアップ
## Step1　iOS-Tagent
iOS-Tagent をクローンします。

```
$ git clone https://github.com/AirtestProject/iOS-Tagent.git
```
Xcodeで開きます。
![スクリーンショット 2020-12-03 17.23.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/48e6e749-dc66-1ae6-de82-87f9b0875634.png)
WebDriverAgentを選択します。ここでPCに実機を接続してから、端末の選択を開きます。（ここでは「iPhone SE (2nd generatio)」となっている箇所）
![スクリーンショット 2020-12-03 17.33.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/b4c3d541-317b-a39c-7f4d-6532778f4a44.png)
PCに接続した実機を、選択します。
![スクリーンショット 2020-12-03 17.34.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/52d1966c-d492-b988-47bf-df79b3ecd43a.png)
とりあえず、動かしてみます。
<img width="60%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/c80ca64e-e859-a82b-ea8e-7ab47f0e7fca.png">
ワーニングを順次解消していきます。
まず、ターゲットビルドを実行する端末のiOSバージョンにあわせます。
![スクリーンショット 2020-12-03 17.40.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/d4cb6ff7-b18f-669f-92b0-a4050f0a6ccf.png)
![スクリーンショット 2020-12-03 17.40.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/c79247bb-9384-fd1d-83a3-66efe9a261a0.png)
![スクリーンショット 2020-12-03 17.41.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/59fa1ba6-71b4-4f70-01ad-fcbbb0857dae.png)
WebDriverAgentRunner にて、Teamを選択します。（無い場合は AppleIDから作成）
![スクリーンショット 2020-12-03 17.50.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/95e176df-aed4-7471-3e95-bae3e7431aa2.png)

Product Bundle Identiferを設定します。（ユニークな文字列にする）
![スクリーンショット 2020-12-03 17.54.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/b90a37cd-61c4-59cf-c975-3ebda45716de.png)

再度、ビルドします。
<img width="70%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/fbc56ccf-bdb0-7cf2-c24e-0f5f6f8a2608.png">

WebDriverAgentRunner がビルドされます。ここで、「設定」アイコンをタップします。
<img width="40%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/063535a6-1a72-2db0-0ab8-272e2d8231de.jpeg">

設定から「一般」をタップします。
<img width="40%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/cbab5856-b6b5-ac24-36c9-37a5a053d5e3.jpeg">

「プロファイルとデバイス管理」をタップします。
<img width="40%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/2be52291-98aa-a9da-b377-11216c8efdb0.jpeg">

WebDriverAgentRunner のデベロッパを信頼します。
<img width="40%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/645d655f-f4e4-de8d-4f83-eb7af8ae869b.jpeg">

<img width="40%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/ef7e03f3-46fb-e6c7-d961-a7ae0b30f24d.jpeg">

再度実行します。
![スクリーンショット 2020-12-03 18.22.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/90c6f8e5-0fdd-9c1d-64e6-72eac3aba060.png)


## Step2　Set Ploxy
iproxyをインストールします。

```
$ brew install libimobiledevice
```
iproxyを実行します。

```
$ iproxy 8100 8100
```

```
Creating listening port 8100 for device port 8100
waiting for connection
```

## Step3　AirtestIDE
接続情報を入力して「Connect」ボタンをクリックします。
<img width="70%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/f394d32e-6ab6-bcb4-99d7-7bc2eafa1a2a.png">

iOS端末に接続されます。これでAirtestのスクリプトを実行することができるようになりました。
![スクリーンショット 2020-12-04 13.18.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542670/b689d7a2-c634-461b-f36b-691b9f10ad35.png)

# はまりポイント
いくつかはまりポイントがあったので共有。
### Xcode12だと iOS-Tagent が動かない
最新の Xcode12 だと動かない。Xcode11にて解決。
おなじような情報がありました。
https://github.com/AirtestProject/iOS-Tagent/issues/182
### iOS端末側のアプリが起動しない
信頼しないといけない。
### AirtestIDEが 横向きのアプリに対応していない
~~いまのところ対処法がなさそうでして、AirtestIDEの改修に期待したいとおもいます。~~
[＊iOS-Tagent を Appiumの提供する WebDriverAgent に置き換えることで解決しました。](https://qiita.com/s_noza/items/518d4ee28490c25d95b7#step1webdriveragent)

# おわりに
参考になった箇所などありましたでしょうか。実際にiOS端末でAirtestIDEを試そうとした際に、いくつか試行錯誤したことがありましたので、何かのお役に立てたなら幸いです。