RecyclerView Interactions

Use espresso-contrib for interacting with RecyclerView items.

Click and assert on RecyclerView

java
import androidx.test.espresso.contrib.RecyclerViewActions;

// Scroll to position
onView(withId(R.id.recycler)).perform(
    RecyclerViewActions.scrollToPosition(10)
);

// Click item at position
onView(withId(R.id.recycler)).perform(
    RecyclerViewActions.actionOnItemAtPosition(2, click())
);

// Click item with specific text
onView(withId(R.id.recycler)).perform(
    RecyclerViewActions.actionOnItem(
        hasDescendant(withText("Alice")),
        click()
    )
);

// Click a button inside a RecyclerView item
onView(withId(R.id.recycler)).perform(
    RecyclerViewActions.actionOnItemAtPosition(0,
        new ViewAction() {
            @Override public Matcher<View> getConstraints() { return isDisplayed(); }
            @Override public String getDescription() { return "Click delete button"; }
            @Override public void perform(UiController c, View v) {
                v.findViewById(R.id.delete_btn).performClick();
            }
        })
);