diff options
Diffstat (limited to 'android/e2e/src/main/java')
3 files changed, 40 insertions, 0 deletions
diff --git a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/EndToEndTest.kt b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/EndToEndTest.kt index 81a496c4f2..0ff6e0b1ae 100644 --- a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/EndToEndTest.kt +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/EndToEndTest.kt @@ -5,12 +5,18 @@ import androidx.test.platform.app.InstrumentationRegistry import androidx.test.runner.AndroidJUnit4 import androidx.test.uiautomator.UiDevice import net.mullvad.mullvadvpn.e2e.interactor.AppInteractor +import net.mullvad.mullvadvpn.e2e.misc.CaptureScreenshotOnFailedTestRule import org.junit.Before +import org.junit.Rule import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) abstract class EndToEndTest { + @Rule + @JvmField + val rule = CaptureScreenshotOnFailedTestRule() + lateinit var device: UiDevice lateinit var targetContext: Context lateinit var app: AppInteractor diff --git a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/Constants.kt b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/Constants.kt new file mode 100644 index 0000000000..44b8029799 --- /dev/null +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/constant/Constants.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.e2e.constant + +const val LOG_TAG = "mullvad-e2e" diff --git a/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/misc/CaptureScreenshotOnFailedTestRule.kt b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/misc/CaptureScreenshotOnFailedTestRule.kt new file mode 100644 index 0000000000..82c43c958b --- /dev/null +++ b/android/e2e/src/main/java/net/mullvad/mullvadvpn/e2e/misc/CaptureScreenshotOnFailedTestRule.kt @@ -0,0 +1,31 @@ +package net.mullvad.mullvadvpn.e2e.misc + +import android.util.Log +import androidx.test.runner.screenshot.BasicScreenCaptureProcessor +import androidx.test.runner.screenshot.ScreenCaptureProcessor +import androidx.test.runner.screenshot.Screenshot +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter +import net.mullvad.mullvadvpn.e2e.constant.LOG_TAG +import org.junit.rules.TestWatcher +import org.junit.runner.Description + +class CaptureScreenshotOnFailedTestRule : TestWatcher() { + override fun failed(e: Throwable?, description: Description?) { + Log.d(LOG_TAG, "Capturing screenshot of failed test: " + description?.methodName) + val timestamp = DateTimeFormatter.ISO_DATE_TIME.format(LocalDateTime.now()).replace(":", "") + val screenshotName = "$timestamp-${description?.methodName}" + captureScreenshot(screenshotName) + } + + private fun captureScreenshot(screenShotName: String) { + try { + val screenCapture = Screenshot.capture().apply { name = screenShotName } + val processorSet: MutableSet<ScreenCaptureProcessor> = HashSet() + processorSet.add(BasicScreenCaptureProcessor()) + screenCapture.process(processorSet) + } catch (ex: Exception) { + Log.d(LOG_TAG, "Error capturing screenshot: " + ex.message) + } + } +} |
