@@ -50,33 +50,33 @@ class AndroidSnaptestingPlugin : Plugin<Project> {
5050 " $projectDir /src/$variantSourceFolder /assets/android-snaptesting-golden-files"
5151 }
5252
53- // Attach work directly on the deviceProviderTask (config-cache safe).
5453 // Note: in Kotlin, doFirst/doLast lambdas receive the task as 'it', not 'this'.
5554 deviceProviderTask.doFirst {
5655 (it as DeviceProviderInstrumentTestTask )
5756 .deviceFileManager(applicationIdProvider.get(), adbExecutablePath, providerFactory)
5857 .clearAllSnapshots()
5958 }
6059
61- deviceProviderTask.doLast {
62- (it as DeviceProviderInstrumentTestTask )
63- .afterExecution(
60+ // Before task as dependency anchor for CI scripts.
61+ val beforeTaskName = " androidSnaptestingBefore$capitalizedVariant "
62+ project.tasks.register(beforeTaskName, Task ::class .java)
63+ deviceProviderTask.dependsOn(beforeTaskName)
64+
65+ // After task runs post-processing via finalizedBy, which guarantees
66+ // execution even when the test task fails (needed to pull snapshot
67+ // results and generate reports on failure).
68+ val afterTaskName = " androidSnaptestingAfter$capitalizedVariant "
69+ project.tasks.register(afterTaskName, Task ::class .java) { task ->
70+ task.doLast {
71+ deviceProviderTask.afterExecution(
6472 applicationId = applicationIdProvider.get(),
6573 adbExecutablePath = adbExecutablePath,
6674 providerFactory = providerFactory,
6775 isRecordMode = isRecordMode,
6876 goldenSnapshotsSourcePath = goldenSnapshotsSourcePath,
6977 )
78+ }
7079 }
71-
72- // Keep empty before/after tasks as dependency anchors for CI scripts
73- // (e.g. ci.gradle.kts references these task names).
74- val beforeTaskName = " androidSnaptestingBefore$capitalizedVariant "
75- project.tasks.register(beforeTaskName, Task ::class .java)
76- deviceProviderTask.dependsOn(beforeTaskName)
77-
78- val afterTaskName = " androidSnaptestingAfter$capitalizedVariant "
79- project.tasks.register(afterTaskName, Task ::class .java)
8080 deviceProviderTask.finalizedBy(afterTaskName)
8181 }
8282 }
0 commit comments