I have a custom viewpager (with swiping disabled for reasons) working with a tablayout. The content changes based on which tab is selected. I want to test this using espresso: 1) Click on a particular tab 2) Check some data in a particular page of the tab How can I do that. I am a novice to espresso
There are several ways of doing this, an easy one is to select the element by the tab title, I use this code:
Matcher<View> matcher = allOf(withText("TAB TITLE"),
isDescendantOfA(withId(R.id.customTab)));
onView(matcher).perform(click());
SystemClock.sleep(800); // Wait a little until the content is loaded
You only have to adapt the matcher to your layout. Then, check the content.
For example:
onView(withId(R.id.someId)).check(matches(isCompletelyDisplayed()));
or:
onView(withText(R.string.someText)).check(matches(isCompletelyDisplayed()));
You can find examples here in the Specifying a View Matcher section: http://developer.android.com/intl/es/training/testing/ui-testing/espresso-testing.html
If you are using a RecyclerView to show the content of the tabs have a look at this: Espresso RecyclerView inside ViewPager
withId
, withTagValue
or create a custom matcher instead of the withText
one –
Contend withTagValue
this way: onView(withTagValue(is((Object) tagValueString)))
using the Matcher.is
method to find views with that tag –
Contend Espresso should be used when you clearly know what is expected in the UI and so you can verify the same.
In your case, to go to any tab, you can use view action to tap on that tab. To verify the data, first you should know what data is expected to be there on that tab and then just use matchers to check if they are displayed or not.
© 2022 - 2024 — McMap. All rights reserved.