Windows Subsystem for Linux で OpenSTF (Smartphone Test Farm) を動かす

# はじめに

## OpenSTF (Smartphone Test Farm) とは

https://openstf.io/
スマートフォンやタブレットを集中管理し、ブラウザから遠隔操作できるようにするオープンソースソフトウェア。
エミュレータとは違い、物理端末のスクリーンキャプチャを転送する仕組みなので動作を正確に確認できるのが特長です。
スマホアプリやモバイル向けWebページを制作する人の味方。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40622/ad0f84b7-7194-357d-8416-ee751744748a.png)
動かすのに結構苦労したので、誰かの助けになればと思い記事にしていきます。

## 試した環境
- Windows 10 Home 1903
- Linux には Ubuntu 18.04.2 LTS (Bionic Beaver) を使用


# Windows Subsystem for Linux (Ubuntu) の インストール

特にこだわりはなかったので STF の記事が多かった Ubuntu を選択しました。

Windows の機能「Windows Subsystem for Linux」の有効化をして
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40622/1e11a548-9cf7-0cfb-3583-cbf94670760f.png)

Microsoft Store から Ubuntu を探してインストールすればOK。
（バージョンの記載が無いものを選んだら 18.04 が入りました）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40622/ea87c3a9-f9fd-4b03-adf7-65511d5fd1e4.png)

これでもう Ubuntu は使えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40622/36dc9934-aa9a-667e-4151-a4c7a35f671f.png)

バージョンの確認は `cat /etc/os-release` でできます。
Ubuntu への貼り付けは右クリックでできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40622/abf642e2-d7b2-721e-3a6e-0b7b173a4dc4.png)


# RethinkDB のインストール

STF ではデータベースとして RethinkDB を使用するので、先に RethinkDB を入れます。
Linux 上にインストールする方法もあるのですが Linux がわからなすぎてハマりました。
RethinkDB は Windows 上でも動くので、Linux に不慣れな方は Windows 上にインストールするのをお勧めします。
https://www.rethinkdb.com/docs/install/windows/
からダウンロードしてきて
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40622/fe82250f-e2ee-3a65-011e-ceab5d9a1af1.png)
任意のフォルダに展開し、rethinkdb.exe を起動するだけです。
（exeファイルをダブルクリックでも、コマンドプロンプトから実行でもOKです）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40622/74ae4eb1-eb4e-5cbc-8fab-652c4b32f62c.png)
このように表示されれば起動中です。
http://localhost:8080 にアクセスすれば RethinkDBが動いているのを確認できると思います。
Tables や Indexes が 0 でないのは STF をインストール後にスクリーンキャプチャしたためです。
手順通り進めた場合、この段階では 0 で大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40622/828064ee-92ec-8288-0e64-9b611cf4b5be.png)

### rethinkdb がエラーになる/ページがエラーになる場合は？
RethinkDB はポート 8080 を使用します。
他で使用していないか確認し、ある場合は他の設定を解除してから試してみてください
（色々入れてる環境で起きがち…）

# STF に必要な他のアプリと、STF 本体のインストールする

RethinkDB 以外にもいくつかアプリが必要です。
これらは Linux 上にインストールしていきましょう。

以下全部 Linux にコピーして貼り付けて実行、を繰り返せばOK

```
sudo apt-get update
```

```
sudo apt-get -y install npm
```

```
sudo apt-get -y install git android-tools-adb python autoconf automake libtool build-essential ninja-build libzmq3-dev libprotobuf-dev graphicsmagick yasm stow

```

```
#ZeroMQ
mkdir ~/Downloads
cd ~/Downloads
wget http://download.zeromq.org/zeromq-4.1.2.tar.gz
tar -zxvf zeromq-4.1.2.tar.gz
cd zeromq-4.1.2
./configure --without-libsodium --prefix=/usr/local/stow/zeromq-4.1.2
make
sudo make install
cd /usr/local/stow
sudo stow -vv zeromq-4.1.2

```

```
#Google protobuf 10分程度かかる
cd ~/Downloads
git clone https://github.com/google/protobuf.git
cd protobuf
./autogen.sh
./configure --prefix=/usr/local/stow/protobuf-`git rev-parse --short HEAD`
make
sudo make install
cd /usr/local/stow
sudo stow -vv protobuf-*

```

```
#OpenSTF
cd
mkdir openstf
cd openstf/
git clone https://github.com/openstf/stf.git
cd stf
sudo npm install -g stf --unsafe-perm

```

# STF の実行

さきほど書いた手順で RethinkDB を起動しておきます。
起動しておかないと STF が正しく起動しません。
RethinkDB を起動した状態で Ubuntu上 で `stf local` を実行します。（どの階層で実行してもOK）
下のような実行結果になるはず。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40622/342deffb-6ed2-1146-65d7-65a8926f61c2.png)

http://localhost:7100
にアクセスして次のページが表示されれば STF の起動は成功です。

※最初に表示されるログイン画面はただのモックなので何をいれても進めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40622/7c784b4a-dd36-656b-b876-bc19fc3a52f0.png)

# STF 上で端末を操作する

### 端末が認識されない場合

基本的なところの確認はこちらのページがとても詳しくてわかりやすいです。
[[Android] デバッグモードで接続した端末がadb devicesで認識されない場合の対処法](https://webbibouroku.com/Blog/Article/adb-interface-driver-update)

#### Windows Subsystem in Linux 特有の確認ポイント
Windows と Ubuntu で同じバージョンの adb を起動する必要があります。
Ubuntu 上の adb のバージョンは `adb --version` で確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40622/30d5547f-fafe-5a2e-8cd8-f2a028d29554.png)

上の画面だと、1.0.39 です。
このバージョンと同じ adb を探します。
一覧のページが全く見つけられなかったのですが URL でバージョンを直接指定する方法で乗り切れます。

例えば
http://dl.google.com/android/repository/platform-tools_r23.0.1-windows.zip
　→ 1.0.41
http://dl.google.com/android/repository/platform-tools_r21.0.1-windows.zip
　→ 1.0.39

ダウンロードできたら解凍してインストールしてください。
インストールできたら、PowerShell で `adb start-server` します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40622/c2cb644b-1ae8-c391-bdfb-49444b308474.png)

うまくいかないときは、`kill-server` をしてから `start-server` を試してみてください。
また、この操作をすると Linux 上で STF が終了するので、再度 `stf local` を実行して起動しなおしてください。

うまくいけば、STF 上に端末が表示されるはずです。


以上です。おつかれさまでした！

### 参考記事
こちらのお二方の記事を参考にさせていただきました。
http://yakisaba.hatenablog.jp/entry/2018/07/26/103620
https://qiita.com/tanaka512/items/4792931fe08b08441dc7