Skip to main content

build-screenshot-tests

A skill for building instrumented screenshot tests in Remote Compose using RemoteComposeScreenshotTestRule.

Informações da origem

Repositório
JetBrains/compose-multiplatform-core
Última atividade na origem
6 de maio de 2026 às 11:27
Idioma detectado do SKILL.md
inglês
Estrelas
661
Forks
149

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
build_screenshot_tests
description
A skill for building instrumented screenshot tests in Remote Compose using RemoteComposeScreenshotTestRule.
# Building Screenshot Tests using RemoteComposeScreenshotTestRule > [!IMPORTANT] > **AI INSTRUCTION:** Do not assume you should use `RemoteComposeScreenshotTestRule` for all tests. If the user asks you to write a screenshot test, you MUST first explicitly ask them: "Would you like me to use the `RemoteComposeScreenshotTestRule` for this test?" Proceed with using this skill only if they confirm. This skill provides guidelines for building screenshot tests in the `@compose/remote/remote-creation-compose` project. ## Purpose `RemoteComposeScreenshotTestRule` is a JUnit rule that allows taking screenshots of Remote Compose components. It handles: 1. Capturing the remote document. 2. Rendering it using `RemoteDocumentPlayer`. 3. Verifying the rendered image against a "golden" screenshot. ## Setup 1. **Test Class Annotations**: Annotate the test class with `@MediumTest`, `@SdkSuppress(minSdkVersion = 35, maxSdkVersion = 35)`, and `@RunWith(AndroidJUnit4::class)`. 2. **Add the Rule**: Define the rule inside the test class. ```kotlin @get:Rule val composeTestRule: RemoteComposeScreenshotTestRule by lazy { RemoteComposeScreenshotTestRule( moduleDirectory = SCREENSHOT_GOLDEN_DIRECTORY, matcher = MSSIMMatcher(threshold = 0.999), ) } ``` *Note: `SCREENSHOT_GOLDEN_DIRECTORY` is usually defined in the module, e.g., `androidx.compose.remote.creation.compose.SCREENSHOT_GOLDEN_DIRECTORY`.* ## How to use `RemoteComposeScreenshotTestRule` ### 1. Basic Usage (Direct Testing) Use `runScreenshotTest` and provide a lambda with the Remote Composable content you want to test. ```kotlin @Test fun simpleTest() { composeTestRule.runScreenshotTest { RemoteBox( modifier = RemoteModifier.fillMaxSize().background(Color.Red) ) } } ``` ### 2. Overriding Configuration You can override profile, layout direction, or offer outer content if needed. ```kotlin @Test fun alignByBaseline() { composeTestRule.runScreenshotTest(profile = TestProfiles.androidXExperimental) { RemoteColumn(modifier = RemoteModifier.fillMaxSize()) { RemoteRow(modifier = RemoteModifier.fillMaxWidth()) { RemoteText( text = "Large String", fontSize = 40.rsp, modifier = RemoteModifier.alignByBaseline(), ) RemoteText( text = "Small String", fontSize = 14.rsp, modifier = RemoteModifier.alignByBaseline(), ) } } } } ``` ### 3. Grid Testing (Optional) For testing multiple variations efficiently, you can combine this rule with `GridScreenshotUI`. Refer to the `build_grid_screenshot_tests` skill for detailed instructions on using the grid utility. ## Best Practices - **Thresholds**: Use `MSSIMMatcher(threshold = 0.999)` for high-precision matching. - **Golden Directory**: Ensure `moduleDirectory` points to the correct golden assets folder. - **Remote Scope**: Inside the `runScreenshotTest` lambda, you are in a `@RemoteComposable @Composable` scope. Make sure to use `RemoteModifier` and Remote components (e.g. `RemoteBox`, `RemoteText`).
Ver no GitHub