File tree 3 files changed +33
-3
lines changed
main/java/com/google/android/horologist/compose/material
test/java/com/google/android/horologist/compose/material
3 files changed +33
-3
lines changed Original file line number Diff line number Diff line change @@ -33,6 +33,9 @@ import androidx.compose.ui.Modifier
33
33
import androidx.compose.ui.draw.clip
34
34
import androidx.compose.ui.graphics.vector.ImageVector
35
35
import androidx.compose.ui.semantics.Role
36
+ import androidx.compose.ui.semantics.clearAndSetSemantics
37
+ import androidx.compose.ui.semantics.contentDescription
38
+ import androidx.compose.ui.semantics.role
36
39
import androidx.compose.ui.unit.Dp
37
40
import androidx.wear.compose.material.Button
38
41
import androidx.wear.compose.material.ButtonColors
@@ -131,7 +134,12 @@ internal fun Button(
131
134
val interactionSource = remember { MutableInteractionSource () }
132
135
Button (
133
136
onClick = onClick,
134
- modifier = modifier.size(buttonSize.tapTargetSize),
137
+ modifier = modifier
138
+ .size(buttonSize.tapTargetSize)
139
+ .clearAndSetSemantics {
140
+ role = Role .Button
141
+ this .contentDescription = contentDescription
142
+ },
135
143
enabled = enabled,
136
144
colors = colors,
137
145
interactionSource = interactionSource,
Original file line number Diff line number Diff line change @@ -31,6 +31,7 @@ import androidx.compose.ui.graphics.Color
31
31
import androidx.compose.ui.graphics.Shape
32
32
import androidx.compose.ui.graphics.painter.Painter
33
33
import androidx.compose.ui.semantics.Role
34
+ import androidx.compose.ui.semantics.semantics
34
35
import androidx.wear.compose.material.CardDefaults
35
36
import androidx.wear.compose.material.MaterialTheme
36
37
import com.google.android.horologist.annotations.ExperimentalHorologistApi
@@ -56,7 +57,7 @@ public fun Card(
56
57
val interactionSource = remember { MutableInteractionSource () }
57
58
androidx.wear.compose.material.Card (
58
59
onClick = onClick,
59
- modifier = modifier,
60
+ modifier = modifier.semantics(mergeDescendants = true ) {} ,
60
61
backgroundPainter = backgroundPainter,
61
62
contentColor = contentColor,
62
63
enabled = enabled,
@@ -75,7 +76,7 @@ public fun Card(
75
76
onClick = onClick,
76
77
onLongClick = onLongClick,
77
78
onDoubleClick = onDoubleClick,
78
- role = Role . Button ,
79
+ role = role ,
79
80
),
80
81
) {
81
82
content()
Original file line number Diff line number Diff line change @@ -22,8 +22,11 @@ import androidx.compose.material.icons.Icons
22
22
import androidx.compose.material.icons.filled.Check
23
23
import androidx.compose.ui.Alignment
24
24
import androidx.compose.ui.Modifier
25
+ import androidx.compose.ui.test.onRoot
26
+ import androidx.compose.ui.test.printToString
25
27
import com.google.android.horologist.screenshots.ScreenshotBaseTest
26
28
import com.google.android.horologist.screenshots.ScreenshotTestRule.Companion.screenshotTestRuleParams
29
+ import org.junit.Assert
27
30
import org.junit.Test
28
31
29
32
class ButtonA11yTest : ScreenshotBaseTest (
@@ -44,6 +47,15 @@ class ButtonA11yTest : ScreenshotBaseTest(
44
47
)
45
48
}
46
49
}
50
+
51
+ screenshotTestRule.interact {
52
+ val logEntries = onRoot().printToString()
53
+ .split(" \n " )
54
+ .map { it.trim() }
55
+
56
+ Assert .assertEquals(1 , logEntries.filter { it.startsWith(" Role" )}.size)
57
+ Assert .assertEquals(1 , logEntries.filter { it.startsWith(" ContentDescription" )}.size)
58
+ }
47
59
}
48
60
49
61
@Test
@@ -58,5 +70,14 @@ class ButtonA11yTest : ScreenshotBaseTest(
58
70
)
59
71
}
60
72
}
73
+
74
+ screenshotTestRule.interact {
75
+ val logEntries = onRoot().printToString()
76
+ .split(" \n " )
77
+ .map { it.trim() }
78
+
79
+ Assert .assertEquals(1 , logEntries.filter { it.startsWith(" Role" )}.size)
80
+ Assert .assertEquals(1 , logEntries.filter { it.startsWith(" ContentDescription" )}.size)
81
+ }
61
82
}
62
83
}
You can’t perform that action at this time.
0 commit comments