diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index aed91d8c..2ae37b62 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,7 +42,7 @@ jobs: distribution: 'temurin' - name: Build modules - run: ./gradlew build jacocoTestReport --stacktrace + run: ./gradlew build jacocoTestReport -x :maps-app:generateDebugScreenshotTestConfig -x :maps-app:testDebugScreenshotTest -x :maps-app:generateReleaseScreenshotTestConfig -x :maps-app:testReleaseScreenshotTest --stacktrace - name: Run Screenshot Tests run: ./gradlew validateDebugScreenshotTest @@ -51,5 +51,5 @@ jobs: uses: actions/upload-artifact@v4 if: always() with: - name: my-artifact + name: screenshot-report path: maps-app/build/reports diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 22e698a4..cc84881e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,23 +1,23 @@ [versions] activitycompose = "1.10.1" -agp = "8.10.1" -androidCore = "1.6.1" -androidx-core = "1.16.0" -androidxtest = "1.6.2" -compose-bom = "2025.04.00" +agp = "8.12.1" +androidCore = "1.7.0" +androidx-core = "1.17.0" +androidxtest = "1.7.0" +compose-bom = "2025.08.01" dokka = "2.0.0" -espresso = "3.6.1" +espresso = "3.7.0" gradleMavenPublishPlugin = "0.34.0" jacoco-plugin = "0.2.1" junit = "4.13.2" -junitktx = "1.2.1" -kotlin = "2.2.0" +junitktx = "1.3.0" +kotlin = "2.2.10" kotlinxCoroutines = "1.10.2" -leakcanaryAndroid = "2.12" +leakcanaryAndroid = "2.14" mapsecrets = "2.0.1" mapsktx = "5.2.0" -org-jacoco-core = "0.8.12" -screenshot = "0.0.1-alpha10" +org-jacoco-core = "0.8.13" +screenshot = "0.0.1-alpha11" constraintlayout = "2.2.1" material = "1.12.0" @@ -52,6 +52,7 @@ org-jacoco-core = { module = "org.jacoco:org.jacoco.core", version.ref = "org-ja test-junit = { module = "junit:junit", version.ref = "junit" } androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" } material = { group = "com.google.android.material", name = "material", version.ref = "material" } +screenshot-validation-api = { group = "com.android.tools.screenshot", name = "screenshot-validation-api", version.ref = "screenshot" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e2847c82..d4081da4 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f5feea6d..f3b75f3b 100755 --- a/gradlew +++ b/gradlew @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum diff --git a/maps-app/build.gradle.kts b/maps-app/build.gradle.kts index 53fa4232..29fe6fab 100644 --- a/maps-app/build.gradle.kts +++ b/maps-app/build.gradle.kts @@ -23,11 +23,11 @@ android { } namespace = "com.google.maps.android.compose" - compileSdk = 35 + compileSdk = 36 defaultConfig { minSdk = 21 - targetSdk = 35 + targetSdk = 36 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" @@ -67,6 +67,7 @@ dependencies { implementation(libs.androidx.compose.ui.preview.tooling) implementation(libs.androidx.constraintlayout) implementation(libs.material) + implementation(libs.screenshot.validation.api) debugImplementation(libs.androidx.compose.ui.tooling) debugImplementation(libs.leakcanary.android) diff --git a/maps-app/src/debug/screenshotTest/reference/com/google/maps/android/compose/ScaleBarTest/PreviewDisappearingScaleBar_0.png b/maps-app/src/debug/screenshotTest/reference/com/google/maps/android/compose/ScaleBarTest/PreviewDisappearingScaleBar_0.png deleted file mode 100644 index ffaf22e7..00000000 Binary files a/maps-app/src/debug/screenshotTest/reference/com/google/maps/android/compose/ScaleBarTest/PreviewDisappearingScaleBar_0.png and /dev/null differ diff --git a/maps-app/src/debug/screenshotTest/reference/com/google/maps/android/compose/ScaleBarTest/PreviewScaleBar_0.png b/maps-app/src/debug/screenshotTest/reference/com/google/maps/android/compose/ScaleBarTest/PreviewScaleBar_0.png deleted file mode 100644 index ffaf22e7..00000000 Binary files a/maps-app/src/debug/screenshotTest/reference/com/google/maps/android/compose/ScaleBarTest/PreviewScaleBar_0.png and /dev/null differ diff --git a/maps-app/src/main/java/com/google/maps/android/compose/BasicMapActivity.kt b/maps-app/src/main/java/com/google/maps/android/compose/BasicMapActivity.kt index fa69f9a4..7fa10979 100644 --- a/maps-app/src/main/java/com/google/maps/android/compose/BasicMapActivity.kt +++ b/maps-app/src/main/java/com/google/maps/android/compose/BasicMapActivity.kt @@ -58,8 +58,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.testTag import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import com.android.tools.screenshot.PreviewTest import com.google.android.gms.maps.CameraUpdateFactory import com.google.android.gms.maps.model.BitmapDescriptorFactory import com.google.android.gms.maps.model.CameraPosition @@ -433,7 +433,7 @@ private fun DebugView( } -@Preview +@PreviewTest @Composable fun GoogleMapViewPreview() { MapsComposeSampleTheme { diff --git a/maps-app/src/main/java/com/google/maps/android/compose/ScaleBarActivity.kt b/maps-app/src/main/java/com/google/maps/android/compose/ScaleBarActivity.kt index ba7d72b5..b06ff28b 100644 --- a/maps-app/src/main/java/com/google/maps/android/compose/ScaleBarActivity.kt +++ b/maps-app/src/main/java/com/google/maps/android/compose/ScaleBarActivity.kt @@ -38,8 +38,8 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import com.android.tools.screenshot.PreviewTest import com.google.android.gms.maps.model.CameraPosition import com.google.android.gms.maps.model.LatLng import com.google.maps.android.compose.theme.MapsComposeSampleTheme @@ -133,7 +133,7 @@ class ScaleBarActivity : ComponentActivity() { } } -@Preview +@PreviewTest @Composable fun PreviewScaleBar() { val cameraPositionState = remember { diff --git a/maps-app/src/screenshotTest/AndroidManifest.xml b/maps-app/src/screenshotTest/AndroidManifest.xml new file mode 100644 index 00000000..db93b49b --- /dev/null +++ b/maps-app/src/screenshotTest/AndroidManifest.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/maps-app/src/screenshotTest/java/com/google/maps/android/compose/ScaleBarTest.kt b/maps-app/src/screenshotTest/java/com/google/maps/android/compose/ScaleBarTest.kt index c27c439b..e29ddef2 100644 --- a/maps-app/src/screenshotTest/java/com/google/maps/android/compose/ScaleBarTest.kt +++ b/maps-app/src/screenshotTest/java/com/google/maps/android/compose/ScaleBarTest.kt @@ -6,6 +6,7 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import com.android.tools.screenshot.PreviewTest import com.google.android.gms.maps.model.CameraPosition import com.google.android.gms.maps.model.LatLng import com.google.maps.android.compose.theme.MapsComposeSampleTheme @@ -14,7 +15,8 @@ import com.google.maps.android.compose.widgets.ScaleBar class ScaleBarTest() { - @Preview + @PreviewTest + @Preview(showBackground = true) @Composable fun PreviewScaleBar() { val cameraPositionState = remember { @@ -36,7 +38,8 @@ class ScaleBarTest() { } } - @Preview + @PreviewTest + @Preview(showBackground = true) @Composable fun PreviewDisappearingScaleBar() { val cameraPositionState = remember { diff --git a/maps-app/src/screenshotTestDebug/reference/com/google/maps/android/compose/ScaleBarTest/PreviewDisappearingScaleBar_748aa731_0.png b/maps-app/src/screenshotTestDebug/reference/com/google/maps/android/compose/ScaleBarTest/PreviewDisappearingScaleBar_748aa731_0.png new file mode 100644 index 00000000..ba725732 Binary files /dev/null and b/maps-app/src/screenshotTestDebug/reference/com/google/maps/android/compose/ScaleBarTest/PreviewDisappearingScaleBar_748aa731_0.png differ diff --git a/maps-app/src/screenshotTestDebug/reference/com/google/maps/android/compose/ScaleBarTest/PreviewScaleBar_748aa731_0.png b/maps-app/src/screenshotTestDebug/reference/com/google/maps/android/compose/ScaleBarTest/PreviewScaleBar_748aa731_0.png new file mode 100644 index 00000000..ba725732 Binary files /dev/null and b/maps-app/src/screenshotTestDebug/reference/com/google/maps/android/compose/ScaleBarTest/PreviewScaleBar_748aa731_0.png differ diff --git a/maps-compose-utils/build.gradle.kts b/maps-compose-utils/build.gradle.kts index f9ffc0a0..d889f7c2 100644 --- a/maps-compose-utils/build.gradle.kts +++ b/maps-compose-utils/build.gradle.kts @@ -10,7 +10,7 @@ android { } namespace = "com.google.maps.android.compose.utils" - compileSdk = 35 + compileSdk = 36 defaultConfig { minSdk = 21 diff --git a/maps-compose-widgets/build.gradle.kts b/maps-compose-widgets/build.gradle.kts index d9d71c79..5518fa60 100644 --- a/maps-compose-widgets/build.gradle.kts +++ b/maps-compose-widgets/build.gradle.kts @@ -10,7 +10,7 @@ android { } namespace = "com.google.maps.android.compose.widgets" - compileSdk = 35 + compileSdk = 36 defaultConfig { minSdk = 21 diff --git a/maps-compose/build.gradle.kts b/maps-compose/build.gradle.kts index b2e17e7c..f1ee4b15 100644 --- a/maps-compose/build.gradle.kts +++ b/maps-compose/build.gradle.kts @@ -12,7 +12,7 @@ android { } namespace = "com.google.maps.android.compose" - compileSdk = 35 + compileSdk = 36 defaultConfig { minSdk = 21