Improve reliability of sanity tests.

We add the permission so we can write to the external storage with the screenshots
We rename the screenshots so they can be uploaded via the github action correctly

We always do the upload even if the test build has failed.
This commit is contained in:
Michael Kaye 2022-02-18 14:38:22 +00:00
parent 3b0856bf8e
commit 66b30c33c8
3 changed files with 6 additions and 2 deletions

View File

@ -69,9 +69,10 @@ jobs:
touch emulator.log touch emulator.log
chmod 777 emulator.log chmod 777 emulator.log
adb logcat >> emulator.log & adb logcat >> emulator.log &
./gradlew $CI_GRADLE_ARG_PROPERTIES -PallWarningsAsErrors=false connectedGplayDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=im.vector.app.ui.UiAllScreensSanityTest || adb pull storage/emulated/0/Pictures/failure_screenshots ./gradlew $CI_GRADLE_ARG_PROPERTIES -PallWarningsAsErrors=false connectedGplayDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=im.vector.app.ui.UiAllScreensSanityTest || (adb pull storage/emulated/0/Pictures/failure_screenshots && exit 1 )
- name: Upload Test Report Log - name: Upload Test Report Log
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
if: always()
with: with:
name: sanity-error-results name: sanity-error-results
path: | path: |

View File

@ -40,7 +40,7 @@ private val deviceLanguage = Locale.getDefault().language
class ScreenshotFailureRule : TestWatcher() { class ScreenshotFailureRule : TestWatcher() {
override fun failed(e: Throwable?, description: Description) { override fun failed(e: Throwable?, description: Description) {
val screenShotName = "$deviceLanguage-${description.methodName}-${SimpleDateFormat("EEE-MMMM-dd-HH:mm:ss").format(Date())}" val screenShotName = "$deviceLanguage-${description.methodName}-${SimpleDateFormat("EEE-MMMM-dd-HHmmss").format(Date())}"
val bitmap = getInstrumentation().uiAutomation.takeScreenshot() val bitmap = getInstrumentation().uiAutomation.takeScreenshot()
storeFailureScreenshot(bitmap, screenShotName) storeFailureScreenshot(bitmap, screenShotName)
} }

View File

@ -16,10 +16,12 @@
package im.vector.app.ui package im.vector.app.ui
import android.Manifest
import androidx.test.espresso.IdlingPolicies import androidx.test.espresso.IdlingPolicies
import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.ext.junit.rules.ActivityScenarioRule
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.LargeTest import androidx.test.filters.LargeTest
import androidx.test.rule.GrantPermissionRule
import im.vector.app.R import im.vector.app.R
import im.vector.app.espresso.tools.ScreenshotFailureRule import im.vector.app.espresso.tools.ScreenshotFailureRule
import im.vector.app.features.MainActivity import im.vector.app.features.MainActivity
@ -43,6 +45,7 @@ class UiAllScreensSanityTest {
@get:Rule @get:Rule
val testRule = RuleChain val testRule = RuleChain
.outerRule(ActivityScenarioRule(MainActivity::class.java)) .outerRule(ActivityScenarioRule(MainActivity::class.java))
.around(GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE))
.around(ScreenshotFailureRule()) .around(ScreenshotFailureRule())
private val elementRobot = ElementRobot() private val elementRobot = ElementRobot()