17

Fastlane による Screengrab を使用するために、React Native Android アプリケーションで Espresso を使用した UI テストを作成しようとしています。

このチュートリアルに従って、 React Native を既存のアプリに統合し、テストを記述できるようにしました。しかし、UI テストを書き始めたとき、何を書くべきか、コンポーネントをターゲットにしてクリックを実行する方法などを見つけることができませんでした。

React Native 用の Espresso テストを作成する方法の例を誰かが示しているこの投稿を見つけましたが、私にはうまくいきません...私のコンポーネントには resource-id が設定されていないため、何らかのアクションを実行する方法がわかりません私のアプリケーション。

誰かが React Native アプリで Espresso を使用して UI テストを作成するのを手伝ってくれたり、私の Android アプリケーションの自動スクリーンショットを撮るための別のソリューションを教えてくれたりしたら、それは素晴らしいことです。

ご不明な点がございましたら、お知らせください。

4

3 に答える 3

16

エスプレッソ

現在、react-native で resource-id を設定する方法がないため、複雑なアクションを作成するには (要素の待機など) コードを記述する必要がありますが、Android Studio の [エスプレッソ テストの記録] ボタンを使用すると、他のことがうまく機能するようです。

  1. 要素の ID としてpropaccessibilityLabelを使用します (例: "elementId")
  2. onView(allOf(withContentDescription("elementId"), isDisplayed()))要素を取得するために使用
  3. その要素に対してアクションを実行します(のようにelement.perform(click())

ここで完全なテストを見つけることができますhttps://gist.github.com/cybergrind/0a2ad855352a5cd47cb5fb6a486c5eaa

アピウム

アクションを実行してスクリーンショットをキャプチャするだけの場合は、appium を使用してこれを行うことができます。

  1. accessibilityLabel要素の ID としてprop を使用する
  2. Web ドライバーでは、waitForElementByAccessibilityId を使用します
  3. saveScreenshot('out.png') でスクリーンショットをキャプチャします -> これにより、テストを実行したディレクトリに「out.png」ファイルが作成されます

appium では、最終的に次のようなものになります (js の例):

driver.waitForElementByAccessibilityId('searchInputAcc', 5000)
      .type('bold\n')
      .sleep(5000)
      .saveScreenshot('out.png')

iOS と Android のアクセシビリティ ラベル

AndroidaccessibiltyLabelでは任意の要素 (Text、View など) で自由に使用できるようですが、iOS では Adnroid のようなすべての要素でアクセシビリティが設定されるわけではありません。

ラベルを設定Textすると、ラベルと同じにはなりません

<Text accessibilityLabel="my_text">content</Text>

contentiOS では同じラベルが付けられるため、基本的にはaccessible、このプラットフォームのテキスト ノードに属性を設定するだけで済みます。

<Text accessible>content</Text>

同じことView- iOS はラベルを無視します。

これまでのところ、カスタムのアクセシビリティ ラベルで動作する iOS の要素はほとんどありません。

以下は、クロスプラットフォームの反応ネイティブ テストのアプリケーションをテストするために使用できる要素のリストです。

以下を使用できます。

  • TouchableHighlight- iOS と Android で同じように動作します。accessibilityLabel を設定するだけです
  • Text- accessibilityLabel は内部テストと同じでなければならない + アクセシブル属性を設定する必要がある

動作しません (両方のプラットフォームで完全に):

  • View

PS まだすべての可能な要素をテストしていないので、他の要素の結果を追加するか、結果を待ちます

デバッグ

ルート要素のソースを取得し、印刷して、デバッグ目的で xml として読み取ることができます (webdriver.io の場合: http://webdriver.io/api/property/getSource.html ) 。

于 2016-06-25T22:06:31.487 に答える
5

の適切なサポートを追加するために、react-native に対する PR がありresource-idます。確認して投票してください: https://github.com/facebook/react-native/pull/9942

にマージされると、ID が で定義されている限り、testIDが追加されます。resource-idres/values/ids.xml

于 2016-09-18T08:04:49.050 に答える