魔改
有鑑於以上種種困難 , 正規手法也不行啦 , 要走點邪道
Espresso 要測要用 android studio , 可是 ionic build 出來不是正規的
那就補東西讓它是正常的
具體來說 , 就是改 platform/android/app/ 底下的 build.gradle
把測試相關的依賴補進去 , 詳細參考 Espresso 文件
然後在 /app/src 內補上 androidTest/xx/aa..../test.?
test.? 隨便命名 , ? 是 kt 或 java
xx 是 kotlin 或 java 二選一 , 要跟 test.? 的副檔名一樣
aa.... 請比照 /app/src/main/xx/ 下的目錄 , 取一樣的目錄名
在最後的目錄內的檔案 , 就是 test.?
這樣 platform 下的 android 用 android studio 開啟 , 就是正規的專案結構
接著在 test.? 右鍵執行測試 , 測試完 platform/android/app/build/output 內
會有 App Center 需要的兩個 apk 檔
log server
對於 App Center 無法紀錄 webview 內 js , html 執行情況
這邊用額外的 log server 來處理
簡單來說 , 就是遇到 error 就用 fetch 丟到 log server 紀錄
由於有公司 aws 的帳號 , log server 直接用 api gateway +lambda 處理掉
接著 , Angular 的 component , 可以註冊整個組件共用的 error handler
所以就在那 handler 把 error 傳給 log server
另外 , 有些錯誤是透過 console 輸出的 , 這些也要記錄到 log server
參考此篇文章 :
https://stackoverflow.com/questions/19846078/how-to-read-from-chromes-console-in-javascript
魔改了 console , 放到 ionic 專案下 , src/index.html 的 head 內
至於 Espresso 的測試腳本 , 拿官方 example 抄 XD
需要注意是要用 onWebView() 來進行測試
由於 app 是用 ionic 的 UI framwork (標籤是 ion-x) , 不太好測試
建議用 ionic server 觀察 html tag , 來看如何找到特定的標籤來操作
Pixel 5 開啟轉很久的原因..........
經過上面開發後 , 在 log server 內發現
開 DB 失敗 , 查了一下 , 是廢棄不用的 sqlLite plugin 造成的
移除掉就沒事了.........
至於其它 Android 11 手機的問題 , 以後再來處理XD
結尾
這次問題累死我了 , 前後糾纏快三個月
上面這些足足花了快三星期 , 直到今天才有進展
所以寫一篇文記錄血淚XD