AppiumでAndroidアプリを自動テストする用の環境作成

# はじめに
まとまっているところがなかったので作成しました。
自分用備忘録兼ねてます。

## 使用技術
macでの開発を想定しています。
zsh使用してるので、bashの方は適宜読み替えてください。
### Main（必須）
- Xcode
- Homebrew：性質的にはsubだけどないと始まらないのでmainに入れてます
- Ruby
- Node.js
- Java
- Android Studio
- Appium
- WebdriverIO

### js fremework
- mocha + chai

### Sub
- enyenv：env系管理
- rbenv：ruby管理
- nodenv：node管理
- jenv：java管理

## 環境作成
### -- First Step --
#### 001 Xcode install
AppStoreから。App版のテストで必要なのと、Homebrew入れるのにどうせ必要なので入ってない方はこの瞬間入れてください。結構時間かかります。
入れ終えたら一度起動して`Xcode Command Line Tools`をinstallしておきます。
#### 002 Homebrew install
最新のスクリプトを
https://brew.sh/index_ja
からコピーしてください。  
下記は2019.11.11時点のもの。

```
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
ターミナルで実行。
出てきた文言に従いましょう。

### -- Second Step --
各言語のversion固定で変更しないとかだと要らないStep。
アップデート追従がとても大変なので入れておいたほうがいいでしょう。  
ここを飛ばす場合は、

- ruby 2.5.0
- node 12.10.0
- java 1.8.0

を適宜入れてください。

#### 003 anyenv install
```
$ brew install anyenv
$ anyenv install --init
$ echo 'eval "$(anyenv init -)"' >> ~/.zshrc
$ anyenv init
```
#### 004 rbenv install
```
$ anyenv install rbenv
$ (exec $SHELL -l)
$ rbenv install -v 2.5.0
$ gem install bundler
```

#### 005 nodenv install
```
$ anyenv install nodenv
$ (exec $SHELL -l)
$ nodenv install -v 12.10.0
```

#### 006 jenv install
AppiumにはJava8が必要です。
コマンドでJavaをインストールするなら以下のコマンドになります。
ライセンスの絡みがあるので詳しくは調べてください。

```
brew cask install adoptopenjdk/openjdk/adoptopenjdk8
```
※Javaは色々プロジェクトあるみたいなんですけどどっちがどうとかはわからないです。。。  
  
ライセンス的にjenv経由ではインストールができません。インストールされているJavaの管理のみになります。

```
$ anyenv install jenv
$ (exec $SHELL -l)
$ jenv add $(/usr/libexec/java_home -v 1.8)
```

### -- Third Step --
#### 007 Android Studio install

```
$ brew cask install android-studio
```

install後、起動して適当なプロジェクト作成してSDKとgradleを入れておきます。

#### 008 Add PATH
.zshrcに追加します。
ANDROID_HOMEは各機の環境に差し替えてください。

```
# ANDROID_HOMEの設定
export ANDROID_HOME=/Users/User名/Library/Android/sdk
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

# JAVA_HOMEの設定
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=${PATH}:$JAVA_HOME/bin

### etc...
PATH=$PATH:/usr/sbin
```

#### 009 Appium install
AppiumとAppiumのチェック用のappium-doctorをglobalにinstallします。

```
npm install -g appium appium-doctor
```

#### 010 Add etc...
Appiumで必要なもの色々。
cmakeが初期では入ってないので入れてます。

```
brew install cmake
```
globalに各種入れていきます。  
opencv4nodejsはインストールに時間がかかります。  
※画像処理に関する様々なアルゴリズムが簡単に使えるオープンソースライブラリ

```
npm i -g opencv4nodejs
```
※動画や音声を加工するツール

```
brew install ffmpeg
```
※動画圧縮の形式

```
npm i -g mjpeg-consumer
```
wgetが初期ではないので追加します。

```
brew install wget
```
※Androidアプリバンドルを操作するためのツール

```
$ mkdir ~/bin/
$ cd ~/bin/
$ wget https://github.com/google/bundletool/releases/download/0.10.3/bundletool-all-0.10.3.jar
$ ln -s bundletool-all-0.10.3.jar bundletool.jar
$ chmod a+x bundletool-all-0.10.3.jar
```
PATH追加

```
# bundletoolの設定
export PATH="$PATH:$HOME/bin/"
```

#### 011 check appium-doctor
```
appium-doctor --android
```
オールグリーン「Everything looks good, bye!」が出たらOK。
出なかったときは**頑張って**

### -- Fourth Step --
このstepはなくても動きます。
#### 012 download standalone appium
http://appium.io/
公式よりスタンドアロン型のAppiumも落としてきます。
なにかと便利なので。
  
Edit CongigurationsよりANDROID_HOMEとJAVA_HOMEの設定をお忘れなく。
スタンドアロンは自身の設定を見ます。

### -- Fifth Step --
テストプロジェクトの作成をします。
前提として

- 実機テスト
- テスト対象アプリは実機にインストール済み
- 実機は開発者モード + USBデバッグON

とします。

#### 013 create project folder
好きな場所に作ったあと`cd`でそのフォルダに入ってください。  
以下例。

```
mkdir /projects/test-sample/
cd /projects/test-sample/
```

#### 014 webdriverio install
```
$ npm init
$ npm install --save-dev webdriverio
$ npm install @wdio/cli
```

#### 015 create config
```
$ npx wdio config
```

環境作成おわり。

### おわりに
気力が湧いてきたらプロジェクト設定やらテストやらも書きます。
つかれたよー。