From e98a67a755a56c1766aa434e91b34e384b091f2f Mon Sep 17 00:00:00 2001 From: takahirom Date: Sat, 12 Oct 2024 16:37:55 +0900 Subject: [PATCH] Add SizeChangeTest --- .../roborazzi/DefaultFileNameGenerator.kt | 4 ++ .../roborazzi/sample/boxed/SizeChangeTest.kt | 69 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 sample-android/src/test/java/com/github/takahirom/roborazzi/sample/boxed/SizeChangeTest.kt diff --git a/include-build/roborazzi-core/src/commonJvmMain/kotlin/com/github/takahirom/roborazzi/DefaultFileNameGenerator.kt b/include-build/roborazzi-core/src/commonJvmMain/kotlin/com/github/takahirom/roborazzi/DefaultFileNameGenerator.kt index 5464bd99..0a68fb3c 100644 --- a/include-build/roborazzi-core/src/commonJvmMain/kotlin/com/github/takahirom/roborazzi/DefaultFileNameGenerator.kt +++ b/include-build/roborazzi-core/src/commonJvmMain/kotlin/com/github/takahirom/roborazzi/DefaultFileNameGenerator.kt @@ -129,4 +129,8 @@ object DefaultFileNameGenerator { return testName } + @InternalRoborazziApi + fun reset() { + testNameToTakenCount.clear() + } } diff --git a/sample-android/src/test/java/com/github/takahirom/roborazzi/sample/boxed/SizeChangeTest.kt b/sample-android/src/test/java/com/github/takahirom/roborazzi/sample/boxed/SizeChangeTest.kt new file mode 100644 index 00000000..04d3f1a8 --- /dev/null +++ b/sample-android/src/test/java/com/github/takahirom/roborazzi/sample/boxed/SizeChangeTest.kt @@ -0,0 +1,69 @@ +package com.github.takahirom.roborazzi.sample.boxed + +import android.widget.TextView +import androidx.compose.ui.test.junit4.createAndroidComposeRule +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.matcher.ViewMatchers +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.github.takahirom.roborazzi.DefaultFileNameGenerator +import com.github.takahirom.roborazzi.ROBORAZZI_DEBUG +import com.github.takahirom.roborazzi.RobolectricDeviceQualifiers +import com.github.takahirom.roborazzi.RoborazziOptions +import com.github.takahirom.roborazzi.RoborazziTaskType +import com.github.takahirom.roborazzi.captureRoboImage +import com.github.takahirom.roborazzi.roborazziSystemPropertyOutputDirectory +import com.github.takahirom.roborazzi.sample.MainActivity +import com.github.takahirom.roborazzi.sample.R +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.annotation.Config +import org.robolectric.annotation.GraphicsMode +import java.io.File + +@RunWith(AndroidJUnit4::class) +@GraphicsMode(GraphicsMode.Mode.NATIVE) +@Config( + sdk = [30], + qualifiers = RobolectricDeviceQualifiers.NexusOne +) +class SizeChangeTest { + @get:Rule + val composeTestRule = createAndroidComposeRule() + + @Test( + expected = AssertionError::class + ) + fun sizeChangeTest() { + boxedEnvironment { + ROBORAZZI_DEBUG = true + val prefix = + "${roborazziSystemPropertyOutputDirectory()}/${this::class.qualifiedName}.sizeChangeTest" + val expectedOutput = + File("$prefix.png") + val expectedCompareOutput = File("${prefix}_compare.png") + expectedOutput.delete() + try { + onView(ViewMatchers.withId(R.id.textview_first)) + .captureRoboImage( + roborazziOptions = RoborazziOptions( + taskType = RoborazziTaskType.Record + ) + ) + composeTestRule.activity.findViewById(R.id.textview_first) + .text = "Hello, Roborazzi! This is a test for size change." + DefaultFileNameGenerator.reset() + + onView(ViewMatchers.withId(R.id.textview_first)) + .captureRoboImage( + roborazziOptions = RoborazziOptions( + taskType = RoborazziTaskType.Compare + ) + ) + assert(expectedOutput.exists()) + } finally { + expectedCompareOutput.delete() + } + } + } +}