From c073beac916b9bbcfdd8ede705ccc47c8fca51bc Mon Sep 17 00:00:00 2001 From: vyaivanove Date: Wed, 1 Feb 2023 18:09:46 +0300 Subject: [PATCH] Decoupled screenshot test runner and screenshot comparison --- client/android/divkit-demo-app/build.gradle | 1 + .../com/yandex/test/screenshot/ScreenshotTestPlugin.kt | 8 ++++++-- .../test/screenshot/ScreenshotTestPluginExtension.kt | 1 + .../test/screenshot/tasks/CompareScreenshotsTask.kt | 1 - 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/client/android/divkit-demo-app/build.gradle b/client/android/divkit-demo-app/build.gradle index c608e84a4..e1743f726 100644 --- a/client/android/divkit-demo-app/build.gradle +++ b/client/android/divkit-demo-app/build.gradle @@ -123,6 +123,7 @@ dependencies { screenshotTests { enabled = project.hasProperty("screenshot-tests") + enableComparison = project.hasProperty("screenshot-comparison") strictComparison = project.hasProperty("screenshot-strict-comparison") testAnnotations = ["com.yandex.test.screenshot.Screenshot"] deviceDir = "${android.defaultConfig.applicationId}/screenshots" diff --git a/client/android/screenshot-test-plugin/src/main/java/com/yandex/test/screenshot/ScreenshotTestPlugin.kt b/client/android/screenshot-test-plugin/src/main/java/com/yandex/test/screenshot/ScreenshotTestPlugin.kt index 83f536992..6defe5d72 100644 --- a/client/android/screenshot-test-plugin/src/main/java/com/yandex/test/screenshot/ScreenshotTestPlugin.kt +++ b/client/android/screenshot-test-plugin/src/main/java/com/yandex/test/screenshot/ScreenshotTestPlugin.kt @@ -36,7 +36,11 @@ class ScreenshotTestPlugin : Plugin { } } project.tasks.register(ValidateTestResultsTask.NAME, ValidateTestResultsTask::class.java) - project.tasks.register(PullScreenshotsTask.NAME, PullScreenshotsTask::class.java) + project.tasks.register(PullScreenshotsTask.NAME, PullScreenshotsTask::class.java).configure { + if (screenshotTests.enableComparison) { + it.finalizedBy(CompareScreenshotsTask.NAME) + } + } project.tasks.register(CompareScreenshotsTask.NAME, CompareScreenshotsTask::class.java) project.tasks.whenTaskAdded { task -> @@ -50,7 +54,7 @@ class ScreenshotTestPlugin : Plugin { val isDependentTask = task.name.run { startsWith("connected") && endsWith("AndroidTest") } - if (enabled && isDependentTask) task.finalizedBy(CompareScreenshotsTask.NAME) + if (enabled && isDependentTask) task.finalizedBy(PullScreenshotsTask.NAME) } project.androidComponents.finalizeDsl { diff --git a/client/android/screenshot-test-plugin/src/main/java/com/yandex/test/screenshot/ScreenshotTestPluginExtension.kt b/client/android/screenshot-test-plugin/src/main/java/com/yandex/test/screenshot/ScreenshotTestPluginExtension.kt index ea3a0e3af..d6f4ca979 100644 --- a/client/android/screenshot-test-plugin/src/main/java/com/yandex/test/screenshot/ScreenshotTestPluginExtension.kt +++ b/client/android/screenshot-test-plugin/src/main/java/com/yandex/test/screenshot/ScreenshotTestPluginExtension.kt @@ -3,6 +3,7 @@ package com.yandex.test.screenshot open class ScreenshotTestPluginExtension { var enabled: Boolean = true + var enableComparison: Boolean = true var strictComparison: Boolean = false var testAnnotations = mutableListOf() var deviceDir = "screenshots" diff --git a/client/android/screenshot-test-plugin/src/main/java/com/yandex/test/screenshot/tasks/CompareScreenshotsTask.kt b/client/android/screenshot-test-plugin/src/main/java/com/yandex/test/screenshot/tasks/CompareScreenshotsTask.kt index 0a253d105..77f458cfb 100644 --- a/client/android/screenshot-test-plugin/src/main/java/com/yandex/test/screenshot/tasks/CompareScreenshotsTask.kt +++ b/client/android/screenshot-test-plugin/src/main/java/com/yandex/test/screenshot/tasks/CompareScreenshotsTask.kt @@ -29,7 +29,6 @@ open class CompareScreenshotsTask : DefaultTask() { init { group = "verification" - this.dependsOn(PullScreenshotsTask.NAME) } @TaskAction