Mac
今回は、Apple M1 chip のmacを用いて
Ventura 13.3.1 にて構築した
Java
Javaは最新の20を用いた
M1なので、ARM64 DMG Installerを使用する
次に、JAVAのPATH周りを設定する
macのdefault shellがzshなので、.zshrcを編集する
vi .zshrc
---
export JAVA_HOME=JAVA_HOME=$(/usr/libexec/java_home)
---
% java -version
java version "20.0.1" 2023-04-18
Java(TM) SE Runtime Environment (build 20.0.1+9-29)
Java HotSpot(TM) 64-Bit Server VM (build 20.0.1+9-29, mixed mode, sharing)
Android Studio
Androidのテストを行う場合、必須
今回、 Android Studio Flamingo | 2022.2.1 Patch 2 をインストールした。
基本的にデフォルトのインストールで問題ない。(開発ツール含む)
インストール後、PATHの設定が必要となる。
PATHの情報は、Tools -> SDK Manager をopenし、SDK Locationを取得する。
これより、 ANDROID_HOME の場所を設定する
vi .zshrc
---
export ANDROID_HOME=/Users/USERNAME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools
---
Xcode
iOSのテストをするときは必須
XcodeはVersion 14.3 (14E222b)を利用する
command lineで利用可能にする
xcode-select --install
対象のXcodeを指定する(基本的に、デフォルトで良いが、複数versionをinstallしている場合、
明示的に指定する
sudo xcode-select --switch /Applications/Xcode.app
brew
package管理のツールをインストールする。
以下コマンドでinstallする
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brewのPATHを設定する
zshを使用しているので、以下コマンドで設定ファイルに書きこみ
echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> ~/.zshrc
最後にversionを確認する
% brew -v
Homebrew 4.0.19
npm
javascript系package管理ツールをinstallする
appiumのinstall時に必要である。
nodebrew 最新版をインストールする
brew install nodebrew
/opt/homebrew/opt/nodebrew/bin/nodebrew setup_dirs
nodebrew install-binary latest
npmのversionを指定する
今回、v20.5.1であったので、このversionを指定する
nodebrew use v20.5.1
すると、currentのpathが設定される
ls -l ~/.nodebrew
lrwxr-xr-x 1 ospdqa staff 36 Aug 17 08:56 current -> /Users/ospdqa/.nodebrew/node/v20.5.1
drwxr-xr-x 3 ospdqa staff 96 Aug 17 08:52 default
drwxr-xr-x 2 ospdqa staff 64 Aug 17 08:52 iojs
drwxr-xr-x 3 ospdqa staff 96 Aug 17 08:52 node
drwxr-xr-x 3 ospdqa staff 96 Aug 17 08:52 src
pathを設定する
.zshrc
export PATH=$HOME/.nodebrew/current/bin:$PATH
最後に初期化をする
npm init
reference###
versionを指定する場合、以下のように可能versionをlistupして対象のverionをinstallすることも可能
% nodebrew ls-remote
v19.0.0 v19.0.1 v19.1.0 v19.2.0 v19.3.0 v19.4.0 v19.5.0 v19.6.0
v19.6.1 v19.7.0 v19.8.0 v19.8.1 v19.9.0
v20.0.0 v20.1.0 v20.2.0
nodebrew install v20.2.0
nodebrew use v20.2.0
Carthage
iOS library 管理ツールをinstallする
brew install carthage
Appium
今回は将来性を考えて、appium2を使用する
尚、今現在appium desktopに関してはsupportが終了していた。
https://github.com/appium/appium-desktop/releases
以下の方法でインストールする
npm i --location=global appium
appiumの設定確認をするdoctorをインストール
npm install appium-doctor -g
appium inspectorは以下よりdmgをdownloadしてインストールする
それを回避するために、以下コマンドを実行する
xattr -cr "/Applications/Appium Inspector.app"
optionl library
appium-doctorを実行し、環境構築が十分かを確認する。
最低限necessaryに関する設定は完了させる。
optionalに関して、一部構築が完了していないものが表示される。
これは、必要に応じてインストールする必要がある。
ここでは、optionalのインストールに関して記述する
appium-doctor
opencv4nodejs
opencvをinstallする
brew install opencv@4
brew link --force opencv@4
次に環境設定をする
.zshrc
export OPENCV4NODEJS_DISABLE_AUTOBUILD=1
export OPENCV_HOME=/opt/homebrew/Cellar/opencv/4.7.0_4/
export OPENCV_LIB_DIR=${OPENCV_HOME}/lib
export OPENCV_BIN_DIR=${OPENCV_HOME}/bin
export OPENCV_INCLUDE_DIR=${OPENCV_HOME}/include/opencv4
尚、OPENCV_HOMEはインストールされたversionのpathを設定する
設定後、以下を実行し、opencv4nodejsをインストールする
npm install -g opencv4nodejs
mjpeg-consumer
npm install -g mjpeg-consumer
set-simulator-location
brew install lyft/formulae/set-simulator-location
idb
install idb companion
brew tap facebook/fb
brew install idb-companion
install idb-client
pip3.11 install fb-idb
applesimutils
brew tap wix/brew
brew install applesimutils
ios-deploy
brew install ios-deploy
bundletool.jar
以下より、bundletool.jar最新版をdownloadする
bundletool.jarをandroid sdk配下に設置する
mkdir ~/Library/Android/sdk/bundle-tool
cp ~/Downloads/bundletool-all-1.15.1.jar ~/Library/Android/sdk/bundle-tool/bundletool.jar
chmod +x ~/Library/Android/sdk/bundle-tool/bundletool.jar
最後に、bundletool.jarのpathを指定する
.zshrc
export PATH=${PATH}:${ANDROID_HOME}/bundle-tool
Appium Driver
uiautomator2
AndroidのためのDriver
appium driver install uiautomator2
chrome driver (waiting for bug fix)
appium driver install chromium
今現在、installで問題が起きてみたいだ・・・
https://github.com/appium/appium/issues/18006
xcuitest
iOSのためのDriver
appium driver install xcuitest
Device Setting
iPhoneでテストできる設定が必要
Enabling Developer Mode on a device
Enabling Web Inspector
xcuitest setting
iOSのテストを行うとき、xcuitestを使用する。
defaultだと、xbuildが失敗する
xbuildを実行した時のエラーメッセージ。(appium inspectorで接続するときも、同様のエラーを出す)
Testing failed:
Signing for "WebDriverAgentRunner" requires a development team. Select a development team in the Signing & Capabilities editor.
Testing cancelled because the build failed.
これは、signingが正しく設定されてないため、発生する。
まず、appium2のxcuitestのsourceの場所を確認する(1.xとはpathが異なる)
以下の場所にあると思う。
cd ~/.appium/node_modules/appium-xcuitest-driver
次に、そこにあるWebDriverAgent.xcodeprojをxcodeで開く
buildを実行すると、警告画面になる
主に2点
-WebDriverAgent
-WebDriverAgentRunner
Signing & Capabilities にて、Add Accountを選択する
このとき、apple developer accountでログインし、profileをダウンロード設定する。
このエラー対応後、command lineでxbuild でテストする
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=$UDID' test
※$UDID は接続するiPhoneのUDID
成功すると、iphoneで以下のように、「Automation Running」のmessageが表示される
起動確認
appiumを実行する
appium
portなどoptionを指定したい場合、helpを参照
% appium -help
usage: appium server [-h] [--address ADDRESS] [--allow-cors] [--allow-insecure ALLOW_INSECURE] [--base-path BASE_PATH] [--callback-address CALLBACK_ADDRESS]
[--callback-port CALLBACK_PORT] [--debug-log-spacing] [--default-capabilities DEFAULT_CAPABILITIES] [--deny-insecure DENY_INSECURE]
[--keep-alive-timeout KEEP_ALIVE_TIMEOUT] [--local-timezone] [--log LOG] [--log-filters LOG_FILTERS] [--log-level LOG_LEVEL]
[--log-no-colors] [--log-timestamp] [--long-stacktrace] [--no-perms-check] [--nodeconfig NODECONFIG] [--port PORT] [--relaxed-security]
[--session-override] [--strict-caps] [--tmp TMP] [--trace-dir TRACE_DIR] [--use-drivers USE_DRIVERS] [--use-plugins USE_PLUGINS]
[--webhook WEBHOOK] [--driver-xcuitest-webdriveragent-port WEBDRIVERAGENT_PORT] [--shell] [--show-build-info] [--show-config]
[--config CONFIGFILE]
inspectorで起動確認
Case1 Android APP
capabilitiesの例は以下の通り
Parameter | note |
---|---|
platformName | android |
appium:deviceName | device name |
appium:udid | device UDID |
appium:platformVersion | android version |
appium:appPackage | app package name |
appium:autoGrantPermissions | true |
appium:automationName | UIAutomator2 |
appium:app | apk file path |
Case2 iOS APP
Parameter | note |
---|---|
platformName | iOS |
appium:deviceName | device name |
appium:udid | device UDID |
appium:platformVersion | iOS version |
appium:appPackage | app package name |
appium:autoGrantPermissions | true |
appium:automationName | XCUITest |
appium:app | ipa file path |
Case3 iOS Safari
Parameter | note |
---|---|
platformName | iOS |
appium:deviceName | device name |
appium:udid | device UDID |
appium:platformVersion | iOS version |
appium:autoGrantPermissions | true |
appium:automationName | XCUITest |
browserName | Safari |
うまく設定ができていれば、以下のようにdeviceの情報を取得できる