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:
parent
3b0856bf8e
commit
66b30c33c8
3
.github/workflows/sanity_test.yml
vendored
3
.github/workflows/sanity_test.yml
vendored
@ -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: |
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user