Browse Source

Test locales and themes

feature/jme/update_rust_sdk
Benoit Marty 2 years ago committed by Benoit Marty
parent
commit
e6f0c01799
  1. 23
      tests/uitests/src/test/java/io/element/android/x/tests/uitests/ScreenshotTest.kt

23
tests/uitests/src/test/java/io/element/android/x/tests/uitests/ScreenshotTest.kt

@ -17,12 +17,15 @@ @@ -17,12 +17,15 @@
package io.element.android.x.tests.uitests
import android.content.res.Configuration
import android.os.Build
import android.os.LocaleList
import androidx.activity.OnBackPressedDispatcher
import androidx.activity.OnBackPressedDispatcherOwner
import androidx.activity.compose.LocalOnBackPressedDispatcherOwner
import androidx.compose.foundation.layout.Box
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalInspectionMode
import androidx.compose.ui.platform.LocalLifecycleOwner
@ -33,9 +36,11 @@ import app.cash.paparazzi.detectEnvironment @@ -33,9 +36,11 @@ import app.cash.paparazzi.detectEnvironment
import com.airbnb.android.showkase.models.Showkase
import com.google.testing.junit.testparameterinjector.TestParameter
import com.google.testing.junit.testparameterinjector.TestParameterInjector
import io.element.android.x.designsystem.ElementXTheme
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import java.util.Locale
/**
* BMA: Inspired from https://github.com/airbnb/Showkase/blob/master/showkase-screenshot-testing-paparazzi-sample/src/test/java/com/airbnb/android/showkase/screenshot/testing/paparazzi/sample/PaparazziSampleScreenshotTest.kt
@ -75,8 +80,8 @@ class ScreenshotTest { @@ -75,8 +80,8 @@ class ScreenshotTest {
@TestParameter(valuesProvider = PreviewProvider::class) componentTestPreview: TestPreview,
@TestParameter baseDeviceConfig: BaseDeviceConfig,
@TestParameter(value = ["1.0", "1.5"]) fontScale: Float,
// TODO Test other locale
// TODO Test other light and dark theme
@TestParameter(value = ["light", "dark"]) theme: String,
@TestParameter(value = ["en", "fr", "de", "ru"]) localeStr: String,
) {
paparazzi.unsafeUpdateConfig(
baseDeviceConfig.deviceConfig.copy(
@ -91,6 +96,9 @@ class ScreenshotTest { @@ -91,6 +96,9 @@ class ScreenshotTest {
density = LocalDensity.current.density,
fontScale = fontScale
),
LocalConfiguration provides Configuration().apply {
setLocales(LocaleList(localeStr.toLocale()))
},
// Needed so that UI that uses it don't crash during screenshot tests
LocalOnBackPressedDispatcherOwner provides object : OnBackPressedDispatcherOwner {
override fun getLifecycle() = lifecycleOwner.lifecycle
@ -98,11 +106,22 @@ class ScreenshotTest { @@ -98,11 +106,22 @@ class ScreenshotTest {
override fun getOnBackPressedDispatcher() = OnBackPressedDispatcher()
}
) {
ElementXTheme(darkTheme = (theme == "dark")) {
Box {
componentTestPreview.Content()
}
}
}
}
}
}
private fun String.toLocale(): Locale {
return when (this) {
"en" -> Locale.ENGLISH
"fr" -> Locale.FRANCE
"de" -> Locale.GERMAN
else -> Locale.Builder().setLanguage(this).build()
}
}

Loading…
Cancel
Save