Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions compose/snippets/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ dependencies {
debugImplementation(libs.androidx.compose.ui.tooling)

androidTestImplementation(libs.androidx.compose.ui.test.junit4)
androidTestImplementation(libs.androidx.compose.ui.test.junit4.accessibility)
debugImplementation(libs.androidx.compose.ui.test.manifest)

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,109 @@

package com.example.compose.snippets.accessibility

import androidx.activity.ComponentActivity
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.size
import androidx.compose.material3.Text
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.semantics.SemanticsActions
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.getOrNull
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.test.SemanticsMatcher
import androidx.compose.ui.test.assert
import androidx.compose.ui.test.junit4.accessibility.enableAccessibilityChecks
import androidx.compose.ui.test.junit4.createAndroidComposeRule
import com.example.compose.snippets.MyActivity
import androidx.compose.ui.test.onRoot
import androidx.compose.ui.test.tryPerformAccessibilityChecks
import androidx.compose.ui.unit.dp
import com.google.android.apps.common.testing.accessibility.framework.AccessibilityCheckResult
import com.google.android.apps.common.testing.accessibility.framework.integrations.espresso.AccessibilityValidator
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test

class AccessibilitySnippetsTest {
class AccessibilityTest {

// [START android_compose_accessibility_testing_label]
@Rule
@JvmField
val composeTestRule = createAndroidComposeRule<MyActivity>()
val composeTestRule = createAndroidComposeRule<ComponentActivity>()

@Test
fun noAccessibilityLabel() {
composeTestRule.setContent {
Box(
modifier = Modifier
.size(50.dp, 50.dp)
.background(color = Color.Gray)
.clickable { }
.semantics {
contentDescription = ""
}
)
}

private val nodeMatcher = SemanticsMatcher("DUMMY") { it.isRoot }
composeTestRule.enableAccessibilityChecks()

@Ignore("Dummy test")
// Any action (such as performClick) will perform accessibility checks too:
composeTestRule.onRoot().tryPerformAccessibilityChecks()
}
// [END android_compose_accessibility_testing_label]

// [START android_compose_accessibility_testing_click]
@Test
fun smallClickTarget() {
composeTestRule.setContent {
Box(
modifier = Modifier
.size(20.dp, 20.dp)
.background(color = Color(0xFFFAFBFC))
.clickable { }
)
}

composeTestRule.enableAccessibilityChecks()

// Any action (such as performClick) will perform accessibility checks too:
composeTestRule.onRoot().tryPerformAccessibilityChecks()
}
// [END android_compose_accessibility_testing_click]

// [START android_compose_accessibility_testing_validator]
@Test
fun lowContrastScreen() {
composeTestRule.setContent {
Box(
modifier = Modifier
.fillMaxSize()
.background(color = Color(0xFFFAFBFC)),
contentAlignment = Alignment.Center
) {
Text(text = "Hello", color = Color(0xFFB0B1B2))
}
}

// Optionally, set AccessibilityValidator manually
val accessibilityValidator = AccessibilityValidator()
.setThrowExceptionFor(
AccessibilityCheckResult.AccessibilityCheckResultType.WARNING
)

composeTestRule.enableAccessibilityChecks(accessibilityValidator)

composeTestRule.onRoot().tryPerformAccessibilityChecks()
}
// [END android_compose_accessibility_testing_validator]

private val nodeMatcher = SemanticsMatcher(description = "DUMMY") { it.isRoot }

@Ignore("Dummy test")
// [START android_compose_accessibility_testing]
@Test
fun test() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

package com.example.compose.snippets.semantics

import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.semantics.SemanticsProperties
Expand Down
Loading