בדיקת צילומי מסך היא דרך יעילה לוודא איך ממשק המשתמש נראה למשתמשים. הכלי לבדיקת צילומי מסך של תצוגות מקדימות ב-Compose משלב את הפשטות והתכונות של תצוגות מקדימות של פונקציות קומפוזביליות עם היתרונות של הפעלת בדיקות של צילומי מסך בצד המארח. הכלי "בדיקת צילומי מסך של תצוגות מקדימות ב-Compose" נועד להיות פשוט לשימוש כמו תצוגות מקדימות של פונקציות קומפוזביליות.
מיומנויות ב-Android
הצגת הקוד ב-GitHubיצירת בדיקות של צילומי מסך
testing-setup מיומנות Android כדי לפתח אסטרטגיית בדיקה וליצור בדיקות של צילומי מסך.android skills add testing-setupבדיקת צילום מסך היא בדיקה אוטומטית שבה המערכת מצלמת את המסך של חלק מממשק המשתמש ומשווה אותו לתמונת רפרנס שאושרה בעבר. אם התמונות לא תואמות, הבדיקה נכשלת ונוצר דוח HTML שעוזר לכם להשוות ולמצוא את ההבדלים.
בעזרת הכלי Compose Preview Screenshot Testing, אתם יכולים:
- אפשר להשתמש ב-
@PreviewTestכדי ליצור בדיקות של צילומי מסך לתצוגות מקדימות קיימות או חדשות של פונקציות קומפוזביליות. - יוצרים תמונות לדוגמה מהתצוגות המקדימות של ה-composables.
- ליצור דוח HTML שמזהה שינויים בתצוגות המקדימות האלה אחרי שאתם מבצעים שינויים בקוד.
- כדי להרחיב את הבדיקות, כדאי להשתמש בפרמטרים של
@Preview, כמוuiModeאוfontScale, ובתצוגות מקדימות מרובות. - הפכו את הבדיקות למודולריות באמצעות קבוצת המקורות החדשה
screenshotTest.
שילוב עם IDE
אפשר להשתמש בכלי לבדיקת צילומי מסך של תצוגה מקדימה ב-Compose על ידי הפעלה ידנית של משימות Gradle הבסיסיות (updateScreenshotTest ו-validateScreenshotTest), אבל בגרסת Canary 4 של השקת התכונות ב-Android Studio Otter 3 יש שילוב מלא של IDE. כך אפשר ליצור תמונות רפרנס, להריץ בדיקות ולנתח כשלים באימות, והכול בתוך ה-IDE. הנה כמה מהתכונות העיקריות:
- סמלים בשוליים של העורך. עכשיו אפשר להריץ בדיקות או לעדכן תמונות רפרנס ישירות מקוד המקור. סמלי הפעלה ירוקים מופיעים בשוליים לצד פונקציות קומפוזביליות ומחלקות עם הערות
@PreviewTest.- הרצת בדיקות של צילומי מסך להריץ בדיקות לפונקציה אחת או לכיתה שלמה.
- מוסיפים או מעדכנים תמונות רפרנס. מפעילים את תהליך העדכון באופן ספציפי להיקף שנבחר.
- ניהול אינטראקטיבי של קובצי עזר. עכשיו אפשר לעדכן תמונות רפרנס בצורה בטוחה ומפורטת יותר.
- תיבת דו-שיח חדשה ליצירת תמונת רפרנס. במקום להריץ משימת Gradle בכמות גדולה, תיבת דו-שיח חדשה מאפשרת לכם לראות ולבחור בדיוק אילו תצוגות מקדימות ליצור או לעדכן.
- צפייה בתצוגה מקדימה של הווריאציות. בתיבת הדו-שיח מופיעות כל הווריאציות של התצוגה המקדימה (למשל, עיצוב בהיר או עיצוב כהה, או מכשירים שונים) בנפרד, כך שאתם יכולים לבחור או לבטל את הבחירה של פריטים ספציפיים לפני שאתם יוצרים תמונות שנוצרו על ידי AI.
- תוצאות בדיקה משולבות ומציג הבדלים. הצגת התוצאות בלי לצאת מה-IDE.
- חלונית הרצה מאוחדת. תוצאות הבדיקה של צילומי המסך מופיעות בחלון הרגיל של הכלי Run. הבדיקות מקובצות לפי מחלקה ופונקציה, והסטטוס "עבר" או "נכשל" מסומן בבירור.
- כלי להשוואה חזותית. אם הבדיקה נכשלת, בכרטיסייה Screenshot אפשר להשוות בין התמונות Reference, Actual ו-Diff זו לצד זו.
- מאפיינים מפורטים. בכרטיסייה Attributes מוצגים מטא-נתונים על הבדיקות שנכשלו, כולל אחוז ההתאמה, מידות התמונה וההגדרות לתצוגה מקדימה הספציפיות שבהן השתמשתם (לדוגמה,
uiModeאוfontScale).
- היקף בדיקה גמיש. עכשיו אפשר להריץ בדיקות של צילומי מסך בהיקפים שונים ישירות מתצוגת הפרויקט. לוחצים לחיצה ימנית על מודול, ספרייה, קובץ או מחלקה כדי להריץ בדיקות של צילומי מסך ספציפית לבחירה הזו.
דרישות
כדי להשתמש ב-Compose Preview Screenshot Testing דרך השילוב המלא של IDE, הפרויקט צריך לעמוד בדרישות הבאות:
- Android Studio Panda 1 Canary 4 ואילך.
- פלאגין של Android Gradle (AGP) בגרסה 9.0 ואילך.
- גרסה 0.0.1-alpha16 ואילך של הפלאגין Compose Preview Screenshot Testing.
- Kotlin מגרסה 2.2.10 ואילך.
- JDK מגרסה 17 ואילך.
- Compose מופעל בפרויקט. מומלץ להפעיל את Compose באמצעות הפלאגין של Gradle ל-Compose Compiler.
אם אתם רוצים להשתמש רק במשימות הבסיסיות של Gradle בלי השילוב של IDE, אלה הדרישות:
- פלאגין של Android Gradle (AGP) בגרסה 8.5.0 ואילך.
- גרסה 0.0.1-alpha16 ואילך של הפלאגין Compose Preview Screenshot Testing.
- Kotlin מגרסה 1.9.20 ואילך. מומלץ להשתמש ב-Kotlin בגרסה 2.0 ומעלה כדי שתוכלו להשתמש בפלאגין Compose Compiler Gradle.
- JDK מגרסה 17 ואילך.
- Compose מופעל בפרויקט. מומלץ להפעיל את Compose באמצעות הפלאגין של Gradle ל-Compose Compiler.
הגדרה
גם הכלי המשולב וגם משימות Gradle הבסיסיות מסתמכים על הפלאגין Compose Preview Screenshot Testing. כדי להגדיר את התוסף, בצע את הפעולות הבאות:
מפעילים את המאפיין הניסיוני בקובץ
gradle.propertiesשל הפרויקט.android.experimental.enableScreenshotTest=trueבבלוק
android {}של הקובץbuild.gradle.ktsברמת המודול, מפעילים את הדגל הניסיוני כדי להשתמש בקבוצת המקורותscreenshotTest.android { experimentalProperties["android.experimental.enableScreenshotTest"] = true }מוסיפים לפרויקט את הפלאגין
com.android.compose.screenshot, גרסה0.0.1-alpha16.מוסיפים את הפלאגין לקובץ קטלוגי הגרסאות:
[versions] agp = "9.0.0-rc03" kotlin = "2.2.10" screenshot = "0.0.1-alpha16" [plugins] screenshot = { id = "com.android.compose.screenshot", version.ref = "screenshot"}בקובץ
build.gradle.ktsברמת המודול, מוסיפים את הפלאגין לבלוקplugins {}:plugins { alias(libs.plugins.screenshot) }
מוסיפים את יחסי התלות
screenshot-validation-apiו-ui-tooling.מוסיפים אותם לקטלוגי הגרסאות:
[libraries] screenshot-validation-api = { group = "com.android.tools.screenshot", name = "screenshot-validation-api", version.ref = "screenshot"} androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling"}מוסיפים אותם לקובץ
build.gradle.ktsברמת המודול:dependencies { screenshotTestImplementation(libs.screenshot.validation.api) screenshotTestImplementation(libs.androidx.ui.tooling) }
הגדרת תצוגות מקדימות של רכיבים קומפוזביליים לבדיקות של צילומי מסך
כדי להגדיר את התצוגות המקדימות של ה-composable שבהן רוצים להשתמש לבדיקות של צילומי מסך, מסמנים את התצוגות המקדימות באמצעות ההערה @PreviewTest. התצוגות המקדימות צריכות להיות בקבוצת המקורות החדשה screenshotTest, לדוגמה:
app/src/screenshotTest/kotlin/com/example/yourapp/
ExamplePreviewScreenshotTest.kt
אתם יכולים להוסיף עוד רכיבים קומפוזביליים או תצוגות מקדימות, כולל תצוגות מקדימות מרובות, בקובץ הזה או בקבצים אחרים שנוצרו באותה קבוצת מקורות.
package com.example.yourapp
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import com.android.tools.screenshot.PreviewTest
import com.example.yourapp.ui.theme.MyApplicationTheme
@PreviewTest
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
MyApplicationTheme {
Greeting("Android!")
}
}
יצירת תמונות רפרנס
אחרי שמגדירים מחלקת בדיקה, צריך ליצור תמונות רפרנס לכל תצוגה מקדימה. תמונות רפרנס אלה משמשות לזיהוי שינויים בהמשך, אחרי שמבצעים שינויים בקוד. כדי ליצור תמונות לדוגמה לבדיקות של צילומי מסך בתצוגה מקדימה של רכיבים, פועלים לפי ההוראות בקטע הזה לשילוב IDE או למשימות Gradle.
Android CLI
הורדת Android CLIאיך משתמשים ב-Android CLI כדי ליצור תצוגה מקדימה של Compose
לדוגמה, השתמשו בפקודה
android studio render-compose-preview כשאתם צריכים לרנדר תצוגה מקדימה של Compose לבדיקה חזותית.android studio render-compose-previewב-IDE
לוחצים על סמל השוליים לצד פונקציית @PreviewTest ובוחרים באפשרות הוספה/עדכון של תמונות רפרנס. בוחרים את התצוגות המקדימות בתיבת הדו-שיח ולוחצים על הוספה.
באמצעות משימות Gradle
מריצים את המשימה הבאה ב-Gradle:
- ב-Linux וב-macOS:
./gradlew updateDebugScreenshotTest(./gradlew :{module}:update{Variant}ScreenshotTest) - Windows:
gradlew updateDebugScreenshotTest(gradlew :{module}:update{Variant}ScreenshotTest)
אחרי שהמשימה מסתיימת, מאתרים את תמונות הרפרנס ב-app/src/screenshotTestDebug/reference ({module}/src/screenshotTest{Variant}/reference).
יצירת דוח בדיקה
אחרי שקיימות תמונות רפרנס, יוצרים דוח בדיקה לפי ההוראות בקטע הזה לשילוב עם סביבת פיתוח משולבת (IDE) או למשימות Gradle.
ב-IDE
לוחצים על סמל השוליים לצד פונקציית @PreviewTest ובוחרים באפשרות Run 'ScreenshotTests'.
אם בדיקה נכשלת, לוחצים על שם הבדיקה בחלונית Run. בוחרים בכרטיסייה Screenshot כדי לבדוק את ההבדלים בתמונה באמצעות פקדי הזום וההזזה המשולבים.
באמצעות משימות Gradle
מריצים את משימת האימות כדי ליצור צילום מסך חדש ולהשוות אותו לתמונת הרפרנס:
- ב-Linux וב-macOS:
./gradlew validateDebugScreenshotTest(./gradlew :{module}:validate{Variant}ScreenshotTest) - Windows:
gradlew validateDebugScreenshotTest(gradlew :{module}:validate{Variant}ScreenshotTest)
משימת האימות יוצרת דוח HTML בכתובת {module}/build/reports/screenshotTest/preview/{variant}/index.html.
פתרון בעיות
בדיקת צילומי מסך של תצוגה מקדימה ב-Compose מריצה בדיקות בצד המארח, שיכולות לצרוך הרבה זיכרון. כדי להגדיל את הגודל המקסימלי של ה-heap ב-JVM לבדיקה, מוסיפים את המאפיין הבא לקובץ gradle.properties:
android.compose.screenshot.maxHeapSize=4g
בעיות מוכרות
- Kotlin Multiplatform (KMP): גם סביבת הפיתוח המשולבת וגם הפלאגין הבסיסי מיועדים אך ורק לפרויקטים של Android. הם לא תומכים ביעדים שאינם Android בפרויקטים של KMP.
הרשימה המלאה של הבעיות המוכרות כרגע מופיעה ברכיב מעקב הבעיות של הכלי. אפשר לשלוח משוב ולדווח על בעיות אחרות באמצעות Issue Tracker.
עדכוני גרסה
לרשימה המלאה של עדכוני הגרסאות, קראו את נתוני הגרסה.