2016-05-11 6 views
10

FastlaneのScreengrabを使用するために、React NativeのAndroidアプリケーションでEspressoでUIテストを行っています。React NativeのためのEspresso UI Testingの使用方法?

私はthis tutorialに従って、React Nativeを既存のアプリに統合してテストを書くことができました。しかし、私がUIテストを書いてみると、何を書くべきか、どのようにコンポーネントをターゲットにしてそれをクリックするかを見つけることができませんでした。

私は thisポストを見つけました。誰かがエスプレッソテストをリアクションネイティブで書く方法の例を挙げていますが、私にとってはうまくいかない...私のコンポーネントにはリソースIDが設定されていないので、私のアプリケーションで何らかのアクションを実行します。

エスプレッソのリアクションネイティブアプリでUIテストを作成したり、素晴らしいAndroidアプリの自動スクリーンショットを作成する別の方法を教えていただけたら助かります。

質問がありましたらお知らせください。

答えて

9

エスプレッソ

現在反応し、ネイティブとリソース-IDを設定するので、あなたには、いくつかのコードを記述する必要がある複雑なアクション(のような要素を待つ)、他のものを作るために方法はありませんかなり良い経由で仕事らしいですアンドロイドスタジオの「レコードエスプレッソテスト」ボタン。

  1. 使用することは、あなたが見つけることができる
  2. ここ

要素

  • は、その要素(のようなelement.perform(click()))でアクションをpeform取得するために使用onView(allOf(withContentDescription("elementId"), isDisplayed()))
  • 要素(例えば。 "ELEMENTID")のIDとして accessibilityLabelを支えます完全試験 https://gist.github.com/cybergrind/0a2ad855352a5cd47cb5fb6a486c5eaa

    appium

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

    1. 使用はウェブドライバ使用中の要素
    2. のIDとしてaccessibilityLabelを支える「(saveScreenshotと
    3. キャプチャスクリーンショットをwaitForElementByAccessibilityId out.png - )あなたは最終的に(jsの例のようなものを持っていますappiumでテスト

    を実行したディレクトリにout.png 『ファイルを ')>これが作成されます』:

    AndroidのaccessibilityLabels

    対10

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

    iOSのAndroidのためにあなたが(ようにテキスト、ビューなど)任意の要素にaccessibiltyLabelを自由に使用しているようだが、iOSのは、のようなすべての要素にアクセスを設定しません。アドノイド。

    あなたはTextのラベルを設定した場合、あなたのラベル

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

    は、あなたがそう基本的にあなただけのこのプラットフォーム

    のためのあなたのテキストノードにaccessible属性を設定することができ、iOSの上等しいcontentにラベルを与えると等しくなりません
    <Text accessible>content</Text> 
    

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

    これまでのところ、iOSの多くの要素はカスタムアクセシビリティラベルでは機能しません。以下は

    あなたはクロスプラットフォーム反応し、ネイティブのテストを使用でき

    のためのアプリケーションをテストするために使用できる要素のリストである:

    • TouchableHighlightが - ちょうどあなたができる、iOSとAndroid上で同じように動作しますaccessibilityLabel
    • Textを設定 - accessibilityLabelは、内側のテストと同じでなければなりません+あなたはアクセス属性に
    を設定する必要があります0

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

    • View

    P.S.我々はまだ、すべての可能な要素をテストしたので、我々の結果

    デバッグのために他の要素のためのあなたの結果を追加したり、待機していない

    あなたはルート要素、印刷のソースを取得し、(デバッグ目的のためにXMLとしてそれを読むことができますfor webdriver.io:http://webdriver.io/api/property/getSource.html

    5

    私はresource-idの適切なサポートを追加するために反応ネイティブに対してPRを持っています。それをチェックアウトしてください-投票アップ:https://github.com/facebook/react-native/pull/9942

    それはそう長くIDがres/values/ids.xmlで定義されているようresource-idを追加しますtestIDにマージされています一度。

    0

    現在、反応層にtestIDを設定すると、アンドロイドのタグに変換されます。

    はその後エスプレッソで、あなたがビューを見つけるためにしなければならないすべては

    onView(withTagValue(is((Object) tagValue))).perform(click()); 
    
    で次に提供ViewMatcher withTagValue link

    を使用することができます

    関連する問題