Espresso, el desplazamiento no funciona cuando NestedScrollView o RecyclerView está en CoordinatorLayout
Parece queCoordinatorLayout
rompe el comportamiento de acciones de Espresso comoscrollTo()
oRecyclerViewActions.scrollToPosition()
.
Para un diseño como este:
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
...
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
...
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
Si trato de desplazarme a cualquier vista dentro delNestedScrollView
utilizandoViewActions.scrollTo()
el primer problema que encuentro es que me sale unPerformException
. Esto se debe a que esta acción solo admiteScrollView
yNestedScrollView
no lo extiende Se explica una solución para este problemaaquí, básicamente podemos copiar el código enscrollTo()
y cambiar las restricciones para apoyarNestedScrollView
. Esto parece funcionar si elNestedScrollView
no está en unCoordinatorLayout
pero tan pronto como lo pones dentro de unCoordinatorLayout
la acción de desplazamiento falla.
Para el mismo diseño, si reemplazo elNestedScrollView
con unRecyclerView
También hay problemas con el desplazamiento.
En este caso estoy usandoRecyclerViewAction.scrollToPosition(position)
. A diferencia delNestedScrollView
, aquí puedo ver algunos desplazamientos pasando. Sin embargo, parece que se desplaza a la posición incorrecta. Por ejemplo, si me desplazo a la última posición, hace visible la penúltima pero no la última. Cuando muevo elRecyclerView
fuera deCoordinatorLayout
el desplazamiento funciona como debería.
Por el momento no podemos escribir ninguna prueba de Espresso para las pantallas que usanCoordinatorLayout
Debido a estos problemas. ¿Alguien experimenta los mismos problemas o conoce una solución alternativa?