CI experiment

Change-Id: I7e7657ab34832d5988ebbe6af0d5464e9b4364ff
ben/dropshots
Jose Alcérreca 5 months ago
parent a6a15efc6b
commit ec2cd2312a

@ -310,7 +310,7 @@ jobs:
- name: Build projects and run instrumented screenshot tests
id: dropshotsverify
continue-on-error: true
continue-on-error: false
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
@ -323,11 +323,12 @@ jobs:
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
# Run tests, if they fail, record screenshots and exit with a failure
script: >
set +o pipefail &&
./gradlew connectedDemoDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.annotation=com.google.samples.apps.nowinandroid.ui.InstrumentedScreenshotTests --daemon
|| echo "Recording new screenshots"
; ./gradlew connectedDemoDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.annotation=com.google.samples.apps.nowinandroid.ui.InstrumentedScreenshotTests -Pdropshots.record --daemon --stacktrace
; echo "Done recording new screenshots, exiting with failure"
; exit 5
; echo ::set-output name=newgoldens::true
- name: Prevent pushing new screenshots if this is a fork
id: checkfork_screenshots_instrumented
@ -338,12 +339,13 @@ jobs:
- name: Checkout new changes (in case another job already uploaded screenshots)
uses: actions/checkout@v4
if: steps.dropshotsverify.outputs.newgoldens == 'true'
with:
clean: false
- name: Push new device screenshots if available
uses: stefanzweifel/git-auto-commit-action@4b8a201e31cadd9829df349894b28c54e6c19fe6
if: steps.dropshotsverify.outcome == 'failure'
if: steps.dropshotsverify.outputs.newgoldens == 'true'
with:
file_pattern: 'app/src/androidTest/screenshots/*.png'
disable_globbing: true

@ -17,6 +17,7 @@
package com.google.samples.apps.nowinandroid.ui
import android.graphics.Bitmap
import android.util.Log
import androidx.test.core.app.takeScreenshot
import androidx.test.espresso.device.DeviceInteraction.Companion.setClosedMode
import androidx.test.espresso.device.DeviceInteraction.Companion.setFlatMode
@ -251,6 +252,7 @@ class EdgeToEdgeTest {
} catch (e: AssertionError) {
if (count == 0) throw e
count -= 1
Log.i("EdgeToEdgeTest", "Test failed, retrying (count=$count)")
waitForWindowUpdate()
}
}

Loading…
Cancel
Save