Skip to content

Commit 90ff469

Browse files
runningcodeclaude
andcommitted
fix(replay): Use Java API in snapshot test to avoid extension dep (JAVA-504)
The Kotlin extension `beforeStoreFrame` comes from `sentry-android-replay` which may not resolve in the UI test module. Use the Java callback API directly instead. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 2aff4b0 commit 90ff469

1 file changed

Lines changed: 16 additions & 13 deletions

File tree

  • sentry-android-integration-tests/sentry-uitest-android/src/androidTest/java/io/sentry/uitest/android

sentry-android-integration-tests/sentry-uitest-android/src/androidTest/java/io/sentry/uitest/android/ReplaySnapshotTest.kt

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import android.graphics.Bitmap
44
import android.os.Environment
55
import androidx.lifecycle.Lifecycle
66
import androidx.test.core.app.launchActivity
7-
import io.sentry.android.replay.beforeStoreFrame
7+
import io.sentry.SentryReplayOptions
8+
import io.sentry.TypeCheckHint
89
import java.io.File
910
import java.util.concurrent.CopyOnWriteArrayList
1011
import java.util.concurrent.CountDownLatch
@@ -33,20 +34,22 @@ class ReplaySnapshotTest : BaseUiTest() {
3334

3435
initSentry {
3536
it.sessionReplay.sessionSampleRate = 1.0
36-
it.sessionReplay.beforeStoreFrame {
37-
frameBitmap: Bitmap,
38-
frameTimestamp: Long,
39-
screenName: String? ->
40-
val name = screenName ?: "unknown"
41-
if (!capturedScreens.contains(name)) {
42-
val file = File(snapshotsDir, "${name}_$frameTimestamp.png")
43-
file.outputStream().use { out ->
44-
frameBitmap.compress(Bitmap.CompressFormat.PNG, 100, out)
37+
it.sessionReplay.setBeforeStoreFrame(
38+
SentryReplayOptions.BeforeStoreFrameCallback { hint, frameTimestamp, screenName ->
39+
val frameBitmap =
40+
hint.getAs(TypeCheckHint.REPLAY_FRAME_BITMAP, Bitmap::class.java)
41+
?: return@BeforeStoreFrameCallback
42+
val name = screenName ?: "unknown"
43+
if (!capturedScreens.contains(name)) {
44+
val file = File(snapshotsDir, "${name}_$frameTimestamp.png")
45+
file.outputStream().use { out ->
46+
frameBitmap.compress(Bitmap.CompressFormat.PNG, 100, out)
47+
}
48+
capturedScreens.add(name)
4549
}
46-
capturedScreens.add(name)
50+
frameReceived.countDown()
4751
}
48-
frameReceived.countDown()
49-
}
52+
)
5053
}
5154

5255
assertTrue(frameReceived.await(10, TimeUnit.SECONDS), "Expected at least one replay frame")

0 commit comments

Comments
 (0)