diff --git a/app-nia-catalog/build.gradle.kts b/app-nia-catalog/build.gradle.kts index 6bcd08116..abaf5b1eb 100644 --- a/app-nia-catalog/build.gradle.kts +++ b/app-nia-catalog/build.gradle.kts @@ -31,7 +31,7 @@ plugins { kotlin { @OptIn(ExperimentalWasmDsl::class) wasmJs { - moduleName = "composeApp" + outputModuleName.set("composeApp") browser { commonWebpackConfig { outputFileName = "composeApp.js" @@ -52,7 +52,11 @@ kotlin { } } - jvm("desktop") + jvm("desktop") { + compilerOptions { + jvmTarget.set(JVM_11) + } + } listOf( iosX64(), @@ -94,7 +98,7 @@ android { versionName = "0.0.1" // X.Y.Z; X = Major, Y = minor, Z = Patch level minSdk = 24 targetSdk = 34 - compileSdk = 34 + compileSdk = 35 // The UI catalog does not depend on content from the app, however, it depends on modules // which do, so we must specify a default value for the contentType dimension. missingDimensionStrategy("contentType", "demo") diff --git a/app-nia-catalog/dependencies/releaseRuntimeClasspath.txt b/app-nia-catalog/dependencies/releaseRuntimeClasspath.txt index 9ca68afbb..c48e02b95 100644 --- a/app-nia-catalog/dependencies/releaseRuntimeClasspath.txt +++ b/app-nia-catalog/dependencies/releaseRuntimeClasspath.txt @@ -1,6 +1,6 @@ -androidx.activity:activity-compose:1.9.3 -androidx.activity:activity-ktx:1.9.3 -androidx.activity:activity:1.9.3 +androidx.activity:activity-compose:1.10.0 +androidx.activity:activity-ktx:1.10.0 +androidx.activity:activity:1.10.0 androidx.annotation:annotation-experimental:1.4.1 androidx.annotation:annotation-jvm:1.9.1 androidx.annotation:annotation:1.9.1 @@ -8,57 +8,57 @@ androidx.appcompat:appcompat-resources:1.7.0 androidx.arch.core:core-common:2.2.0 androidx.arch.core:core-runtime:2.2.0 androidx.autofill:autofill:1.0.0 -androidx.collection:collection-jvm:1.4.4 -androidx.collection:collection-ktx:1.4.4 -androidx.collection:collection:1.4.4 -androidx.compose.animation:animation-android:1.7.6 -androidx.compose.animation:animation-core-android:1.7.6 -androidx.compose.animation:animation-core:1.7.6 -androidx.compose.animation:animation:1.7.6 -androidx.compose.foundation:foundation-android:1.7.6 -androidx.compose.foundation:foundation-layout-android:1.7.6 -androidx.compose.foundation:foundation-layout:1.7.6 -androidx.compose.foundation:foundation:1.7.6 -androidx.compose.material3.adaptive:adaptive-android:1.0.0 -androidx.compose.material3.adaptive:adaptive-layout-android:1.0.0 -androidx.compose.material3.adaptive:adaptive-layout:1.0.0 -androidx.compose.material3.adaptive:adaptive:1.0.0 -androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.1 -androidx.compose.material3:material3-adaptive-navigation-suite:1.3.1 -androidx.compose.material3:material3-android:1.3.1 -androidx.compose.material3:material3:1.3.1 -androidx.compose.material:material-android:1.7.6 +androidx.collection:collection-jvm:1.5.0 +androidx.collection:collection-ktx:1.5.0 +androidx.collection:collection:1.5.0 +androidx.compose.animation:animation-android:1.8.0 +androidx.compose.animation:animation-core-android:1.8.0 +androidx.compose.animation:animation-core:1.8.0 +androidx.compose.animation:animation:1.8.0 +androidx.compose.foundation:foundation-android:1.8.0 +androidx.compose.foundation:foundation-layout-android:1.8.0 +androidx.compose.foundation:foundation-layout:1.8.0 +androidx.compose.foundation:foundation:1.8.0 +androidx.compose.material3.adaptive:adaptive-android:1.1.0 +androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0 +androidx.compose.material3.adaptive:adaptive-layout:1.1.0 +androidx.compose.material3.adaptive:adaptive:1.1.0 +androidx.compose.material3:material3-adaptive-navigation-suite-android:1.3.2 +androidx.compose.material3:material3-adaptive-navigation-suite:1.3.2 +androidx.compose.material3:material3-android:1.3.2 +androidx.compose.material3:material3:1.3.2 +androidx.compose.material:material-android:1.8.0 androidx.compose.material:material-icons-core-android:1.7.6 androidx.compose.material:material-icons-core:1.7.6 androidx.compose.material:material-icons-extended-android:1.7.6 androidx.compose.material:material-icons-extended:1.7.6 -androidx.compose.material:material-ripple-android:1.7.6 -androidx.compose.material:material-ripple:1.7.6 -androidx.compose.material:material:1.7.6 -androidx.compose.runtime:runtime-android:1.7.6 -androidx.compose.runtime:runtime-saveable-android:1.7.6 -androidx.compose.runtime:runtime-saveable:1.7.6 -androidx.compose.runtime:runtime:1.7.6 -androidx.compose.ui:ui-android:1.7.6 -androidx.compose.ui:ui-geometry-android:1.7.6 -androidx.compose.ui:ui-geometry:1.7.6 -androidx.compose.ui:ui-graphics-android:1.7.6 -androidx.compose.ui:ui-graphics:1.7.6 -androidx.compose.ui:ui-text-android:1.7.6 -androidx.compose.ui:ui-text:1.7.6 -androidx.compose.ui:ui-tooling-preview-android:1.7.6 -androidx.compose.ui:ui-tooling-preview:1.7.6 -androidx.compose.ui:ui-unit-android:1.7.6 -androidx.compose.ui:ui-unit:1.7.6 -androidx.compose.ui:ui-util-android:1.7.6 -androidx.compose.ui:ui-util:1.7.6 -androidx.compose.ui:ui:1.7.6 +androidx.compose.material:material-ripple-android:1.8.0 +androidx.compose.material:material-ripple:1.8.0 +androidx.compose.material:material:1.8.0 +androidx.compose.runtime:runtime-android:1.8.1 +androidx.compose.runtime:runtime-saveable-android:1.8.1 +androidx.compose.runtime:runtime-saveable:1.8.1 +androidx.compose.runtime:runtime:1.8.1 +androidx.compose.ui:ui-android:1.8.1 +androidx.compose.ui:ui-geometry-android:1.8.1 +androidx.compose.ui:ui-geometry:1.8.1 +androidx.compose.ui:ui-graphics-android:1.8.1 +androidx.compose.ui:ui-graphics:1.8.1 +androidx.compose.ui:ui-text-android:1.8.1 +androidx.compose.ui:ui-text:1.8.1 +androidx.compose.ui:ui-tooling-preview-android:1.8.1 +androidx.compose.ui:ui-tooling-preview:1.8.1 +androidx.compose.ui:ui-unit-android:1.8.1 +androidx.compose.ui:ui-unit:1.8.1 +androidx.compose.ui:ui-util-android:1.8.1 +androidx.compose.ui:ui-util:1.8.1 +androidx.compose.ui:ui:1.8.1 androidx.concurrent:concurrent-futures:1.1.0 -androidx.core:core-ktx:1.13.1 -androidx.core:core:1.13.1 +androidx.core:core-ktx:1.15.0 +androidx.core:core:1.15.0 androidx.customview:customview-poolingcontainer:1.0.0 -androidx.emoji2:emoji2:1.3.0 -androidx.exifinterface:exifinterface:1.3.7 +androidx.emoji2:emoji2:1.4.0 +androidx.exifinterface:exifinterface:1.4.1 androidx.graphics:graphics-path:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.lifecycle:lifecycle-common-java8:2.8.7 @@ -80,7 +80,7 @@ androidx.profileinstaller:profileinstaller:1.4.1 androidx.savedstate:savedstate-ktx:1.2.1 androidx.savedstate:savedstate:1.2.1 androidx.startup:startup-runtime:1.1.1 -androidx.tracing:tracing:1.0.0 +androidx.tracing:tracing:1.2.0 androidx.vectordrawable:vectordrawable-animated:1.1.0 androidx.vectordrawable:vectordrawable:1.1.0 androidx.versionedparcelable:versionedparcelable:1.1.1 @@ -88,50 +88,51 @@ androidx.window.extensions.core:core:1.0.0 androidx.window:window-core-android:1.3.0 androidx.window:window-core:1.3.0 androidx.window:window:1.3.0 -com.google.accompanist:accompanist-drawablepainter:0.36.0 +com.google.accompanist:accompanist-drawablepainter:0.37.3 com.google.guava:listenablefuture:1.0 -com.squareup.okio:okio-jvm:3.9.1 -com.squareup.okio:okio:3.9.1 -io.coil-kt.coil3:coil-compose-core-android:3.0.3 -io.coil-kt.coil3:coil-compose-core:3.0.3 -io.coil-kt.coil3:coil-core-android:3.0.3 -io.coil-kt.coil3:coil-core:3.0.3 +com.squareup.okio:okio-jvm:3.11.0 +com.squareup.okio:okio:3.11.0 +io.coil-kt.coil3:coil-compose-core-android:3.2.0 +io.coil-kt.coil3:coil-compose-core:3.2.0 +io.coil-kt.coil3:coil-core-android:3.2.0 +io.coil-kt.coil3:coil-core:3.2.0 org.jetbrains.androidx.lifecycle:lifecycle-common:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.8.4 org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.8.4 org.jetbrains.androidx.window:window-core:1.3.1 -org.jetbrains.compose.animation:animation-core:1.7.3 -org.jetbrains.compose.animation:animation:1.7.3 -org.jetbrains.compose.annotation-internal:annotation:1.7.3 -org.jetbrains.compose.collection-internal:collection:1.7.3 -org.jetbrains.compose.components:components-resources-android:1.7.3 -org.jetbrains.compose.components:components-resources:1.7.3 -org.jetbrains.compose.components:components-ui-tooling-preview-android:1.7.3 -org.jetbrains.compose.components:components-ui-tooling-preview:1.7.3 -org.jetbrains.compose.foundation:foundation-layout:1.7.3 -org.jetbrains.compose.foundation:foundation:1.7.3 -org.jetbrains.compose.material3.adaptive:adaptive-layout:1.0.1 -org.jetbrains.compose.material3.adaptive:adaptive:1.0.1 -org.jetbrains.compose.material3:material3-adaptive-navigation-suite:1.7.3 -org.jetbrains.compose.material3:material3:1.7.3 +org.jetbrains.compose.animation:animation-core:1.8.0 +org.jetbrains.compose.animation:animation:1.8.0 +org.jetbrains.compose.annotation-internal:annotation:1.8.0 +org.jetbrains.compose.collection-internal:collection:1.8.0 +org.jetbrains.compose.components:components-resources-android:1.8.0 +org.jetbrains.compose.components:components-resources:1.8.0 +org.jetbrains.compose.components:components-ui-tooling-preview-android:1.8.0 +org.jetbrains.compose.components:components-ui-tooling-preview:1.8.0 +org.jetbrains.compose.foundation:foundation-layout:1.8.0 +org.jetbrains.compose.foundation:foundation:1.8.0 +org.jetbrains.compose.material3.adaptive:adaptive-layout:1.1.0 +org.jetbrains.compose.material3.adaptive:adaptive:1.1.0 +org.jetbrains.compose.material3:material3-adaptive-navigation-suite:1.8.0 +org.jetbrains.compose.material3:material3:1.8.0 org.jetbrains.compose.material:material-icons-core:1.7.3 org.jetbrains.compose.material:material-icons-extended:1.7.3 -org.jetbrains.compose.material:material-ripple:1.7.3 -org.jetbrains.compose.material:material:1.7.3 -org.jetbrains.compose.runtime:runtime-saveable:1.7.3 -org.jetbrains.compose.runtime:runtime:1.7.3 -org.jetbrains.compose.ui:ui-geometry:1.7.3 -org.jetbrains.compose.ui:ui-graphics:1.7.3 -org.jetbrains.compose.ui:ui-text:1.7.3 -org.jetbrains.compose.ui:ui-unit:1.7.3 -org.jetbrains.compose.ui:ui-util:1.7.3 -org.jetbrains.compose.ui:ui:1.7.3 -org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -org.jetbrains.kotlinx:atomicfu-jvm:0.23.2 -org.jetbrains.kotlinx:atomicfu:0.23.2 -org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 -org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 +org.jetbrains.compose.material:material-ripple:1.8.0 +org.jetbrains.compose.material:material:1.8.0 +org.jetbrains.compose.runtime:runtime-saveable:1.8.0 +org.jetbrains.compose.runtime:runtime:1.8.0 +org.jetbrains.compose.ui:ui-backhandler-android:1.8.0 +org.jetbrains.compose.ui:ui-backhandler:1.8.0 +org.jetbrains.compose.ui:ui-geometry:1.8.0 +org.jetbrains.compose.ui:ui-graphics:1.8.0 +org.jetbrains.compose.ui:ui-text:1.8.0 +org.jetbrains.compose.ui:ui-unit:1.8.0 +org.jetbrains.compose.ui:ui-util:1.8.0 +org.jetbrains.compose.ui:ui:1.8.0 +org.jetbrains.kotlin:kotlin-stdlib:2.1.20 +org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2 +org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.2 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2 +org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2 org.jetbrains:annotations:23.0.0 +org.jspecify:jspecify:1.0.0 diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f5b13fe24..e56fcc7b1 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -114,19 +114,23 @@ kotlin { commonTest.dependencies { implementation(projects.core.dataTest) implementation(projects.core.testing) - implementation(projects.core.screenshotTesting) // implementation(projects.sync.syncTest) implementation(libs.kotlin.test) @OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class) implementation(compose.uiTest) } + androidUnitTest.dependencies { + implementation(projects.core.screenshotTesting) + } + androidInstrumentedTest.dependencies { implementation(projects.core.dataTest) implementation(projects.core.testing) implementation(libs.androidx.navigation.testing) implementation(project.dependencies.platform(libs.androidx.compose.bom)) implementation(libs.androidx.compose.ui.test) + implementation(libs.androidx.test.espresso.core) implementation(libs.koin.test) } diff --git a/app/release-badging.txt b/app/release-badging.txt index 1660c766c..5c1511f5b 100644 --- a/app/release-badging.txt +++ b/app/release-badging.txt @@ -1,5 +1,5 @@ package: name='com.google.samples.apps.nowinandroid' versionCode='8' versionName='0.1.2' platformBuildVersionName='15' platformBuildVersionCode='35' compileSdkVersion='35' compileSdkVersionCodename='15' -sdkVersion:'21' +minSdkVersion:'21' targetSdkVersion:'34' uses-permission: name='android.permission.INTERNET' uses-permission: name='android.permission.ACCESS_NETWORK_STATE' diff --git a/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/NiaApplication.kt b/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/NiaApplication.kt index d10d58d68..8a40af118 100644 --- a/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/NiaApplication.kt +++ b/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/NiaApplication.kt @@ -27,22 +27,23 @@ import com.google.samples.apps.nowinandroid.util.ProfileVerifierLogger import org.koin.android.ext.android.inject import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidLogger -import org.koin.androix.startup.KoinStartup.onKoinStartup +import org.koin.androix.startup.KoinStartup +import org.koin.core.annotation.KoinExperimentalAPI +import org.koin.dsl.koinConfiguration /** * [Application] class for NiA */ -class NiaApplication : Application(), SingletonImageLoader.Factory { +@OptIn(KoinExperimentalAPI::class) +class NiaApplication : Application(), SingletonImageLoader.Factory, KoinStartup { - init { - onKoinStartup { - androidContext(this@NiaApplication) - androidLogger() - modules( - jankStatsModule, - appModules, - ) - } + override fun onKoinStartup() = koinConfiguration { + androidContext(this@NiaApplication) + androidLogger() + modules( + jankStatsModule, + appModules, + ) } private val profileVerifierLogger: ProfileVerifierLogger by inject() diff --git a/app/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/ui/NiaApp.kt b/app/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/ui/NiaApp.kt index 143e6e1ff..2dd6b9479 100644 --- a/app/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/ui/NiaApp.kt +++ b/app/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/ui/NiaApp.kt @@ -54,7 +54,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.testTag import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp -import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.NavDestination import androidx.navigation.NavDestination.Companion.hasRoute import androidx.navigation.NavDestination.Companion.hierarchy @@ -65,6 +64,7 @@ import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaTopAp import com.google.samples.apps.nowinandroid.core.designsystem.icon.NiaIcons import com.google.samples.apps.nowinandroid.core.designsystem.theme.GradientColors import com.google.samples.apps.nowinandroid.core.designsystem.theme.LocalGradientColors +import com.google.samples.apps.nowinandroid.core.ui.collectAsStateWithLifecycle import com.google.samples.apps.nowinandroid.feature.settings.SettingsDialog import com.google.samples.apps.nowinandroid.navigation.NiaNavHost import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination diff --git a/app/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt b/app/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt index 256e35e1e..ef5ad5aa6 100644 --- a/app/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt +++ b/app/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt @@ -32,20 +32,22 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.key import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.saveable.Saver import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import com.google.samples.apps.nowinandroid.core.ui.collectAsStateWithLifecycle import com.google.samples.apps.nowinandroid.feature.interests.InterestsRoute import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsRoute import com.google.samples.apps.nowinandroid.feature.topic.TopicDetailPlaceholder import com.google.samples.apps.nowinandroid.feature.topic.navigation.TopicRoute import com.google.samples.apps.nowinandroid.feature.topic.navigation.navigateToTopic import com.google.samples.apps.nowinandroid.feature.topic.navigation.topicScreen +import kotlinx.coroutines.launch import kotlinx.serialization.Serializable import org.koin.compose.viewmodel.koinViewModel import kotlin.uuid.ExperimentalUuidApi @@ -99,6 +101,8 @@ internal fun InterestsListDetailScreen( // listDetailNavigator.navigateBack() // } + val coroutineScope = rememberCoroutineScope() + var nestedNavHostStartRoute by remember { val route = selectedTopicId?.let { TopicRoute(id = it) } ?: TopicPlaceholderRoute mutableStateOf(route) @@ -125,7 +129,9 @@ internal fun InterestsListDetailScreen( nestedNavHostStartRoute = TopicRoute(id = topicId) nestedNavKey = Uuid.random() } - listDetailNavigator.navigateTo(ListDetailPaneScaffoldRole.Detail) + coroutineScope.launch { + listDetailNavigator.navigateTo(ListDetailPaneScaffoldRole.Detail) + } } ListDetailPaneScaffold( @@ -149,7 +155,11 @@ internal fun InterestsListDetailScreen( ) { topicScreen( showBackButton = !listDetailNavigator.isListPaneVisible(), - onBackClick = listDetailNavigator::navigateBack, + onBackClick = { + coroutineScope.launch { + listDetailNavigator.navigateBack() + } + }, onTopicClick = ::onTopicClickShowDetailPane, ) composable { diff --git a/build-logic/convention/src/main/kotlin/CmpApplicationConventionPlugin.kt b/build-logic/convention/src/main/kotlin/CmpApplicationConventionPlugin.kt index 47d4cd0a4..01754c5d6 100644 --- a/build-logic/convention/src/main/kotlin/CmpApplicationConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/CmpApplicationConventionPlugin.kt @@ -22,11 +22,14 @@ import com.google.samples.apps.nowinandroid.configureGradleManagedDevices import com.google.samples.apps.nowinandroid.configureKotlinAndroid import com.google.samples.apps.nowinandroid.configurePrintApksTask import com.google.samples.apps.nowinandroid.libs +import org.gradle.api.JavaVersion import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.api.tasks.compile.JavaCompile import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.getByType +import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension @@ -87,7 +90,11 @@ private fun Project.configureComposeMultiplatformApp() { } // Add JVM target for desktop - jvm() + jvm { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_11) + } + } // Configure iOS targets listOf( @@ -122,4 +129,15 @@ private fun Project.configureComposeMultiplatformApp() { dependsOn("allTests") } } + + // Set Java compilation compatibility for JVM target to match Kotlin JVM target (11). + // Only apply --release to non-Android Java tasks, since AGP manages bootclasspath itself. + project.tasks.withType().configureEach { + sourceCompatibility = JavaVersion.VERSION_11.toString() + targetCompatibility = JavaVersion.VERSION_11.toString() + // Android tasks are named like "compileDebugJavaWithJavac"; KMP JVM tasks like "compileJvmMainJava" + if (!name.endsWith("JavaWithJavac")) { + options.release.set(11) + } + } } diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/GradleManagedDevices.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/GradleManagedDevices.kt index f67e9093d..bb4252577 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/GradleManagedDevices.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/GradleManagedDevices.kt @@ -31,13 +31,14 @@ internal fun configureGradleManagedDevices( val pixel6 = DeviceConfig("Pixel 6", 31, "aosp") val pixelC = DeviceConfig("Pixel C", 30, "aosp-atd") - val allDevices = listOf(pixel4, pixel6, pixelC) - val ciDevices = listOf(pixel4, pixelC) + val deviceConfigs = listOf(pixel4, pixel6, pixelC) + val ciDeviceConfigs = listOf(pixel4, pixelC) commonExtension.testOptions { managedDevices { + @Suppress("DEPRECATION") devices { - allDevices.forEach { deviceConfig -> + deviceConfigs.forEach { deviceConfig -> maybeCreate(deviceConfig.taskName, ManagedVirtualDevice::class.java).apply { device = deviceConfig.device apiLevel = deviceConfig.apiLevel @@ -47,7 +48,8 @@ internal fun configureGradleManagedDevices( } groups { maybeCreate("ci").apply { - ciDevices.forEach { deviceConfig -> + ciDeviceConfigs.forEach { deviceConfig -> + @Suppress("DEPRECATION") targetDevices.add(devices[deviceConfig.taskName]) } } diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt index 150541964..0fce68329 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt @@ -29,7 +29,6 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinBaseExtension import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension -import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension import org.jetbrains.kotlin.gradle.tasks.KotlinCompile /** diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinMultiplatform.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinMultiplatform.kt index f9b56ee7d..45dd97f6f 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinMultiplatform.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinMultiplatform.kt @@ -16,10 +16,13 @@ package com.google.samples.apps.nowinandroid +import org.gradle.api.JavaVersion import org.gradle.api.Project +import org.gradle.api.tasks.compile.JavaCompile import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @@ -35,7 +38,11 @@ internal fun Project.configureKotlinMultiplatform() { // https://kotlinlang.org/docs/whatsnew1820.html#new-approach-to-source-set-hierarchy applyDefaultHierarchyTemplate() - jvm() + jvm { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_11) + } + } androidTarget() // SqlDelight does not support wasm yet // https://github.com/cashapp/sqldelight/pull/4965/files @@ -105,4 +112,15 @@ internal fun Project.configureKotlinMultiplatform() { dependsOn("allTests") } } + + // Set Java compilation compatibility for JVM target to match Kotlin JVM target (11). + // Only apply --release to non-Android Java tasks, since AGP manages bootclasspath itself. + project.tasks.withType().configureEach { + sourceCompatibility = JavaVersion.VERSION_11.toString() + targetCompatibility = JavaVersion.VERSION_11.toString() + // Android tasks are named like "compileDebugJavaWithJavac"; KMP JVM tasks like "compileJvmMainJava" + if (!name.endsWith("JavaWithJavac")) { + options.release.set(11) + } + } } diff --git a/core/designsystem/build.gradle.kts b/core/designsystem/build.gradle.kts index 2a20c4d2c..126d26dd1 100644 --- a/core/designsystem/build.gradle.kts +++ b/core/designsystem/build.gradle.kts @@ -36,7 +36,7 @@ android { kotlin { @OptIn(ExperimentalWasmDsl::class) wasmJs { - moduleName = "composeApp" + outputModuleName.set("composeApp") browser { commonWebpackConfig { outputFileName = "composeApp.js" diff --git a/core/designsystem/src/test/screenshots/Background/Background_dark_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Background/Background_dark_androidTheme_notDynamic.png new file mode 100644 index 000000000..3f187d9d2 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Background/Background_dark_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Background/Background_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Background/Background_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..3f187d9d2 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Background/Background_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Background/Background_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Background/Background_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..3f187d9d2 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Background/Background_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Background/Background_light_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Background/Background_light_androidTheme_notDynamic.png new file mode 100644 index 000000000..3f187d9d2 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Background/Background_light_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Background/Background_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Background/Background_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..3f187d9d2 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Background/Background_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Background/Background_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Background/Background_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..3f187d9d2 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Background/Background_light_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Background/GradientBackground_dark_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Background/GradientBackground_dark_androidTheme_notDynamic.png new file mode 100644 index 000000000..f88a672c4 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Background/GradientBackground_dark_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Background/GradientBackground_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Background/GradientBackground_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..f88a672c4 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Background/GradientBackground_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Background/GradientBackground_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Background/GradientBackground_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..f88a672c4 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Background/GradientBackground_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Background/GradientBackground_light_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Background/GradientBackground_light_androidTheme_notDynamic.png new file mode 100644 index 000000000..f88a672c4 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Background/GradientBackground_light_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Background/GradientBackground_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Background/GradientBackground_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..f88a672c4 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Background/GradientBackground_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Background/GradientBackground_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Background/GradientBackground_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..f88a672c4 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Background/GradientBackground_light_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/ButtonLeadingIcon_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Button/ButtonLeadingIcon_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..9514112f1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/ButtonLeadingIcon_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/ButtonLeadingIcon_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Button/ButtonLeadingIcon_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..9514112f1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/ButtonLeadingIcon_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/ButtonLeadingIcon_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Button/ButtonLeadingIcon_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..9514112f1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/ButtonLeadingIcon_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/ButtonLeadingIcon_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Button/ButtonLeadingIcon_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..9514112f1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/ButtonLeadingIcon_light_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/Button_dark_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Button/Button_dark_androidTheme_notDynamic.png new file mode 100644 index 000000000..cd0c07df1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/Button_dark_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/Button_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Button/Button_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..cd0c07df1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/Button_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/Button_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Button/Button_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..cd0c07df1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/Button_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/Button_light_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Button/Button_light_androidTheme_notDynamic.png new file mode 100644 index 000000000..cd0c07df1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/Button_light_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/Button_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Button/Button_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..cd0c07df1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/Button_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/Button_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Button/Button_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..cd0c07df1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/Button_light_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/OutlineButton_dark_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Button/OutlineButton_dark_androidTheme_notDynamic.png new file mode 100644 index 000000000..6a70245d7 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/OutlineButton_dark_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/OutlineButton_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Button/OutlineButton_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..6a70245d7 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/OutlineButton_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/OutlineButton_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Button/OutlineButton_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..6a70245d7 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/OutlineButton_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/OutlineButton_light_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Button/OutlineButton_light_androidTheme_notDynamic.png new file mode 100644 index 000000000..6a70245d7 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/OutlineButton_light_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/OutlineButton_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Button/OutlineButton_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..6a70245d7 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/OutlineButton_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Button/OutlineButton_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Button/OutlineButton_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..6a70245d7 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Button/OutlineButton_light_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_dark_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_dark_androidTheme_notDynamic.png new file mode 100644 index 000000000..dcbc7816d Binary files /dev/null and b/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_dark_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..dcbc7816d Binary files /dev/null and b/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..dcbc7816d Binary files /dev/null and b/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_light_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_light_androidTheme_notDynamic.png new file mode 100644 index 000000000..dcbc7816d Binary files /dev/null and b/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_light_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..dcbc7816d Binary files /dev/null and b/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..dcbc7816d Binary files /dev/null and b/core/designsystem/src/test/screenshots/FilterChip/FilterChipSelected_light_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/FilterChip/FilterChip_dark_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/FilterChip/FilterChip_dark_androidTheme_notDynamic.png new file mode 100644 index 000000000..52397e327 Binary files /dev/null and b/core/designsystem/src/test/screenshots/FilterChip/FilterChip_dark_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/FilterChip/FilterChip_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/FilterChip/FilterChip_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..52397e327 Binary files /dev/null and b/core/designsystem/src/test/screenshots/FilterChip/FilterChip_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/FilterChip/FilterChip_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/FilterChip/FilterChip_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..52397e327 Binary files /dev/null and b/core/designsystem/src/test/screenshots/FilterChip/FilterChip_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/FilterChip/FilterChip_fontScale2.png b/core/designsystem/src/test/screenshots/FilterChip/FilterChip_fontScale2.png new file mode 100644 index 000000000..598d6f222 Binary files /dev/null and b/core/designsystem/src/test/screenshots/FilterChip/FilterChip_fontScale2.png differ diff --git a/core/designsystem/src/test/screenshots/FilterChip/FilterChip_light_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/FilterChip/FilterChip_light_androidTheme_notDynamic.png new file mode 100644 index 000000000..52397e327 Binary files /dev/null and b/core/designsystem/src/test/screenshots/FilterChip/FilterChip_light_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/FilterChip/FilterChip_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/FilterChip/FilterChip_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..52397e327 Binary files /dev/null and b/core/designsystem/src/test/screenshots/FilterChip/FilterChip_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/FilterChip/FilterChip_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/FilterChip/FilterChip_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..52397e327 Binary files /dev/null and b/core/designsystem/src/test/screenshots/FilterChip/FilterChip_light_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_dark_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_dark_androidTheme_notDynamic.png new file mode 100644 index 000000000..f912ce3c1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_dark_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..f912ce3c1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..f912ce3c1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_light_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_light_androidTheme_notDynamic.png new file mode 100644 index 000000000..f912ce3c1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_light_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..f912ce3c1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..f912ce3c1 Binary files /dev/null and b/core/designsystem/src/test/screenshots/IconButton/IconButtonUnchecked_light_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/IconButton/IconButton_dark_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/IconButton/IconButton_dark_androidTheme_notDynamic.png new file mode 100644 index 000000000..dfa6ac959 Binary files /dev/null and b/core/designsystem/src/test/screenshots/IconButton/IconButton_dark_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/IconButton/IconButton_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/IconButton/IconButton_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..dfa6ac959 Binary files /dev/null and b/core/designsystem/src/test/screenshots/IconButton/IconButton_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/IconButton/IconButton_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/IconButton/IconButton_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..dfa6ac959 Binary files /dev/null and b/core/designsystem/src/test/screenshots/IconButton/IconButton_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/IconButton/IconButton_light_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/IconButton/IconButton_light_androidTheme_notDynamic.png new file mode 100644 index 000000000..dfa6ac959 Binary files /dev/null and b/core/designsystem/src/test/screenshots/IconButton/IconButton_light_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/IconButton/IconButton_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/IconButton/IconButton_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..dfa6ac959 Binary files /dev/null and b/core/designsystem/src/test/screenshots/IconButton/IconButton_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/IconButton/IconButton_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/IconButton/IconButton_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..dfa6ac959 Binary files /dev/null and b/core/designsystem/src/test/screenshots/IconButton/IconButton_light_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_animation_1000.png b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_animation_1000.png new file mode 100644 index 000000000..1fac6e3bf Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_animation_1000.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_animation_115.png b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_animation_115.png new file mode 100644 index 000000000..ef9fde5a2 Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_animation_115.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_animation_20.png b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_animation_20.png new file mode 100644 index 000000000..7e72c3944 Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_animation_20.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_animation_724.png b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_animation_724.png new file mode 100644 index 000000000..68865df0f Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_animation_724.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_dark_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_dark_androidTheme_notDynamic.png new file mode 100644 index 000000000..19265495c Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_dark_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..19265495c Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..19265495c Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_light_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_light_androidTheme_notDynamic.png new file mode 100644 index 000000000..19265495c Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_light_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..19265495c Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..19265495c Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/LoadingWheel_light_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_androidTheme_notDynamic.png new file mode 100644 index 000000000..8ba2e6823 Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..8ba2e6823 Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..8ba2e6823 Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_androidTheme_notDynamic.png new file mode 100644 index 000000000..8ba2e6823 Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..8ba2e6823 Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..8ba2e6823 Binary files /dev/null and b/core/designsystem/src/test/screenshots/LoadingWheel/OverlayLoadingWheel_light_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Navigation/Navigation_dark_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Navigation/Navigation_dark_androidTheme_notDynamic.png new file mode 100644 index 000000000..a4abd2d5b Binary files /dev/null and b/core/designsystem/src/test/screenshots/Navigation/Navigation_dark_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Navigation/Navigation_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Navigation/Navigation_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..a4abd2d5b Binary files /dev/null and b/core/designsystem/src/test/screenshots/Navigation/Navigation_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Navigation/Navigation_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Navigation/Navigation_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..a4abd2d5b Binary files /dev/null and b/core/designsystem/src/test/screenshots/Navigation/Navigation_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Navigation/Navigation_fontScale2.png b/core/designsystem/src/test/screenshots/Navigation/Navigation_fontScale2.png new file mode 100644 index 000000000..6ca857ab3 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Navigation/Navigation_fontScale2.png differ diff --git a/core/designsystem/src/test/screenshots/Navigation/Navigation_light_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Navigation/Navigation_light_androidTheme_notDynamic.png new file mode 100644 index 000000000..a4abd2d5b Binary files /dev/null and b/core/designsystem/src/test/screenshots/Navigation/Navigation_light_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Navigation/Navigation_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Navigation/Navigation_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..a4abd2d5b Binary files /dev/null and b/core/designsystem/src/test/screenshots/Navigation/Navigation_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Navigation/Navigation_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Navigation/Navigation_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..a4abd2d5b Binary files /dev/null and b/core/designsystem/src/test/screenshots/Navigation/Navigation_light_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Tabs/Tabs_dark_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Tabs/Tabs_dark_androidTheme_notDynamic.png new file mode 100644 index 000000000..074f3dc8c Binary files /dev/null and b/core/designsystem/src/test/screenshots/Tabs/Tabs_dark_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Tabs/Tabs_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Tabs/Tabs_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..074f3dc8c Binary files /dev/null and b/core/designsystem/src/test/screenshots/Tabs/Tabs_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Tabs/Tabs_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Tabs/Tabs_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..074f3dc8c Binary files /dev/null and b/core/designsystem/src/test/screenshots/Tabs/Tabs_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Tabs/Tabs_fontScale2.png b/core/designsystem/src/test/screenshots/Tabs/Tabs_fontScale2.png new file mode 100644 index 000000000..f62ea3ced Binary files /dev/null and b/core/designsystem/src/test/screenshots/Tabs/Tabs_fontScale2.png differ diff --git a/core/designsystem/src/test/screenshots/Tabs/Tabs_light_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Tabs/Tabs_light_androidTheme_notDynamic.png new file mode 100644 index 000000000..074f3dc8c Binary files /dev/null and b/core/designsystem/src/test/screenshots/Tabs/Tabs_light_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Tabs/Tabs_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Tabs/Tabs_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..074f3dc8c Binary files /dev/null and b/core/designsystem/src/test/screenshots/Tabs/Tabs_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Tabs/Tabs_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Tabs/Tabs_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..074f3dc8c Binary files /dev/null and b/core/designsystem/src/test/screenshots/Tabs/Tabs_light_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Tag/Tag_dark_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Tag/Tag_dark_androidTheme_notDynamic.png new file mode 100644 index 000000000..77f5c331c Binary files /dev/null and b/core/designsystem/src/test/screenshots/Tag/Tag_dark_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Tag/Tag_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Tag/Tag_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..77f5c331c Binary files /dev/null and b/core/designsystem/src/test/screenshots/Tag/Tag_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Tag/Tag_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Tag/Tag_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..77f5c331c Binary files /dev/null and b/core/designsystem/src/test/screenshots/Tag/Tag_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Tag/Tag_fontScale2.png b/core/designsystem/src/test/screenshots/Tag/Tag_fontScale2.png new file mode 100644 index 000000000..d81851d73 Binary files /dev/null and b/core/designsystem/src/test/screenshots/Tag/Tag_fontScale2.png differ diff --git a/core/designsystem/src/test/screenshots/Tag/Tag_light_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Tag/Tag_light_androidTheme_notDynamic.png new file mode 100644 index 000000000..77f5c331c Binary files /dev/null and b/core/designsystem/src/test/screenshots/Tag/Tag_light_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Tag/Tag_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/Tag/Tag_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..77f5c331c Binary files /dev/null and b/core/designsystem/src/test/screenshots/Tag/Tag_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/Tag/Tag_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/Tag/Tag_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..77f5c331c Binary files /dev/null and b/core/designsystem/src/test/screenshots/Tag/Tag_light_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_dark_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_dark_androidTheme_notDynamic.png new file mode 100644 index 000000000..b449f5e0e Binary files /dev/null and b/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_dark_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_dark_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_dark_defaultTheme_dynamic.png new file mode 100644 index 000000000..b449f5e0e Binary files /dev/null and b/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_dark_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_dark_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_dark_defaultTheme_notDynamic.png new file mode 100644 index 000000000..b449f5e0e Binary files /dev/null and b/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_dark_defaultTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_fontScale2.png b/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_fontScale2.png new file mode 100644 index 000000000..7eb0cedd5 Binary files /dev/null and b/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_fontScale2.png differ diff --git a/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_light_androidTheme_notDynamic.png b/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_light_androidTheme_notDynamic.png new file mode 100644 index 000000000..b449f5e0e Binary files /dev/null and b/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_light_androidTheme_notDynamic.png differ diff --git a/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_light_defaultTheme_dynamic.png b/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_light_defaultTheme_dynamic.png new file mode 100644 index 000000000..b449f5e0e Binary files /dev/null and b/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_light_defaultTheme_dynamic.png differ diff --git a/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_light_defaultTheme_notDynamic.png b/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_light_defaultTheme_notDynamic.png new file mode 100644 index 000000000..b449f5e0e Binary files /dev/null and b/core/designsystem/src/test/screenshots/TopAppBar/TopAppBar_light_defaultTheme_notDynamic.png differ diff --git a/core/screenshot-testing/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/testing/util/ScreenshotHelper.kt b/core/screenshot-testing/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/testing/util/ScreenshotHelper.kt index 016101ea1..500ff0fd2 100644 --- a/core/screenshot-testing/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/testing/util/ScreenshotHelper.kt +++ b/core/screenshot-testing/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/testing/util/ScreenshotHelper.kt @@ -110,6 +110,9 @@ fun AndroidComposeTestRule, A>.c } } + // Freeze animations so infinite transitions don't block Espresso idle sync + this.mainClock.autoAdvance = false + // Run Accessibility checks first so logging is included val accessibilityException = try { this.onRoot().checkRoboAccessibility( @@ -201,6 +204,9 @@ fun AndroidComposeTestRule, A>.c } } + // Freeze animations so infinite transitions don't block Espresso idle sync + this.mainClock.autoAdvance = false + // Create permutations darkModeValues.forEach { isDarkMode -> darkMode = isDarkMode diff --git a/feature/foryou/src/test/screenshots/ForYouScreenLoading_foldable.png b/feature/foryou/src/test/screenshots/ForYouScreenLoading_foldable.png new file mode 100644 index 000000000..cf387096c Binary files /dev/null and b/feature/foryou/src/test/screenshots/ForYouScreenLoading_foldable.png differ diff --git a/feature/foryou/src/test/screenshots/ForYouScreenLoading_phone.png b/feature/foryou/src/test/screenshots/ForYouScreenLoading_phone.png new file mode 100644 index 000000000..e043a77ab Binary files /dev/null and b/feature/foryou/src/test/screenshots/ForYouScreenLoading_phone.png differ diff --git a/feature/foryou/src/test/screenshots/ForYouScreenLoading_tablet.png b/feature/foryou/src/test/screenshots/ForYouScreenLoading_tablet.png new file mode 100644 index 000000000..6e67ddbf3 Binary files /dev/null and b/feature/foryou/src/test/screenshots/ForYouScreenLoading_tablet.png differ diff --git a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_foldable.png b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_foldable.png new file mode 100644 index 000000000..68c15f739 Binary files /dev/null and b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_foldable.png differ diff --git a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_phone.png b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_phone.png new file mode 100644 index 000000000..dfce3a141 Binary files /dev/null and b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_phone.png differ diff --git a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_phone_dark.png b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_phone_dark.png new file mode 100644 index 000000000..8e641d7de Binary files /dev/null and b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_phone_dark.png differ diff --git a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_tablet.png b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_tablet.png new file mode 100644 index 000000000..4560b56bb Binary files /dev/null and b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedAndLoading_tablet.png differ diff --git a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_foldable.png b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_foldable.png new file mode 100644 index 000000000..119439548 Binary files /dev/null and b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_foldable.png differ diff --git a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_phone.png b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_phone.png new file mode 100644 index 000000000..bc86b1dc8 Binary files /dev/null and b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_phone.png differ diff --git a/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_tablet.png b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_tablet.png new file mode 100644 index 000000000..059d6ac33 Binary files /dev/null and b/feature/foryou/src/test/screenshots/ForYouScreenPopulatedFeed_tablet.png differ diff --git a/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_foldable.png b/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_foldable.png new file mode 100644 index 000000000..d260ac43e Binary files /dev/null and b/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_foldable.png differ diff --git a/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_phone.png b/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_phone.png new file mode 100644 index 000000000..038aa5b9e Binary files /dev/null and b/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_phone.png differ diff --git a/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_phone_dark.png b/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_phone_dark.png new file mode 100644 index 000000000..830da0f33 Binary files /dev/null and b/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_phone_dark.png differ diff --git a/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_tablet.png b/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_tablet.png new file mode 100644 index 000000000..ffae517c5 Binary files /dev/null and b/feature/foryou/src/test/screenshots/ForYouScreenTopicSelection_tablet.png differ diff --git a/feature/topic/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt b/feature/topic/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt index 2caa41967..8a3ca8454 100644 --- a/feature/topic/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt +++ b/feature/topic/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt @@ -47,7 +47,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import androidx.compose.ui.unit.dp -import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil3.ImageLoader import coil3.compose.LocalPlatformContext import com.google.samples.apps.nowinandroid.core.designsystem.component.DynamicAsyncImage @@ -64,6 +63,7 @@ import com.google.samples.apps.nowinandroid.core.model.data.UserNewsResource import com.google.samples.apps.nowinandroid.core.ui.DevicePreviews import com.google.samples.apps.nowinandroid.core.ui.TrackScreenViewEvent import com.google.samples.apps.nowinandroid.core.ui.UserNewsResourcePreviewParameterProvider +import com.google.samples.apps.nowinandroid.core.ui.collectAsStateWithLifecycle import com.google.samples.apps.nowinandroid.core.ui.userNewsResourceCardItems import nowinandroid.core.ui.generated.resources.core_ui_back import nowinandroid.feature.topic.generated.resources.Res diff --git a/gradle/init.gradle.kts b/gradle/init.gradle.kts index 44dc41200..cb3d34e48 100644 --- a/gradle/init.gradle.kts +++ b/gradle/init.gradle.kts @@ -14,10 +14,10 @@ * limitations under the License. */ -val ktlintVersion = "1.4.0" +val ktlintVersion = "1.5.0" initscript { - val spotlessVersion = "6.25.0" + val spotlessVersion = "7.0.2" repositories { mavenCentral() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 737262730..9011ef57b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,22 +2,21 @@ accompanist = "0.37.0" androidDesugarJdkLibs = "2.1.4" # AGP and tools should be updated together -androidGradlePlugin = "8.7.3" -androidTools = "31.7.3" -androidxActivity = "1.9.3" +androidGradlePlugin = "8.13.0" +androidTools = "31.13.0" +androidxActivity = "1.10.0" androidxBrowser = "1.8.0" -androidxComposeBom = "2024.12.01" -androidxComposeFoundation = "1.8.0-alpha07" -androidxComposeRuntimeTracing = "1.7.6" -androidxCore = "1.15.0" -androidxCoreSplashscreen = "1.0.1" -androidxDataStore = "1.1.1" +androidxComposeBom = "2025.05.00" +androidxComposeRuntimeTracing = "1.8.1" +androidxCore = "1.16.0" +androidxCoreSplashscreen = "1.2.0-alpha02" +androidxDataStore = "1.1.4" androidxEspresso = "3.6.1" -androidxLifecycle = "2.8.7" +androidxLifecycle = "2.9.0" androidxLintGradle = "1.0.0-alpha03" -androidxMacroBenchmark = "1.3.3" +androidxMacroBenchmark = "1.4.0" androidxMetrics = "1.0.0-beta01" -androidxNavigation = "2.8.5" +androidxNavigation = "2.9.0" androidxProfileinstaller = "1.4.1" androidxTestCore = "1.6.1" androidxTestExt = "1.2.1" @@ -27,19 +26,19 @@ androidxTracing = "1.3.0-alpha02" androidxUiAutomator = "2.3.0" androidxWindowManager = "1.3.0" androidxWork = "2.10.0" -coil = "3.0.3" +coil = "3.2.0" dependencyGuard = "0.5.0" -jacoco = "0.8.7" -kotlin = "2.1.0" -kotlinxCoroutines = "1.10.1" +jacoco = "0.8.12" +kotlin = "2.1.20" +kotlinxCoroutines = "1.10.2" kotlinxDatetime = "0.6.1" kotlinxSerializationJson = "1.8.0" -ksp = "2.1.0-1.0.29" +ksp = "2.1.20-1.0.32" logback = "1.5.15" -material3adaptive = "1.0.1" +material3adaptive = "1.1.0" moduleGraph = "2.7.1" -robolectric = "4.14" -roborazzi = "1.39.0" +robolectric = "4.14.1" +roborazzi = "1.46.1" secrets = "2.0.1" truth = "1.4.4" turbine = "1.2.0" @@ -47,19 +46,19 @@ androidx-constraintlayout = "2.2.0" androidx-espresso-core = "3.6.1" androidx-material = "1.12.0" androidx-test-junit = "1.2.1" -compose-ui-tooling = "1.7.6" -compose-plugin = "1.7.3" +compose-ui-tooling = "1.8.1" +compose-plugin = "1.8.0" sqldelight = "2.0.2" -kotlinInject = '0.7.2' -multiplatform-settings = "1.2.0" -kermit = "2.0.4" -koin = "4.0.0" -koin-annotations = "2.0.0-Beta2" -ktor = "3.0.2" -ktrofit = "2.2.0" +kotlinInject = "0.8.0" +multiplatform-settings = "1.3.0" +kermit = "2.0.5" +koin = "4.1.0" +koin-annotations = "2.0.0" +ktor = "3.1.2" +ktrofit = "2.5.1" buildKonfig = "0.15.2" -lifecycle-viewmodel-compose = "2.8.4" -navigation-compose = "2.8.0-alpha11" +lifecycle-viewmodel-compose = "2.9.0" +navigation-compose = "2.9.0-beta02" [bundles] androidx-compose-ui-test = ["androidx-compose-ui-test", "androidx-compose-ui-testManifest"] @@ -90,6 +89,7 @@ androidx-metrics = { group = "androidx.metrics", name = "metrics-performance", v androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "androidxNavigation" } androidx-navigation-testing = { group = "androidx.navigation", name = "navigation-testing", version.ref = "androidxNavigation" } androidx-profileinstaller = { group = "androidx.profileinstaller", name = "profileinstaller", version.ref = "androidxProfileinstaller" } +androidx-test-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "androidx-espresso-core" } androidx-test-core = { group = "androidx.test", name = "core", version.ref = "androidxTestCore" } androidx-test-ext = { group = "androidx.test.ext", name = "junit-ktx", version.ref = "androidxTestExt" } androidx-test-rules = { group = "androidx.test", name = "rules", version.ref = "androidxTestRules" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cea7a793a..37f853b1c 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.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME