透過容器在本地端執行Appium測試 === 由於在不同OS裝Appium和其他設定到可以跑[Appium](https://gitlab.pgtalk.com/pgtalk/cicd/appium)專案有許多步驟要做,包含: https://pgtalk.atlassian.net/wiki/spaces/PGTAL/pages/35127297/Appium+on+Ubuntu 或 https://pgtalk.atlassian.net/wiki/spaces/PGTAL/pages/34930708/Appium+on+Windows 及專案內的README以及還有許多路徑需要處理,非常麻煩,為了減少不同平台的環境處理程序,統一將整個需求環境包成一個Image,讓使用者可透過docker(or Containerd)去統一執行在不同的OS,讓使用者可以在不同的OS都能簡單的撰寫BDD測試案例並在本地查看報表 Dockerfile已上傳到gitlab: https://gitlab.pgtalk.com/pgtalk/cicd/pg-qa-env/-/tree/main/docker/pg-appium ## 事前準備 不同的OS需能執行docker和git指令 4723,8883 port不可被佔用 ### Docker安裝 以下提供若乾淨環境沒Docker的裝法 #### Linux 在要使用docker的user下執行 ``` git clone https://gitlab.pgtalk.com/pgtalk/cicd/pg-qa-env.git bash pg-qa-env/scripts/set-sudo-user.sh $(whoami) ``` 完成後重新登入,確認該user可不用密碼使用sudo,然後執行以下 ``` bash pg-qa-env/scripts/docker.sh ``` 安裝完docker後重新登入該user,確認可以不用sudo就能使用docker指令 #### Windows 確認開啟hyperv支援 下載[docker desktop](https://docs.docker.com/desktop/install/windows-install/)並點開 #### Mac ``` /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" brew tap homebrew/cask brew install --cask docker ``` 完成後搜尋docker點開來照著指示安裝docker desktop ## Linux 開啟terminal ``` git clone https://gitlab.pgtalk.com/pgtalk/cicd/appium.git docker run --privileged -d -v $(pwd)/appium:/home/pgtalk/appium --net=host --name pgdev argonhiisi/appium-allure:1.22.3 ``` ## Windows 開啟cmd.exe ``` git clone https://gitlab.pgtalk.com/pgtalk/cicd/appium.git docker network create pgdev-net docker run --privileged -d -v %cd%\appium:/home/pgtalk/appium -p 4723:4723 -p 8883:8883 --network=pgdev-net --name pgdev argonhiisi/appium-allure:1.22.3 ``` ## Mac 開啟terminal ``` git clone https://gitlab.pgtalk.com/pgtalk/cicd/appium.git docker network create pgdev-net docker run --privileged -d -v $(pwd)/appium:/home/pgtalk/appium -p 4723:4723 -p 8883:8883 --network=pgdev-net --name pgdev argonhiisi/appium-allure:1.22.3 ``` ## 常用adb操作 以下皆在container內執行,要執行bdd測試前至少需要連線其中一台機器,以該台機器進行測試 進入container(或直接用docker desktop進入) ``` docker exec -ti pgdev bash ``` 目前提供的模擬器列表: http://192.168.31.10:8090/main/AUTOTASKS.html 或是開 http://192.168.31.120:8000 點H264_Converter可看模擬器畫面 ### 模擬器連線 ``` adb connect 192.168.31.120:5555 ``` ### 察看所有連線機器 ``` adb devices ``` ### 刪除pgtalk ``` adb -s 192.168.31.120:5555 uninstall com.fbs.im.pgTalk ``` ### 安裝pgtalk 先將apk放到local的appium底下,pgtalk_apk為該apk檔案名稱 ``` adb -s 192.168.31.120:5555 install $pgtalk_apk ``` ### 用wifi連線本地真機 先將真機連接本身有adb的電腦,先執行以下確認該裝置有連線,連線後需要手機點選同意或允許連線,若沒出現需要手機開啟debug,連線後正常會是顯示一段英文字 ``` adb devices ``` 取得該裝置wifi ip ``` adb -s 裝置名稱 shell ip -f inet addr show wlan0 ``` 開啟手機TCP模式,允許用port存取,port號自訂 ``` adb -s 裝置名稱 tcpip 自訂port ``` 都做完後便可在容器內連線該真機,不過手機wifi需要跟本機同網段或是可相通 ``` adb connect $wifi_ip:自訂port ``` ## 測試Testcase 在container內執行以下 先看網卡名稱並記下 ``` ip a ``` 執行以下執行testcase d為device v為安卓版本 a為pgtalk帳號 p為pgtalk密碼 i為網卡名稱 t為testcase資料夾名稱 如果是windows或mac,則網卡名固定為lo,測試過程中可開模擬器畫面看正不正常 ### Windows前置處理 ``` cd features apt install -y dos2unix dos2unix -k -o *.sh cd ../settings dos2unix -k -o *.sh ``` ### ALL OS 跑BDD結果出報表 ``` cd features ./test_case.sh -d 192.168.31.120:5555 -v 11 -a 0966000111 -p pgtalk6666 -i lo -t main-playgame-pay-pgp ``` 單純測試yaml哪邊有問題,f為要測試的yaml檔 ``` cd settings ./auto.sh -d 192.168.31.120:5555 -v 11 -a 0966000111 -p pgtalk6666 -i lo -f demo.yaml ``` ## 本地端察看Report ### Linux ``` ./gen_report.sh 0.0.0.0 ``` ### Windows/Mac 先用docker看container的ip,以此為例,ip為172.18.0.2 ``` docker network inspect pgdev-net "Containers": { "e2e621bac9a47d1936de5875ce5c7027fecf576c3fc48a0cf78e785ae76e5d53": { "Name": "pgdev", "EndpointID": "defabc3c5c1edb51db6c7846741da9ff358dcb1bfb739494a952949a0777c035", "MacAddress": "02:42:ac:12:00:02", "IPv4Address": "172.18.0.2/16", "IPv6Address": "" } ``` 進入container ``` docker exec -ti pgdev bash ``` 執行 ``` cd features ./gen_report.sh 172.18.0.2 ``` 瀏覽器開啟http://本地ip:8883 或 http://localhost:8883
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up