בדיקה

אחת הדרכים החשובות לבדוק את הנגישות היא בדיקה ידנית: מפעילים את שירותי הנגישות, כמו TalkBack או גישה באמצעות מתג, ובודקים אם הכל פועל כצפוי. כך תוכלו לקבל תובנות ישירות לגבי חוויית השימוש של משתמשים עם צרכים של נגישות באפליקציה.

בנוסף לאימות ידני, כדאי להשתמש גם בבדיקות אוטומטיות כדי לסמן בעיות פוטנציאליות שעלולות להשפיע על חוויית המשתמש בזמן שאתם מבצעים שינויים באפליקציה.

ממשקי ה-API הקיימים לבדיקת Compose מאפשרים לכתוב בדיקות אוטומטיות שמקיימות אינטראקציה עם רכיבים סמנטיים, ולטעון את המאפיינים שהוגדרו בממשק המשתמש.

בדיקות נגישות

לבדיקות נגישות אוטומטיות, אפשר גם להשתמש ב-Accessibility Test Framework – אותה מסגרת בסיסית שמפעילה את Accessibility Scanner ואת בדיקות הנגישות ב-Espresso – כדי לבצע באופן אוטומטי בדיקות מסוימות שקשורות לנגישות, החל מגרסה 1.8.0 של Compose.

כדי להפעיל את הבדיקות, מוסיפים את ui-test-junit4-accessibility dependency, מפעילים את enableAccessibilityChecks() ב-AndroidComposeTestRule ומפעילים פעולה או tryPerformAccessibilityChecks:

@Rule
@JvmField
val composeTestRule = createAndroidComposeRule<ComponentActivity>()

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

    composeTestRule.enableAccessibilityChecks()

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

הבדיקה הספציפית הזו נכשלת עם חריג והודעה על כך שאולי אין לפריט תווית ששירותי הנגישות יכולים לקרוא.

בדיקות אחרות שזמינות מחפשות בעיות נגישות שקשורות לניגודיות צבעים, לגודל קטן של יעד מגע או לסדר הסריקה של רכיבים.

אם אתם משלבים תצוגות עם Compose, ואתם כבר משתמשים ב-AccessibilityValidator או צריכים להגדיר אותו, תוכלו להגדיר אותו בכלל:

@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()
}

בשילוב עם בדיקות ידניות, בדיקות אוטומטיות שמשתמשות גם ב-Compose APIs וגם במסגרת הבדיקה של הנגישות יכולות לעזור לכם לזהות בעיות אפשריות בשלב מוקדם בתהליך הפיתוח.