Cordovaでテストをする方法サーベイ


やりたいこと

  • Cordovaで作られたiOSアプリ、Androidアプリと、それとコードを共有するウェブアプリ(Cordova管理外)を、メンテコストの低い形でUIテストする

前提

  • webview内のコードはウェブアプリ(cordova管理外)と共有している
  • webview内のコードはコードはプラットフォームごとの細かい分岐や、cordovaプラグインの呼び出しが含まれる
  • UIはプラットフォームごとに少しずつ異なる。

方針

cordovaのwebview内の要素にアクセスできるようなselenium driverがあれば、ウェブアプリとテストコードを共有できて楽そう。

-> 多分このリポジトリで可能。androidの例のみ
https://github.com/asialgearoid/cordova-appium-example

疑問

appiumでcordovaのwebviewのdomにアクセスできるのか?

それができることを匂わせる記事
https://docs.microsoft.com/en-us/visualstudio/cross-platform/tools-for-cordova/debug-test/appium-ui-sequences?view=toolsforcordova-2017

それができることを匂わせるリポジトリ
https://github.com/asialgearoid/cordova-appium-example/blob/master/tests/spec/button.js

それができないことを匂わせる記事
https://www.ninton.co.jp/?p=1673

これじゃね?
https://github.com/asialgearoid/cordova-appium-example/blob/master/tests/wdio.conf.js#L27
これから推測すると、設定次第ではできるし、設定次第ではできない

appiumをnative appに対して使う場合、UIとかの要素は指定できるのか?それともピクセル指定か?

できることを匂わせる記事
https://qiita.com/yuuhu04/items/5a96608ad96eccee34a0

以前、linuxでUIをいじろうと思って、sikulixやxdotoolに行き着きましたが、appiumでもできるかもしれません。
https://qiita.com/engineer/items/9989b388a0a9e3fa5bee#sikulix%E3%82%92%E4%BD%BF%E3%81%86%E6%96%B9%E6%B3%95

XCUITestはandroidに使えるのか?

調べていない

用語集

wdio

https://webdriver.io/
たぶんseleniumとかテストフレームワークとかを束ねる存在
cordova + appiumの設定例
https://github.com/asialgearoid/cordova-appium-example/blob/master/tests/wdio.conf.js

XCUITest

appium

selenium webdriver
https://qiita.com/k5n/items/899cf40a0021a6a92efd
多分seleniumのAPIでiphoneとかsimulatorとかを動かせるやつ。

appium-doctor

たぶんappiumがちゃんと設定できているかチェックするツール
https://github.com/appium/appium-doctor

selendroid

たぶんappiumの仲間

ios-driver

たぶんappiumの仲間
http://ios-driver.github.io/ios-driver/

nightmare

多分rubyのcapybara的なもの。javascriptで抽象的にブラウザを操作できる。
seleniumは使わないらしい。
electronを使うらしい。つまりchromiumを使うのが特徴ということか?
cordova関係無く、e2eテストに使える。
iosのテストには多分使えない。

ava

多分rspecとかmochaとかjasmine的なもの。
テストフレームワーク。

jsunit

すごい古そう
http://www.jsunit.net/
mochaとかの仲間?

参考リンク

ios, android, hybridについて、テスト手法をまとめてある。
https://stackoverflow.com/questions/18739352/automatic-testing-for-cordova-phonegap-webview-on-android

nightmare + avaでe2eテスト。cordovaとタイトルがついているが、あまり関係ない。
http://blog.aqutras.com/entry/2016/08/10/210000