qdsfdhvh/compose-imageloader

no image in Paparazzi snapshot

Opened this issue · 6 comments

I'm trying to write a Paparazzi ui test, but no image is displayed :

my test :

class TempTest {
    private fun generateImageLoader() = ImageLoader {
        interceptor {
            useDefaultInterceptors = false
            addInterceptor { ImageResult.OfPainter(ColorPainter(Color.Green)) }
        }
    }

    @get:Rule
    val paparazzi = Paparazzi(
        deviceConfig = DeviceConfig.PIXEL_6,
        theme = "android:Theme.Material.NoActionBar",
    )

    @Test
    fun launchComposable() {
        paparazzi.snapshot {
            CompositionLocalProvider(LocalImageLoader provides remember { generateImageLoader() }) {
                AutoSizeImage("", null, modifier = Modifier.size(200.dp))
            }
        }
    }
}

PS : I managed to write this kind of test with Coil

The problem seems to be in AsyncSizeResolver, For now workaround you can try this:

// rememberImagePainter will not auto set AsyncSizeResolver
Image(
    rememberImagePainter("", imageLoader = imageLoader),
    contentDescription = "image",
    modifier = Modifier.size(100.dp),
)
// or
AutoSizeImage(
    ImageRequest("") {
        // set custom SizeResolver
        size(SizeResolver(Size(100f, 100f)))
    },
    contentDescription = "image",
    modifier = Modifier.size(100.dp),
    imageLoader = imageLoader,
)

Neither works.

#368 here is my test code, maybe it helps.

I got it

all tests
./gradlew composeApp:recordPaparazziDebug
individual test
./gradlew composeApp:recordPaparazziDebug --tests="SampleTest"
mockmp + koin-test
mockative + koin-test
koint-test
mockmp
mockative

Thank you for your help.

Sorry, I don't see the other side on my phone, I'll test it later ./gradlew composeApp:recordPaparazziDebug --tests="SampleTest"

ec4071a replace imageLoader dispatcher maybe is a way.