Screen Robots
@brwngrldev
UI Tests in Espresso
1. User Interface Testing
2. Espresso
3. Screen Robots
Agenda
@brwngrldev
UI Testing
@brwngrldev
UI element
UI Testing
@brwngrldev
UI Testing
@brwngrldev
Espresso
• Framework
• View Matchers
• View Assertions
• View Actions
@brwngrldev
Usage
@brwngrldev
Usage
@brwngrldev
Usage
@brwngrldev
@Test
public void shouldProceedWithLoginWhenValid () {
onView( withId( R.id.login_username_entry ) )
.perform( typeText( TEST_EMAIL ) );
onView( withId( R.id.login_password_entry ) )
.perform( typeText( TEST_PASSWORD ) );
onView( withId( R.id.login_button ) )
.perform( click() );
intended( hasComponent( hasShortClassName( PACKAGE_NAME ) ) );
}
@brwngrldev
@Test
public void shouldProceedWithLoginWhenValid () {
onView( withId( … ) )
.perform( typeText( … ) );
onView( withId( … ) )
.perform( typeText( … ) );
onView( withId( … ) )
.perform( click() );
…
}
@brwngrldev
@Test
public void shouldProceedWithLoginWhenValid () {
< let’s do better />
}
@brwngrldev
@brwngrldev
@Test
public void shouldProceedWithLoginWhenValid () {
}
@brwngrldev
@Test
public void shouldProceedWithLoginWhenValid () {
withRobot( LoginScreenRobot.class )
}
@brwngrldev
@Test
public void shouldProceedWithLoginWhenValid () {
withRobot( LoginScreenRobot.class )
.callLogin( TEST_EMAIL, TEST_PASSWORD )
}
@brwngrldev
@Test
public void shouldProceedWithLoginWhenValid () {
withRobot( LoginScreenRobot.class )
.callLogin( TEST_EMAIL, TEST_PASSWORD )
.checkIsLoggedIn();
}
@brwngrldev
@brwngrldev
Just 3 lines
of code!
public LoginScreenRobot callLogin (String username, String password)
{
}
@brwngrldev
Screen Robot
public LoginScreenRobot callLogin (String username, String password)
{
return enterTextIntoView ( R.id.login_username_entry, username )
}
@brwngrldev
Screen Robot
public LoginScreenRobot callLogin (String username, String password)
{
return enterTextIntoView ( R.id.login_username_entry, username )
.enterTextIntoView ( R.id.login_password_entry, password )
}
@brwngrldev
Screen Robot
public LoginScreenRobot callLogin (String username, String password)
{
return enterTextIntoView ( R.id.login_username_entry, username )
.enterTextIntoView ( R.id.login_password_entry, password )
.clickOkOnView( R.id.login_button );
}
@brwngrldev
Screen Robot
@brwngrldev
@brwngrldev
Test Scenarios
• Login with valid credentials
• Login with invalid credentials
• Login with bad server response
• Changing the slide language
• Verifying the correctness of the slide content
• Entering content into a text slide
Summary
Screen Robots
User Interface Testing
Espresso
@brwngrldev
Thanks!
@brwngrldev
+AnnyceDavis
www.adavis.info

Screen Robots: UI Tests in Espresso