F
F
foonfyrick2020-12-04 10:39:30
Android
foonfyrick, 2020-12-04 10:39:30

Espresso fails to test floating action bar, why is it giving an error?

After clicking on the fab, it should expand and another button will appear, but nothing happens.
Here is the error: androidx.test.espresso.PerformException: Error performing 'single click' on view 'with id is example.app:id/menu_item_add
Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints:
at least 90 percent of the view's area is displayed to the user.

@RunWith(AndroidJUnit4::class)
class EspressoTestMainFragment {
    @Rule
    fun rule():ActivityScenarioRule<MainActivity>
            = ActivityScenarioRule<MainActivity>(MainActivity::class.java)
//Тест: Показывается ли ресайклер вью при запуске
    @Test
    fun isRecyclerViewPnTheScreen(){
        Espresso
            .onView(ViewMatchers.withId(R.id.idrecyclerView))
            .check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
    }
//Тест: проверка fab menu и fab menu_item_add
    @Test
    fun isFragmentMainFabWorking(){
        Espresso.onView(ViewMatchers.withId(R.id.menu)).perform(ViewActions.click())
        Espresso.onView(ViewMatchers.withId(R.id.menu_item_add)).perform(ViewActions.click())

    }

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".fragments.main.view.MainFragment">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/idrecyclerView"
        android:layout_width="409dp"
        android:layout_height="729dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0" />

    <com.github.clans.fab.FloatingActionMenu
        android:id="@+id/menu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="24dp"
        android:layout_marginBottom="24dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        fab:menu_animationDelayPerItem="50"
        fab:menu_backgroundColor="@android:color/transparent"
        fab:menu_buttonSpacing="0dp"
        fab:menu_colorNormal="#DA4336"
        fab:menu_colorPressed="#E75043"
        fab:menu_colorRipple="#99FFFFFF"
        fab:menu_fab_label="закрыть"
        fab:menu_fab_size="normal"
        fab:menu_icon="@drawable/fab_add"
        fab:menu_labels_colorNormal="#333333"
        fab:menu_labels_colorPressed="#444444"
        fab:menu_labels_colorRipple="#66FFFFFF"
        fab:menu_labels_cornerRadius="3dp"
        fab:menu_labels_ellipsize="none"
        fab:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"
        fab:menu_labels_margin="0dp"
        fab:menu_labels_maxLines="-1"
        fab:menu_labels_padding="8dp"
        fab:menu_labels_paddingBottom="4dp"
        fab:menu_labels_paddingLeft="8dp"
        fab:menu_labels_paddingRight="8dp"
        fab:menu_labels_paddingTop="4dp"
        fab:menu_labels_position="left"
        fab:menu_labels_showAnimation="@anim/fab_slide_in_from_right"
        fab:menu_labels_showShadow="true"
        fab:menu_labels_singleLine="false"
        fab:menu_labels_textColor="#FFFFFF"
        fab:menu_labels_textSize="14sp"
        fab:menu_openDirection="up"
        fab:menu_shadowColor="#66000000"
        fab:menu_shadowRadius="4dp"
        fab:menu_shadowXOffset="1dp"
        fab:menu_shadowYOffset="3dp"
        fab:menu_showShadow="true">

        <com.github.clans.fab.FloatingActionButton
            android:id="@+id/menu_item_add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_float_add"
            fab:fab_label="добавить запись"
            fab:fab_size="mini" />


    </com.github.clans.fab.FloatingActionMenu>
</androidx.constraintlayout.widget.ConstraintLayout>

Answer the question

In order to leave comments, you need to log in

1 answer(s)
F
foonfyrick, 2020-12-07
@foonfyrick

onView(withId(R.id.menu_item_add)).check(
            matches(
                allOf(
                    isEnabled(),
                    isClickable()
                )
            )
        ).perform(
            object : ViewAction {
                override fun getDescription(): String {
                    return "click add button"
                }

                override fun getConstraints(): Matcher<View> {
                    return isEnabled()
                }

                override fun perform(uiController: UiController?, view: View?) {
                    view?.performClick()
                }
            }
        )

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question