Merge pull request #2193 from element-hq/feature/bma/sxcludePreviewFromCodeCoverage

Exclude preview from code coverage
This commit is contained in:
Benoit Marty 2024-01-11 16:47:07 +01:00 committed by GitHub
commit 56b1aa6b49
35 changed files with 88 additions and 111 deletions

View file

@ -288,6 +288,8 @@ koverReport {
"io.element.android.libraries.designsystem.theme.components.bottomsheet.*", "io.element.android.libraries.designsystem.theme.components.bottomsheet.*",
) )
annotatedBy( annotatedBy(
"androidx.compose.ui.tooling.preview.Preview",
"io.element.android.libraries.architecture.coverage.ExcludeFromCoverage",
"io.element.android.libraries.designsystem.preview.PreviewsDayNight", "io.element.android.libraries.designsystem.preview.PreviewsDayNight",
"io.element.android.libraries.designsystem.preview.PreviewWithLargeHeight", "io.element.android.libraries.designsystem.preview.PreviewWithLargeHeight",
) )

View file

@ -57,10 +57,7 @@ fun SearchMultipleUsersResultItem(
@Preview @Preview
@Composable @Composable
internal fun SearchMultipleUsersResultItemPreview() = ElementThemedPreview { ContentToPreview() } internal fun SearchMultipleUsersResultItemPreview() = ElementThemedPreview {
@Composable
private fun ContentToPreview() {
Column { Column {
SearchMultipleUsersResultItem( SearchMultipleUsersResultItem(
searchResult = UserSearchResult( searchResult = UserSearchResult(

View file

@ -53,10 +53,7 @@ fun SearchSingleUserResultItem(
@Preview @Preview
@Composable @Composable
internal fun SearchSingleUserResultItemPreview() = ElementThemedPreview { ContentToPreview() } internal fun SearchSingleUserResultItemPreview() = ElementThemedPreview {
@Composable
private fun ContentToPreview() {
Column { Column {
SearchSingleUserResultItem( SearchSingleUserResultItem(
searchResult = UserSearchResult(aMatrixUser(), isUnresolved = false), searchResult = UserSearchResult(aMatrixUser(), isUnresolved = false),

View file

@ -20,6 +20,7 @@ import androidx.activity.ComponentActivity
import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.compose.ui.test.junit4.createAndroidComposeRule
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.testtags.TestTags
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
import io.element.android.tests.testutils.EnsureNeverCalled import io.element.android.tests.testutils.EnsureNeverCalled
import io.element.android.tests.testutils.EnsureNeverCalledWithParam import io.element.android.tests.testutils.EnsureNeverCalledWithParam
@ -28,6 +29,7 @@ import io.element.android.tests.testutils.clickOn
import io.element.android.tests.testutils.ensureCalledOnce import io.element.android.tests.testutils.ensureCalledOnce
import io.element.android.tests.testutils.ensureCalledOnceWithParam import io.element.android.tests.testutils.ensureCalledOnceWithParam
import io.element.android.tests.testutils.pressBack import io.element.android.tests.testutils.pressBack
import io.element.android.tests.testutils.pressTag
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
@ -53,6 +55,24 @@ class LogoutViewTest {
eventsRecorder.assertSingle(LogoutEvents.Logout(false)) eventsRecorder.assertSingle(LogoutEvents.Logout(false))
} }
@Test
fun `confirming logout sends a LogoutEvents`() {
val eventsRecorder = EventsRecorder<LogoutEvents>()
rule.setContent {
LogoutView(
aLogoutState(
logoutAction = AsyncAction.Confirming,
eventSink = eventsRecorder
),
onChangeRecoveryKeyClicked = EnsureNeverCalled(),
onBackClicked = EnsureNeverCalled(),
onSuccessLogout = EnsureNeverCalledWithParam(),
)
}
rule.pressTag(TestTags.dialogPositive.value)
eventsRecorder.assertSingle(LogoutEvents.Logout(false))
}
@Test @Test
fun `clicking on back invoke back callback`() { fun `clicking on back invoke back callback`() {
val eventsRecorder = EventsRecorder<LogoutEvents>(expectEvents = false) val eventsRecorder = EventsRecorder<LogoutEvents>(expectEvents = false)

View file

@ -0,0 +1,21 @@
/*
* Copyright (c) 2023 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.element.android.libraries.architecture.coverage
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS)
annotation class ExcludeFromCoverage

View file

@ -171,11 +171,7 @@ fun AnnotatedString.linkify(linkStyle: SpanStyle): AnnotatedString {
@Preview(group = PreviewGroup.Text) @Preview(group = PreviewGroup.Text)
@Composable @Composable
internal fun ClickableLinkTextPreview() = internal fun ClickableLinkTextPreview() = ElementThemedPreview {
ElementThemedPreview { ContentToPreview() }
@Composable
private fun ContentToPreview() {
ClickableLinkText( ClickableLinkText(
annotatedString = AnnotatedString("Hello", ParagraphStyle()), annotatedString = AnnotatedString("Hello", ParagraphStyle()),
linkAnnotationTag = "", linkAnnotationTag = "",

View file

@ -54,10 +54,7 @@ fun LabelledCheckbox(
@Preview(group = PreviewGroup.Toggles) @Preview(group = PreviewGroup.Toggles)
@Composable @Composable
internal fun LabelledCheckboxPreview() = ElementThemedPreview { ContentToPreview() } internal fun LabelledCheckboxPreview() = ElementThemedPreview {
@Composable
private fun ContentToPreview() {
LabelledCheckbox( LabelledCheckbox(
checked = true, checked = true,
onCheckedChange = {}, onCheckedChange = {},

View file

@ -141,10 +141,7 @@ private fun ProgressDialogContent(
@Preview(group = PreviewGroup.Dialogs) @Preview(group = PreviewGroup.Dialogs)
@Composable @Composable
internal fun ProgressDialogPreview() = ElementThemedPreview { ContentToPreview() } internal fun ProgressDialogPreview() = ElementThemedPreview {
@Composable
private fun ContentToPreview() {
DialogPreview { DialogPreview {
ProgressDialogContent(text = "test dialog content", isCancellable = true) ProgressDialogContent(text = "test dialog content", isCancellable = true)
} }

View file

@ -68,10 +68,7 @@ private fun PreferenceCategoryTitle(title: String, modifier: Modifier = Modifier
@Preview(group = PreviewGroup.Preferences) @Preview(group = PreviewGroup.Preferences)
@Composable @Composable
internal fun PreferenceCategoryPreview() = ElementThemedPreview { ContentToPreview() } internal fun PreferenceCategoryPreview() = ElementThemedPreview {
@Composable
private fun ContentToPreview() {
PreferenceCategory( PreferenceCategory(
title = "Category title", title = "Category title",
) { ) {

View file

@ -95,10 +95,7 @@ fun PreferenceCheckbox(
@Preview(group = PreviewGroup.Preferences) @Preview(group = PreviewGroup.Preferences)
@Composable @Composable
internal fun PreferenceCheckboxPreview() = ElementThemedPreview { ContentToPreview() } internal fun PreferenceCheckboxPreview() = ElementThemedPreview {
@Composable
private fun ContentToPreview() {
Column { Column {
PreferenceCheckbox( PreferenceCheckbox(
title = "Checkbox", title = "Checkbox",

View file

@ -36,9 +36,6 @@ fun PreferenceDivider(
@Preview(group = PreviewGroup.Preferences) @Preview(group = PreviewGroup.Preferences)
@Composable @Composable
internal fun PreferenceDividerPreview() = ElementThemedPreview { ContentToPreview() } internal fun PreferenceDividerPreview() = ElementThemedPreview {
@Composable
private fun ContentToPreview() {
PreferenceDivider() PreferenceDivider()
} }

View file

@ -50,10 +50,7 @@ fun PreferenceRow(
@Preview(group = PreviewGroup.Preferences) @Preview(group = PreviewGroup.Preferences)
@Composable @Composable
internal fun PreferenceRowPreview() = ElementThemedPreview { ContentToPreview() } internal fun PreferenceRowPreview() = ElementThemedPreview {
@Composable
private fun ContentToPreview() {
PreferenceRow { PreferenceRow {
Text(text = "Content") Text(text = "Content")
} }

View file

@ -90,10 +90,7 @@ fun PreferenceSlide(
@Preview(group = PreviewGroup.Preferences) @Preview(group = PreviewGroup.Preferences)
@Composable @Composable
internal fun PreferenceSlidePreview() = ElementThemedPreview { ContentToPreview() } internal fun PreferenceSlidePreview() = ElementThemedPreview {
@Composable
private fun ContentToPreview() {
PreferenceSlide( PreferenceSlide(
iconResourceId = CompoundDrawables.ic_user_profile, iconResourceId = CompoundDrawables.ic_user_profile,
title = "Slide", title = "Slide",

View file

@ -102,10 +102,7 @@ fun PreferenceSwitch(
@Preview(group = PreviewGroup.Preferences) @Preview(group = PreviewGroup.Preferences)
@Composable @Composable
internal fun PreferenceSwitchPreview() = ElementThemedPreview { ContentToPreview() } internal fun PreferenceSwitchPreview() = ElementThemedPreview {
@Composable
private fun ContentToPreview() {
PreferenceSwitch( PreferenceSwitch(
title = "Switch", title = "Switch",
subtitle = "Subtitle Switch", subtitle = "Subtitle Switch",

View file

@ -90,10 +90,7 @@ private fun compoundErrorCheckBoxColors(): CheckboxColors {
@Preview(group = PreviewGroup.Toggles) @Preview(group = PreviewGroup.Toggles)
@Composable @Composable
internal fun CheckboxesPreview() = ElementThemedPreview(vertical = false) { ContentToPreview() } internal fun CheckboxesPreview() = ElementThemedPreview(vertical = false) {
@Composable
private fun ContentToPreview() {
Column { Column {
// Unchecked // Unchecked
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) { Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {

View file

@ -69,10 +69,7 @@ fun CircularProgressIndicator(
@Preview(group = PreviewGroup.Progress) @Preview(group = PreviewGroup.Progress)
@Composable @Composable
internal fun CircularProgressIndicatorPreview() = ElementThemedPreview(vertical = false) { ContentToPreview() } internal fun CircularProgressIndicatorPreview() = ElementThemedPreview(vertical = false) {
@Composable
private fun ContentToPreview() {
Column(verticalArrangement = Arrangement.spacedBy(4.dp)) { Column(verticalArrangement = Arrangement.spacedBy(4.dp)) {
// Indeterminate progress // Indeterminate progress
CircularProgressIndicator() CircularProgressIndicator()

View file

@ -78,10 +78,7 @@ internal object DropDownMenuItemDefaults {
@Preview(group = PreviewGroup.Menus) @Preview(group = PreviewGroup.Menus)
@Composable @Composable
internal fun DropdownMenuItemPreview() = ElementThemedPreview { ContentToPreview() } internal fun DropdownMenuItemPreview() = ElementThemedPreview {
@Composable
private fun ContentToPreview() {
Column { Column {
DropdownMenuItem( DropdownMenuItem(
text = { Text(text = "Item") }, text = { Text(text = "Item") },

View file

@ -60,11 +60,7 @@ fun FloatingActionButton(
@Preview(group = PreviewGroup.FABs) @Preview(group = PreviewGroup.FABs)
@Composable @Composable
internal fun FloatingActionButtonPreview() = internal fun FloatingActionButtonPreview() = ElementThemedPreview {
ElementThemedPreview { ContentToPreview() }
@Composable
private fun ContentToPreview() {
Box(modifier = Modifier.padding(8.dp)) { Box(modifier = Modifier.padding(8.dp)) {
FloatingActionButton(onClick = {}) { FloatingActionButton(onClick = {}) {
Icon(imageVector = CompoundIcons.Close, contentDescription = null) Icon(imageVector = CompoundIcons.Close, contentDescription = null)

View file

@ -50,11 +50,6 @@ object ElementDividerDefaults {
@Composable @Composable
internal fun HorizontalDividerPreview() = ElementThemedPreview { internal fun HorizontalDividerPreview() = ElementThemedPreview {
Box(Modifier.padding(vertical = 10.dp), contentAlignment = Alignment.Center) { Box(Modifier.padding(vertical = 10.dp), contentAlignment = Alignment.Center) {
ContentToPreview() HorizontalDivider()
} }
} }
@Composable
private fun ContentToPreview() {
HorizontalDivider()
}

View file

@ -140,10 +140,6 @@ fun Icon(
@Preview(group = PreviewGroup.Icons) @Preview(group = PreviewGroup.Icons)
@Composable @Composable
internal fun IconImageVectorPreview() = internal fun IconImageVectorPreview() = ElementThemedPreview {
ElementThemedPreview { ContentToPreview() }
@Composable
private fun ContentToPreview() {
Icon(imageVector = CompoundIcons.Close, contentDescription = null) Icon(imageVector = CompoundIcons.Close, contentDescription = null)
} }

View file

@ -58,11 +58,7 @@ fun IconButton(
@Preview(group = PreviewGroup.Buttons) @Preview(group = PreviewGroup.Buttons)
@Composable @Composable
internal fun IconButtonPreview() = internal fun IconButtonPreview() = ElementThemedPreview {
ElementThemedPreview { ContentToPreview() }
@Composable
private fun ContentToPreview() {
Column { Column {
CompositionLocalProvider(LocalContentColor provides ElementTheme.colors.iconPrimary) { CompositionLocalProvider(LocalContentColor provides ElementTheme.colors.iconPrimary) {
Row { Row {

View file

@ -59,10 +59,7 @@ fun IconToggleButton(
@Preview(group = PreviewGroup.Toggles) @Preview(group = PreviewGroup.Toggles)
@Composable @Composable
internal fun IconToggleButtonPreview() = ElementThemedPreview(vertical = false) { ContentToPreview() } internal fun IconToggleButtonPreview() = ElementThemedPreview(vertical = false) {
@Composable
private fun ContentToPreview() {
var checked by remember { mutableStateOf(false) } var checked by remember { mutableStateOf(false) }
Column { Column {
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) { Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {

View file

@ -74,10 +74,7 @@ fun LinearProgressIndicator(
@Preview(group = PreviewGroup.Progress) @Preview(group = PreviewGroup.Progress)
@Composable @Composable
internal fun LinearProgressIndicatorPreview() = ElementThemedPreview(vertical = false) { ContentToPreview() } internal fun LinearProgressIndicatorPreview() = ElementThemedPreview(vertical = false) {
@Composable
private fun ContentToPreview() {
Column(verticalArrangement = Arrangement.spacedBy(4.dp)) { Column(verticalArrangement = Arrangement.spacedBy(4.dp)) {
// Indeterminate progress // Indeterminate progress
LinearProgressIndicator() LinearProgressIndicator()

View file

@ -59,14 +59,10 @@ fun MediumTopAppBar(
) )
} }
@OptIn(ExperimentalMaterial3Api::class)
@Preview(group = PreviewGroup.AppBars) @Preview(group = PreviewGroup.AppBars)
@Composable @Composable
internal fun MediumTopAppBarPreview() = internal fun MediumTopAppBarPreview() = ElementThemedPreview {
ElementThemedPreview { ContentToPreview() }
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun ContentToPreview() {
MediumTopAppBar( MediumTopAppBar(
title = { Text(text = "Title") }, title = { Text(text = "Title") },
navigationIcon = { BackButton(onClick = {}) }, navigationIcon = { BackButton(onClick = {}) },

View file

@ -35,6 +35,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.compound.theme.ElementTheme import io.element.android.compound.theme.ElementTheme
import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage
import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.ElementPreviewLight
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
@ -93,6 +94,7 @@ internal fun ModalBottomSheetDarkPreview() =
ElementPreviewDark { ContentToPreview() } ElementPreviewDark { ContentToPreview() }
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@ExcludeFromCoverage
@Composable @Composable
private fun ContentToPreview() { private fun ContentToPreview() {
Box( Box(

View file

@ -47,6 +47,7 @@ import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage
import io.element.android.libraries.designsystem.modifiers.applyIf import io.element.android.libraries.designsystem.modifiers.applyIf
import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.ElementPreviewLight
@ -110,6 +111,7 @@ internal fun ModalBottomSheetLayoutDarkPreview() =
ElementPreviewDark { ContentToPreview() } ElementPreviewDark { ContentToPreview() }
@OptIn(ExperimentalMaterialApi::class) @OptIn(ExperimentalMaterialApi::class)
@ExcludeFromCoverage
@Composable @Composable
private fun ContentToPreview() { private fun ContentToPreview() {
ModalBottomSheetLayout( ModalBottomSheetLayout(

View file

@ -43,6 +43,7 @@ import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage
import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.ElementPreviewLight
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
@ -166,6 +167,7 @@ internal fun OutlinedTextFieldsPreview() = ElementPreviewLight { ContentToPrevie
internal fun OutlinedTextFieldsDarkPreview() = ElementPreviewDark { ContentToPreview() } internal fun OutlinedTextFieldsDarkPreview() = ElementPreviewDark { ContentToPreview() }
@Composable @Composable
@ExcludeFromCoverage
private fun ContentToPreview() { private fun ContentToPreview() {
Column(modifier = Modifier.padding(4.dp)) { Column(modifier = Modifier.padding(4.dp)) {
allBooleans.forEach { isError -> allBooleans.forEach { isError ->

View file

@ -66,10 +66,7 @@ internal fun compoundRadioButtonColors(): RadioButtonColors {
@Preview(group = PreviewGroup.Toggles) @Preview(group = PreviewGroup.Toggles)
@Composable @Composable
internal fun RadioButtonPreview() = ElementThemedPreview(vertical = false) { ContentToPreview() } internal fun RadioButtonPreview() = ElementThemedPreview(vertical = false) {
@Composable
private fun ContentToPreview() {
var checked by remember { mutableStateOf(false) } var checked by remember { mutableStateOf(false) }
Column { Column {
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) { Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {

View file

@ -58,10 +58,7 @@ fun Slider(
@Preview(group = PreviewGroup.Sliders) @Preview(group = PreviewGroup.Sliders)
@Composable @Composable
internal fun SlidersPreview() = ElementThemedPreview { ContentToPreview() } internal fun SlidersPreview() = ElementThemedPreview {
@Composable
private fun ContentToPreview() {
var value by remember { mutableFloatStateOf(0.33f) } var value by remember { mutableFloatStateOf(0.33f) }
Column { Column {
Slider(onValueChange = { value = it }, value = value, enabled = true) Slider(onValueChange = { value = it }, value = value, enabled = true)

View file

@ -56,11 +56,7 @@ fun Surface(
@Preview @Preview
@Composable @Composable
internal fun SurfacePreview() = internal fun SurfacePreview() = ElementThemedPreview {
ElementThemedPreview { ContentToPreview() }
@Composable
private fun ContentToPreview() {
Surface { Surface {
Spacer(modifier = Modifier.size(64.dp)) Spacer(modifier = Modifier.size(64.dp))
} }

View file

@ -42,6 +42,7 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.compound.utils.toHrf import io.element.android.compound.utils.toHrf
import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage
import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.ElementPreviewLight
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
@ -120,6 +121,7 @@ internal fun TextLightPreview() = ElementPreviewLight { ContentToPreview() }
@Composable @Composable
internal fun TextDarkPreview() = ElementPreviewDark { ContentToPreview() } internal fun TextDarkPreview() = ElementPreviewDark { ContentToPreview() }
@ExcludeFromCoverage
@Composable @Composable
private fun ContentToPreview() { private fun ContentToPreview() {
val colors = mapOf( val colors = mapOf(

View file

@ -44,6 +44,7 @@ import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage
import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.ElementPreviewLight
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
@ -154,6 +155,7 @@ internal fun TextFieldLightPreview() =
internal fun TextFieldDarkPreview() = internal fun TextFieldDarkPreview() =
ElementPreviewDark { ContentToPreview() } ElementPreviewDark { ContentToPreview() }
@ExcludeFromCoverage
@Composable @Composable
private fun ContentToPreview() { private fun ContentToPreview() {
Column(modifier = Modifier.padding(4.dp)) { Column(modifier = Modifier.padding(4.dp)) {

View file

@ -59,14 +59,10 @@ fun TopAppBar(
) )
} }
@OptIn(ExperimentalMaterial3Api::class)
@Preview(group = PreviewGroup.AppBars) @Preview(group = PreviewGroup.AppBars)
@Composable @Composable
internal fun TopAppBarPreview() = internal fun TopAppBarPreview() = ElementThemedPreview {
ElementThemedPreview { ContentToPreview() }
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun ContentToPreview() {
TopAppBar( TopAppBar(
title = { Text(text = "Title") }, title = { Text(text = "Title") },
navigationIcon = { BackButton(onClick = {}) }, navigationIcon = { BackButton(onClick = {}) },

View file

@ -23,6 +23,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.rememberDatePickerState import androidx.compose.material3.rememberDatePickerState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import io.element.android.libraries.architecture.coverage.ExcludeFromCoverage
import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.ElementPreviewLight
import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.preview.PreviewGroup
@ -41,6 +42,7 @@ internal fun DatePickerDarkPreview() {
} }
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@ExcludeFromCoverage
@Composable @Composable
private fun ContentToPreview() { private fun ContentToPreview() {
val state = rememberDatePickerState( val state = rememberDatePickerState(

View file

@ -18,8 +18,10 @@ package io.element.android.tests.testutils
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
import androidx.compose.ui.test.hasClickAction import androidx.compose.ui.test.hasClickAction
import androidx.compose.ui.test.hasContentDescription import androidx.compose.ui.test.hasContentDescription
import androidx.compose.ui.test.hasTestTag
import androidx.compose.ui.test.hasText import androidx.compose.ui.test.hasText
import androidx.compose.ui.test.junit4.AndroidComposeTestRule import androidx.compose.ui.test.junit4.AndroidComposeTestRule
import androidx.compose.ui.test.performClick import androidx.compose.ui.test.performClick
@ -36,3 +38,7 @@ fun <R : TestRule> AndroidComposeTestRule<R, ComponentActivity>.pressBack() {
val text = activity.getString(CommonStrings.action_back) val text = activity.getString(CommonStrings.action_back)
onNode(hasContentDescription(text)).performClick() onNode(hasContentDescription(text)).performClick()
} }
fun SemanticsNodeInteractionsProvider.pressTag(tag: String) {
onNode(hasTestTag(tag)).performClick()
}