androidTest: Add tests for reusable composable
* Add semantics wherever required to make composable easy to test Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -14,6 +14,9 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.dimensionResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.semantics.semantics
|
||||
import androidx.compose.ui.semantics.stateDescription
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.compose.preview.PreviewTemplate
|
||||
@@ -30,8 +33,11 @@ fun ContainedLoadingIndicator(modifier: Modifier = Modifier) {
|
||||
.padding(dimensionResource(R.dimen.padding_small)),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
val description = stringResource(R.string.loading)
|
||||
ContainedLoadingIndicator(
|
||||
modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_small))
|
||||
modifier = Modifier
|
||||
.requiredSize(dimensionResource(R.dimen.icon_size_small))
|
||||
.semantics { stateDescription = description }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ fun Error(
|
||||
painter: Painter,
|
||||
message: String,
|
||||
actionMessage: String? = null,
|
||||
onAction: () -> Unit = {}
|
||||
onAction: (() -> Unit)? = null
|
||||
) {
|
||||
Column(
|
||||
modifier = modifier
|
||||
@@ -65,7 +65,7 @@ fun Error(
|
||||
)
|
||||
|
||||
if (actionMessage != null) {
|
||||
Button(onClick = onAction) {
|
||||
Button(onClick = { if (onAction != null) onAction() }, enabled = onAction != null) {
|
||||
Text(
|
||||
text = actionMessage,
|
||||
maxLines = 1,
|
||||
|
||||
@@ -22,6 +22,9 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.dimensionResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.semantics.semantics
|
||||
import androidx.compose.ui.semantics.stateDescription
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.compose.preview.PreviewTemplate
|
||||
@@ -44,6 +47,7 @@ fun PageIndicator(modifier: Modifier = Modifier, totalPages: Int, currentPage: I
|
||||
)
|
||||
) {
|
||||
repeat(totalPages) { iteration ->
|
||||
val page = stringResource(R.string.page, iteration)
|
||||
val isSelected = currentPage == iteration
|
||||
val color by animateColorAsState(
|
||||
targetValue = if (isSelected) {
|
||||
@@ -67,6 +71,7 @@ fun PageIndicator(modifier: Modifier = Modifier, totalPages: Int, currentPage: I
|
||||
.size(size)
|
||||
.clip(CircleShape)
|
||||
.background(color = color)
|
||||
.semantics { stateDescription = page }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,8 @@ import androidx.compose.ui.graphics.graphicsLayer
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.dimensionResource
|
||||
import androidx.compose.ui.semantics.semantics
|
||||
import androidx.compose.ui.semantics.testTag
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||
@@ -65,7 +67,9 @@ fun AnimatedAppIcon(
|
||||
|
||||
Box(modifier = modifier, contentAlignment = Alignment.Center) {
|
||||
if (inProgress) {
|
||||
val indicatorModifier = Modifier.fillMaxSize()
|
||||
val indicatorModifier = Modifier
|
||||
.fillMaxSize()
|
||||
.semantics { testTag = "progressIndicator" }
|
||||
if (animatedProgress > 0) {
|
||||
CircularProgressIndicator(
|
||||
modifier = indicatorModifier,
|
||||
|
||||
@@ -16,8 +16,9 @@ import com.aurora.store.compose.theme.AuroraTheme
|
||||
@Composable
|
||||
fun PreviewTemplate(content : @Composable () -> Unit) {
|
||||
AuroraTheme {
|
||||
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
|
||||
content()
|
||||
}
|
||||
CompositionLocalProvider(
|
||||
value = LocalAsyncImagePreviewHandler provides coilPreviewProvider,
|
||||
content = content
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user