diff --git a/src/androidTest/java/org/ligi/passandroid/BaseIntegration.java b/src/androidTest/java/org/ligi/passandroid/BaseIntegration.java new file mode 100644 index 00000000..c1a05490 --- /dev/null +++ b/src/androidTest/java/org/ligi/passandroid/BaseIntegration.java @@ -0,0 +1,23 @@ +package org.ligi.passandroid; + +import android.app.Activity; +import android.test.ActivityInstrumentationTestCase2; + +import org.ligi.passandroid.reporting.SpooningFailureHandler; + +import static com.google.android.apps.common.testing.ui.espresso.Espresso.setFailureHandler; + + +public abstract class BaseIntegration extends ActivityInstrumentationTestCase2 { + + public BaseIntegration(Class activityClass) { + super(activityClass); + } + + @Override + public void setUp() throws Exception { + super.setUp(); + setFailureHandler(new SpooningFailureHandler(getInstrumentation().getTargetContext())); + } + +} diff --git a/src/androidTest/java/org/ligi/passandroid/TheEmptyTicketList.java b/src/androidTest/java/org/ligi/passandroid/TheEmptyTicketList.java index f41a8ae2..66026f5b 100644 --- a/src/androidTest/java/org/ligi/passandroid/TheEmptyTicketList.java +++ b/src/androidTest/java/org/ligi/passandroid/TheEmptyTicketList.java @@ -1,6 +1,5 @@ package org.ligi.passandroid; -import android.test.ActivityInstrumentationTestCase2; import android.test.suitebuilder.annotation.MediumTest; import com.squareup.spoon.Spoon; @@ -17,7 +16,7 @@ import static com.google.android.apps.common.testing.ui.espresso.assertion.ViewA import static com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers.isDisplayed; import static com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers.withId; -public class TheEmptyTicketList extends ActivityInstrumentationTestCase2 { +public class TheEmptyTicketList extends BaseIntegration { public TheEmptyTicketList() { super(TicketListActivity.class); diff --git a/src/androidTest/java/org/ligi/passandroid/reporting/SpooningFailureHandler.java b/src/androidTest/java/org/ligi/passandroid/reporting/SpooningFailureHandler.java new file mode 100644 index 00000000..dc9eb000 --- /dev/null +++ b/src/androidTest/java/org/ligi/passandroid/reporting/SpooningFailureHandler.java @@ -0,0 +1,31 @@ +package org.ligi.passandroid.reporting; + +import android.app.Activity; +import android.content.Context; +import android.view.View; + +import com.google.android.apps.common.testing.ui.espresso.FailureHandler; +import com.google.android.apps.common.testing.ui.espresso.base.DefaultFailureHandler; +import com.squareup.spoon.Spoon; + +import org.hamcrest.Matcher; + +public class SpooningFailureHandler implements FailureHandler { + + private final FailureHandler delegate; + private final Context context; + + public SpooningFailureHandler(Context targetContext) { + delegate = new DefaultFailureHandler(targetContext); + context = targetContext; + } + + @Override + public void handle(Throwable error, Matcher viewMatcher) { + delegate.handle(error, viewMatcher); + if (context instanceof Activity) { + Spoon.screenshot((Activity) context, "error"); + } + + } +}