LoginSignup
13
6

More than 5 years have passed since last update.

ReactNative detox E2E

Last updated at Posted at 2018-12-08

はじめに

この記事はReact Nativeアドベントカレンダーの8日目の記事です。

今年からReactNatvieがっつり触り始めました
AdventCalendarを投稿するならReactNativeだなと思い投稿しました

ここ最近はテストばっかりやっているのでテストで使っているdetoxをご紹介しようと思います

detoxとは

ReactNativeのE2Eライブラリです
ios/androidの両方に対応しているので使っています
androidは数ヶ月前くらいに対応したのかな?
まぁ普通に使えている

環境

今回は最新Versionで試しに動かしてみます

OS: macOS
XCode: 10.1
ReactNative: 0.57.7
detox: 9.1.2

準備

iosセットアップ手順とか説明してきます
androidは別の機会に

新規プロジェクト作成

$ react-native init detoxSample

必要なコマンドのインストール

$ brew tap wix/brew
$ brew install --HEAD applesimutils

$ npm i -g detox-cli

プロジェクト内に導入

今回はmochaを使用するつもりなのでmocha detoxをインストール

$ npm i --save-dev detox mocha

下記コマンドを実行すると e2eディレクトリが作成される

$ detox init -r mocha

package.jsonを少し修正

detoxSampleとなっているところは作成したProjectの名前に置き換えてください
今回はdetoxSampleという名前で行っていますので
iPhone 7となっているところはテストしたいデバイスを指定できます

{
  "detox": {
    "configurations": {
      "ios.sim.debug": {
        "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/detoxSample.app",
        "build": "xcodebuild -project ios/detoxSample.project -scheme detoxSample -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
        "type": "ios.simulator",
        "name": "iPhone 7"
      }
    },
    "test-runner": "mocha"
  }
}

準備はこれで終了です。
では実行してみましょう
iPhoneシュミレータが起動して何やらテストが実行されると思います
テストは失敗しますがw

$ detox test -c ios.sim.debug

スクリーンショット 2018-12-08 9.06.05.png

テストを書いてみます

プロジェクトを作成してから変更は何も加えてない状態なはずなので少し付け加えていきます

App.js

スクリーンショット 2018-12-08 9.11.10.png

e2e/firstTest.spec.js

コメントアウトしてtestIDwelcomeが表示されているか確認するテストを実行します
スクリーンショット 2018-12-08 9.13.15.png

テストが通ります

スクリーンショット 2018-12-08 9.15.14.png

もう少し書いてみます

FlatListを追加してテストしてみます

App.js

スクリーンショット 2018-12-08 9.34.19.png

e2e/firstTest.spec.js

スクリーンショット 2018-12-08 9.35.15.png

テストが通ります

スクリーンショット 2018-12-08 9.35.51.png

さらにもう少し書いてみます

テキストをタップしてアラートを表示してみます

App.js

スクリーンショット 2018-12-08 9.41.20.png

e2e/firstTest.spec.js

スクリーンショット 2018-12-08 9.42.56.png

テストが通ります

スクリーンショット 2018-12-08 9.43.34.png

最後にシミュレーターの様子をご覧ください

detox.gif

まとめ

  • detoxはセットアップもさほど難しくないのでいい
  • jestも対応はしているのだけどmochaのほうがいい
    • mochaは失敗したらテストが止まるので
    • jestはテストが失敗してもどこで失敗したのかあとで追うのが大変
  • Xcodeがアップデートするとdetoxが対応していないケースがあるので待つしかないのつらみ
    • まだ対応してないときね
  • detoxを使ってくれる人が増えてくれたらいいなと感じるw

リンク

13
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
6