בדיקה

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

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

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

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

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

כדי להפעיל את הבדיקות, מוסיפים את התלות ui-test-junit4-accessibility, מפעילים את 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()
}

בשילוב עם בדיקה ידנית, בדיקות אוטומטיות באמצעות ממשקי ה-API של Compose וגם Accessibility Test Framework יכולות לעזור לכם לזהות בעיות אפשריות בשלב מוקדם בתהליך הפיתוח.