-
-
Notifications
You must be signed in to change notification settings - Fork 370
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Part of Android Support: screenshot testing (#4411)
# Background Screenshot testing is a way to test UIs and in Android's case, typically without the need of running an emulator. This is achieved in recent developments with the usage of Compose and Previews (the same functionality that generates previews in android studio). The typical flow is: 1. A base line is generated, with screenshots being committed into the application's repo 2. Regression tests subsequently, compare the screenshots 3. For new UIs that devs decide to add coverage or agreed changes, baseline is updated Further Reading: https://developer.android.com/studio/preview/compose-screenshot-testing # Provided in this PR This PR, while it has in mind the full flow support, only provides the means to generate screenshots and run diffs with the same tools that AGP is using. At the same time, we keep the test task compatibility with Mill so we don't need to implement any custom runner tasks. ## Generating screenshots Using the same tool as AGP, the [compose-preview-renderer](https://android.googlesource.com/platform/tools/base/+/61923408e5f7dc20f0840844597f9dde17453a0f/preview/screenshot/screenshot-test-gradle-plugin/src/main/java/com/android/compose/screenshot/tasks/PreviewRenderWorkAction.kt), which has undocumented cli arguments. However, these can be found by running the respective gradle task in a sample Android studio project ```bash ./gradlew updateDebugScreenshotTest ``` Then, given the generated data, the PR worked towards generating the file computing classpaths and other needed files similarly ![CLI arguments generated by Gradle for the preview tool](https://github.com/user-attachments/assets/f358a93c-5f09-4000-b8a3-c814bb2de4e7) Currently these screenshots are ephemeral, and this PR is not concerned by adding support for version control on the screenshot base. The plan is for a future PR to make it easier for the users to customise the behaviour (e.g. choose the path) ## Testing screenshots AGP uses the [screenshot-validation-junit-engine](https://android.googlesource.com/platform/tools/base/+/61923408e5f7dc20f0840844597f9dde17453a0f/preview/screenshot/screenshot-validation-junit-engine). This PR provides similar functionality but hooking into Mill's testing infrastructure instead of Gradle. ## Example App The example App was set up initially with AGP and then a mill version was constructed with 2 differences: 1. Only 1 screen configuration is provided for the simplicity of this first attempt 2. Although compose preview is technically working, it is only kept in the screenTest module, again for the simplicity of this PR and not doing any changes to the compose support in the main android kotlin module yet. # Future developments / Not yet implemented in this PR - Baseline management - Updating previews (this can be done already, but with a crude overwrite) - More examples and more screen sizes and UI configurations - Discover classes and methods automatically --------- Co-authored-by: irodotos <irodotos@vaslabs.io>
- Loading branch information
Showing
31 changed files
with
918 additions
and
9 deletions.
There are no files selected for viewing
28 changes: 28 additions & 0 deletions
28
example/android/kotlinlib/3-compose-screenshot-tests/app/src/main/AndroidManifest.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<!-- Adopted from AGP screenshot test template, a sample can be found in--> | ||
<!-- https://github.com/vaslabs-ltd/android-screenshot-test-sample/blob/main/app/src/main/AndroidManifest.xml--> | ||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
package="com.example.screenshottest"> | ||
|
||
<application | ||
android:allowBackup="true" | ||
android:dataExtractionRules="@xml/data_extraction_rules" | ||
android:fullBackupContent="@xml/backup_rules" | ||
android:icon="@mipmap/ic_launcher" | ||
android:label="@string/app_name" | ||
android:roundIcon="@mipmap/ic_launcher_round" | ||
android:supportsRtl="true" | ||
android:theme="@style/Theme.ComposeTest"> | ||
<activity | ||
android:name=".MainActivity" | ||
android:exported="true" | ||
android:theme="@style/Theme.ComposeTest"> | ||
<intent-filter> | ||
<action android:name="android.intent.action.MAIN" /> | ||
|
||
<category android:name="android.intent.category.LAUNCHER" /> | ||
</intent-filter> | ||
</activity> | ||
</application> | ||
|
||
</manifest> |
12 changes: 12 additions & 0 deletions
12
...reenshot-tests/app/src/main/java/com/example/screenshottest/ExamplePreviewsScreenshots.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package com.example.screenshottest | ||
|
||
import androidx.compose.material3.Text | ||
import androidx.compose.runtime.Composable | ||
|
||
class ExamplePreviewsScreenshots { | ||
|
||
@Composable | ||
fun messageCard(name: String) { | ||
Text(text = "Hello, $name!") | ||
} | ||
} |
19 changes: 19 additions & 0 deletions
19
...b/3-compose-screenshot-tests/app/src/main/java/com/example/screenshottest/MainActivity.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package com.example.screenshottest | ||
|
||
import android.os.Bundle | ||
import androidx.activity.ComponentActivity | ||
import androidx.activity.compose.setContent | ||
import androidx.activity.enableEdgeToEdge | ||
import com.example.composetest.ui.theme.ComposeTestTheme | ||
|
||
class MainActivity : ComponentActivity() { | ||
override fun onCreate(savedInstanceState: Bundle?) { | ||
super.onCreate(savedInstanceState) | ||
enableEdgeToEdge() | ||
setContent { | ||
ComposeTestTheme { | ||
ExamplePreviewsScreenshots().messageCard("Hello, Screenshot!") | ||
} | ||
} | ||
} | ||
} |
11 changes: 11 additions & 0 deletions
11
...ib/3-compose-screenshot-tests/app/src/main/java/com/example/screenshottest/theme/Color.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package com.example.screenshottest.theme | ||
|
||
import androidx.compose.ui.graphics.Color | ||
|
||
val Purple80 = Color(0xFFD0BCFF) | ||
val PurpleGrey80 = Color(0xFFCCC2DC) | ||
val Pink80 = Color(0xFFEFB8C8) | ||
|
||
val Purple40 = Color(0xFF6650a4) | ||
val PurpleGrey40 = Color(0xFF625b71) | ||
val Pink40 = Color(0xFF7D5260) |
63 changes: 63 additions & 0 deletions
63
...ib/3-compose-screenshot-tests/app/src/main/java/com/example/screenshottest/theme/Theme.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
package com.example.composetest.ui.theme | ||
|
||
import android.os.Build | ||
import androidx.compose.foundation.isSystemInDarkTheme | ||
import androidx.compose.material3.MaterialTheme | ||
import androidx.compose.material3.darkColorScheme | ||
import androidx.compose.material3.dynamicDarkColorScheme | ||
import androidx.compose.material3.dynamicLightColorScheme | ||
import androidx.compose.material3.lightColorScheme | ||
import androidx.compose.runtime.Composable | ||
import androidx.compose.ui.platform.LocalContext | ||
import com.example.screenshottest.theme.Pink40 | ||
import com.example.screenshottest.theme.Pink80 | ||
import com.example.screenshottest.theme.Purple40 | ||
import com.example.screenshottest.theme.Purple80 | ||
import com.example.screenshottest.theme.PurpleGrey40 | ||
import com.example.screenshottest.theme.PurpleGrey80 | ||
|
||
private val DarkColorScheme = darkColorScheme( | ||
primary = Purple80, | ||
secondary = PurpleGrey80, | ||
tertiary = Pink80, | ||
) | ||
|
||
private val LightColorScheme = lightColorScheme( | ||
primary = Purple40, | ||
secondary = PurpleGrey40, | ||
tertiary = Pink40, | ||
|
||
/* Other default colors to override | ||
background = Color(0xFFFFFBFE), | ||
surface = Color(0xFFFFFBFE), | ||
onPrimary = Color.White, | ||
onSecondary = Color.White, | ||
onTertiary = Color.White, | ||
onBackground = Color(0xFF1C1B1F), | ||
onSurface = Color(0xFF1C1B1F), */ | ||
) | ||
|
||
@Suppress("FunctionName") | ||
@Composable | ||
fun ComposeTestTheme( | ||
darkTheme: Boolean = isSystemInDarkTheme(), | ||
// Dynamic color is available on Android 12+ | ||
dynamicColor: Boolean = true, | ||
content: @Composable () -> Unit, | ||
) { | ||
val colorScheme = when { | ||
dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { | ||
val context = LocalContext.current | ||
if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) | ||
} | ||
|
||
darkTheme -> DarkColorScheme | ||
else -> LightColorScheme | ||
} | ||
|
||
MaterialTheme( | ||
colorScheme = colorScheme, | ||
typography = Typography, | ||
content = content, | ||
) | ||
} |
33 changes: 33 additions & 0 deletions
33
...lib/3-compose-screenshot-tests/app/src/main/java/com/example/screenshottest/theme/Type.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package com.example.composetest.ui.theme | ||
|
||
import androidx.compose.material3.Typography | ||
import androidx.compose.ui.text.TextStyle | ||
import androidx.compose.ui.text.font.FontFamily | ||
import androidx.compose.ui.text.font.FontWeight | ||
import androidx.compose.ui.unit.sp | ||
|
||
// Set of Material typography styles to start with | ||
val Typography = Typography( | ||
bodyLarge = TextStyle( | ||
fontFamily = FontFamily.Default, | ||
fontWeight = FontWeight.Normal, | ||
fontSize = 16.sp, | ||
lineHeight = 24.sp, | ||
letterSpacing = 0.5.sp, | ||
), | ||
/* Other default text styles to override | ||
titleLarge = TextStyle( | ||
fontFamily = FontFamily.Default, | ||
fontWeight = FontWeight.Normal, | ||
fontSize = 22.sp, | ||
lineHeight = 28.sp, | ||
letterSpacing = 0.sp | ||
), | ||
labelSmall = TextStyle( | ||
fontFamily = FontFamily.Default, | ||
fontWeight = FontWeight.Medium, | ||
fontSize = 11.sp, | ||
lineHeight = 16.sp, | ||
letterSpacing = 0.5.sp | ||
) */ | ||
) |
170 changes: 170 additions & 0 deletions
170
...kotlinlib/3-compose-screenshot-tests/app/src/main/res/drawable/ic_launcher_background.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,170 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
android:width="108dp" | ||
android:height="108dp" | ||
android:viewportWidth="108" | ||
android:viewportHeight="108"> | ||
<path | ||
android:fillColor="#3DDC84" | ||
android:pathData="M0,0h108v108h-108z" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M9,0L9,108" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M19,0L19,108" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M29,0L29,108" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M39,0L39,108" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M49,0L49,108" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M59,0L59,108" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M69,0L69,108" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M79,0L79,108" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M89,0L89,108" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M99,0L99,108" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M0,9L108,9" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M0,19L108,19" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M0,29L108,29" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M0,39L108,39" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M0,49L108,49" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M0,59L108,59" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M0,69L108,69" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M0,79L108,79" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M0,89L108,89" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M0,99L108,99" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M19,29L89,29" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M19,39L89,39" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M19,49L89,49" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M19,59L89,59" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M19,69L89,69" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M19,79L89,79" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M29,19L29,89" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M39,19L39,89" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M49,19L49,89" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M59,19L59,89" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M69,19L69,89" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
<path | ||
android:fillColor="#00000000" | ||
android:pathData="M79,19L79,89" | ||
android:strokeWidth="0.8" | ||
android:strokeColor="#33FFFFFF" /> | ||
</vector> |
30 changes: 30 additions & 0 deletions
30
...kotlinlib/3-compose-screenshot-tests/app/src/main/res/drawable/ic_launcher_foreground.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
xmlns:aapt="http://schemas.android.com/aapt" | ||
android:width="108dp" | ||
android:height="108dp" | ||
android:viewportWidth="108" | ||
android:viewportHeight="108"> | ||
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z"> | ||
<aapt:attr name="android:fillColor"> | ||
<gradient | ||
android:endX="85.84757" | ||
android:endY="92.4963" | ||
android:startX="42.9492" | ||
android:startY="49.59793" | ||
android:type="linear"> | ||
<item | ||
android:color="#44000000" | ||
android:offset="0.0" /> | ||
<item | ||
android:color="#00000000" | ||
android:offset="1.0" /> | ||
</gradient> | ||
</aapt:attr> | ||
</path> | ||
<path | ||
android:fillColor="#FFFFFF" | ||
android:fillType="nonZero" | ||
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z" | ||
android:strokeWidth="1" | ||
android:strokeColor="#00000000" /> | ||
</vector> |
6 changes: 6 additions & 0 deletions
6
...d/kotlinlib/3-compose-screenshot-tests/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> | ||
<background android:drawable="@drawable/ic_launcher_background" /> | ||
<foreground android:drawable="@drawable/ic_launcher_foreground" /> | ||
<monochrome android:drawable="@drawable/ic_launcher_foreground" /> | ||
</adaptive-icon> |
6 changes: 6 additions & 0 deletions
6
...inlib/3-compose-screenshot-tests/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> | ||
<background android:drawable="@drawable/ic_launcher_background" /> | ||
<foreground android:drawable="@drawable/ic_launcher_foreground" /> | ||
<monochrome android:drawable="@drawable/ic_launcher_foreground" /> | ||
</adaptive-icon> |
Binary file added
BIN
+1.37 KB
...ndroid/kotlinlib/3-compose-screenshot-tests/app/src/main/res/mipmap-hdpi/ic_launcher.webp
Binary file not shown.
Binary file added
BIN
+2.83 KB
.../kotlinlib/3-compose-screenshot-tests/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
Binary file not shown.
Binary file added
BIN
+982 Bytes
...ndroid/kotlinlib/3-compose-screenshot-tests/app/src/main/res/mipmap-mdpi/ic_launcher.webp
Binary file not shown.
Binary file added
BIN
+1.73 KB
.../kotlinlib/3-compose-screenshot-tests/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
Binary file not shown.
Binary file added
BIN
+1.86 KB
...droid/kotlinlib/3-compose-screenshot-tests/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
Binary file not shown.
Binary file added
BIN
+3.83 KB
...kotlinlib/3-compose-screenshot-tests/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
Binary file not shown.
Binary file added
BIN
+2.82 KB
...roid/kotlinlib/3-compose-screenshot-tests/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
Binary file not shown.
Binary file added
BIN
+5.78 KB
...otlinlib/3-compose-screenshot-tests/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
Binary file not shown.
Binary file added
BIN
+3.75 KB
...oid/kotlinlib/3-compose-screenshot-tests/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
Binary file not shown.
Binary file added
BIN
+7.6 KB
...tlinlib/3-compose-screenshot-tests/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
Binary file not shown.
10 changes: 10 additions & 0 deletions
10
example/android/kotlinlib/3-compose-screenshot-tests/app/src/main/res/values/colors.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<resources> | ||
<color name="purple_200">#FFBB86FC</color> | ||
<color name="purple_500">#FF6200EE</color> | ||
<color name="purple_700">#FF3700B3</color> | ||
<color name="teal_200">#FF03DAC5</color> | ||
<color name="teal_700">#FF018786</color> | ||
<color name="black">#FF000000</color> | ||
<color name="white">#FFFFFFFF</color> | ||
</resources> |
Oops, something went wrong.