package com.prateekj.snooper.utils; import android.support.v7.widget.RecyclerView; import android.view.View; import org.hamcrest.CustomTypeSafeMatcher; import org.hamcrest.Matcher; import static java.text.MessageFormat.format; public class EspressoViewMatchers { public static Matcher<View> withRecyclerView(final int recyclerViewId, final int position) { return new CustomTypeSafeMatcher<View>(format("recycler view with id: {0} at position: {1}", recyclerViewId, position)) { @Override protected boolean matchesSafely(View item) { View view = item.getRootView().findViewById(recyclerViewId); if (view == null || !(view instanceof RecyclerView)) return false; RecyclerView recyclerView = (RecyclerView) view; View childView = recyclerView.findViewHolderForAdapterPosition(position).itemView; return childView == item; } }; } public static Matcher<View> withListSize(final int size) { return new CustomTypeSafeMatcher<View>(format("recycler view with id: {0} ", size)) { @Override protected boolean matchesSafely(View view) { if (view == null || !(view instanceof RecyclerView)) return false; RecyclerView recyclerView = (RecyclerView) view; return recyclerView.getAdapter().getItemCount() == size; } }; } }