How to know if it is a fragment that is on the screen, in interface test?

1

I would like to know, in automated interface tests, how to know if a fragment is on screen or not.

If it's a fragment, for example, ratingfragment, I'll "perform" a "click". If it is another, I'll do another action.

Thank you!

Code below:

@RunWith(AndroidJUnit4.class)
@LargeTest
public class CommunityUiTest {

    String emailSearch = "[email protected]";
    String emailLogin = "[email protected]";
    String pass = "2016";
    String pass2 = "2015";

    @Rule
    public ActivityTestRule mActivityRule = new ActivityTestRule<>(MainActivity.class);

    @After
    public void setUp(){
        Logout();
    }  
  @Test
    public void shouldOfferRide(){
        SystemClock.sleep(1500);
        Login();
        onView(withId(R.id.searchButton)).perform(typeText(emailSearch));
        onView(withId(R.id.searchButton)).perform(pressImeActionButton());
        onView(withId(R.id.community_user_ask_button)).perform(click());
        SystemClock.sleep(1500);
        onView(withId(R.id.button1)).perform(click());
        onView(withId(R.id.send_request)).perform(click());
        SystemClock.sleep(1500);
        ((MainActivity)mActivityRule.getActivity()).navItemClick(4);
        SystemClock.sleep(3500);
        LoginMyrides();
        onView(withId(R.id.my_rides_tab_bar)).perform(click());
        SystemClock.sleep(1000);

        //I have to know is ratingfragment before perform click below
        //Preciso saber se é o ratingfragment para executar ou não o perform(click) abaixo

        onView(withId(R.id.rating_bar)).perform(click());
        onView(withId(R.id.deny_btn)).perform(click());
    }

        public void Login(){
        onView(withId(R.id.edt_new_login_email)).perform(typeText(emailLogin));
        onView(withText(R.string.next_button)).perform(click());
        onView(withId(R.id.edt_new_password)).perform(typeText(senha));
        onView(withText(R.string.login_new_pass)).perform(click());
    }

    public void Logout(){
        new SessionManager(mActivityRule.getActivity()).logoutUser();
    }
}
    
asked by anonymous 29.09.2016 / 19:36

1 answer

1

After much reading I saw that the correct answer is that espresso is designed for isolated scenario testing, ie a test should be set up when the fragment is visible.

    
03.10.2016 / 02:41