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


はじめに


OpenSTF (Smartphone Test Farm) とは

https://openstf.io/

スマートフォンやタブレットを集中管理し、ブラウザから遠隔操作できるようにするオープンソースソフトウェア。

エミュレータとは違い、物理端末のスクリーンキャプチャを転送する仕組みなので動作を正確に確認できるのが特長です。

スマホアプリやモバイル向けWebページを制作する人の味方。

image.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

Microsoft Store から Ubuntu を探してインストールすればOK。

(バージョンの記載が無いものを選んだら 18.04 が入りました)

image.png

これでもう Ubuntu は使えます。

image.png

バージョンの確認は cat /etc/os-release でできます。

Ubuntu への貼り付けは右クリックでできます。

image.png


RethinkDB のインストール

STF ではデータベースとして RethinkDB を使用するので、先に RethinkDB を入れます。

Linux 上にインストールする方法もあるのですが Linux がわからなすぎてハマりました。

RethinkDB は Windows 上でも動くので、Linux に不慣れな方は Windows 上にインストールするのをお勧めします。

https://www.rethinkdb.com/docs/install/windows/

からダウンロードしてきて

image.png

任意のフォルダに展開し、rethinkdb.exe を起動するだけです。

(exeファイルをダブルクリックでも、コマンドプロンプトから実行でもOKです)

image.png

このように表示されれば起動中です。

http://localhost:8080 にアクセスすれば RethinkDBが動いているのを確認できると思います。

Tables や Indexes が 0 でないのは STF をインストール後にスクリーンキャプチャしたためです。

手順通り進めた場合、この段階では 0 で大丈夫です。

image.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

http://localhost:7100

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

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

image.png


STF 上で端末を操作する


端末が認識されない場合

基本的なところの確認はこちらのページがとても詳しくてわかりやすいです。

[Android] デバッグモードで接続した端末がadb devicesで認識されない場合の対処法


Windows Subsystem in Linux 特有の確認ポイント

Windows と Ubuntu で同じバージョンの adb を起動する必要があります。

Ubuntu 上の adb のバージョンは adb --version で確認できます。

image.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

うまくいかないときは、kill-server をしてから start-server を試してみてください。

また、この操作をすると Linux 上で STF が終了するので、再度 stf local を実行して起動しなおしてください。

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

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


参考記事

こちらのお二方の記事を参考にさせていただきました。

http://yakisaba.hatenablog.jp/entry/2018/07/26/103620

https://qiita.com/tanaka512/items/4792931fe08b08441dc7