בדיקת צילומי מסך היא דרך יעילה לוודא איך ממשק המשתמש נראה למשתמשים. הכלי 'בדיקת צילומי מסך של יצירת פוסטים' משלב את הפשטות והתכונות של תצוגות מקדימות של רכיבים עם היתרונות של בדיקות צילומי מסך בצד המארח מבחינת פרודוקטיביות. הבדיקה של צילומי מסך בתצוגה מקדימה של יצירה נועדה להיות פשוטה לשימוש כמו תצוגות מקדימות של יצירה.
כישורים ב-Android
הצגה ב-GitHubיצירת בדיקות של צילומי מסך
testing-setup Android skill כדי לפתח אסטרטגיית בדיקה וליצור בדיקות של צילומי מסך.android skills add testing-setupבדיקת צילום מסך היא בדיקה אוטומטית שמצלמת מסך של חלק מממשק המשתמש ואז משווה אותו לתמונת הפניה שאושרה בעבר. אם התמונות לא זהות, הבדיקה נכשלת ונוצר דוח HTML שיעזור לכם להשוות ולמצוא את ההבדלים.
בעזרת הכלי לבדיקת צילומי מסך של טיוטות, אתם יכולים:
- אפשר להשתמש ב-
@PreviewTestכדי ליצור בדיקות של צילומי מסך לתצוגות מקדימות קיימות או חדשות של רכיבים. - ליצור תמונות לדוגמה מהתצוגות המקדימות האלה שאפשר להרכיב מהן תמונות.
- ליצור דוח HTML שמזהה שינויים בתצוגות המקדימות האלה אחרי שמבצעים שינויים בקוד.
- כדי להרחיב את הבדיקות, אפשר להשתמש בפרמטרים של
@Preview, כמוuiModeאוfontScale, ובתצוגות מקדימות מרובות. - אפשר להפוך את הבדיקות למודולריות באמצעות
screenshotTestערכת המקור החדשה.
שילוב עם IDE
אפשר להשתמש בכלי Compose Preview Screenshot Testing על ידי הפעלת משימות Gradle הבסיסיות (updateScreenshotTest ו-validateScreenshotTest) באופן ידני, אבל בגרסה Canary 4 של Android Studio Otter 3 Feature Drop יש שילוב מלא של IDE. כך אפשר ליצור תמונות עזר, להריץ בדיקות ולנתח כשלים באימות, הכול בסביבת הפיתוח המשולבת. אלה כמה מהתכונות העיקריות:
- סמלים בשוליים בעורך. עכשיו אפשר להריץ בדיקות או לעדכן תמונות לדוגמה ישירות מקוד המקור. סמלי הפעלה ירוקים מופיעים בשוליים לצד קומפוזיציות ומחלקות עם ההערה
@PreviewTest.- מריצים בדיקות של צילומי מסך. להריץ בדיקות ספציפיות לפונקציה אחת או לכל המחלקה.
- הוספה או עדכון של תמונות רפרנס. מפעילים את תהליך העדכון באופן ספציפי להיקף שנבחר.
- ניהול אינטראקטיבי של קובצי עזר. עדכון תמונות לדוגמה בטוח יותר ומפורט יותר.
- תיבת דו-שיח חדשה ליצירת תמונות רפרנס. במקום להריץ משימת Gradle בכמות גדולה, תיבת דו-שיח חדשה מאפשרת לכם לראות תצוגה מקדימה ולבחור בדיוק אילו תצוגות מקדימות ליצור או לעדכן.
- תצוגה מקדימה של הגרסאות. בתיבת הדו-שיח מוצגות כל הווריאציות של התצוגה המקדימה (למשל, עיצוב בהיר או עיצוב כהה, או מכשירים שונים) בנפרד, וכך אפשר לבחור או לבטל את הבחירה של פריטים ספציפיים לפני יצירת התמונות.
- תוצאות בדיקה משולבות וכלי להשוואת קוד. הצגת התוצאות בלי לצאת מ-IDE.
- חלונית הפעלה מאוחדת. תוצאות הבדיקה של צילום המסך מופיעות בחלון של הכלי הרגיל Run. הבדיקות מקובצות לפי כיתה ופונקציה, והסטטוס שלהן (עברו או נכשלו) מסומן בבירור.
- כלי להשוואה ויזואלית. אם הבדיקה נכשלת, בכרטיסייה צילום מסך אפשר להשוות בין התמונות התייחסות, בפועל וההבדל זו לצד זו.
- מאפיינים מפורטים. בכרטיסייה מאפיינים מופיעים מטא-נתונים על בדיקות שנכשלו, כולל אחוז ההתאמה, ממדי התמונה והגדרות התצוגה המקדימה הספציפיות שבהן נעשה שימוש (לדוגמה,
uiModeאוfontScale).
- היקף הבדיקה גמיש. עכשיו אפשר להריץ בדיקות של צילומי מסך עם היקפים שונים ישירות מתצוגת הפרויקט. לוחצים לחיצה ימנית על מודול, ספרייה, קובץ או מחלקה כדי להריץ בדיקות של צילומי מסך רק עבור הבחירה הזו.
דרישות
כדי להשתמש בבדיקת צילומי מסך של תצוגה מקדימה של קומפוזיציה באמצעות השילוב המלא של IDE, הפרויקט צריך לעמוד בדרישות הבאות:
- Android Studio Panda 1 Canary 4 ואילך.
- Android Gradle Plugin (AGP) בגרסה 9.0 ואילך.
- גרסת הפלאגין Compose Preview Screenshot Testing 0.0.1-alpha16 ואילך.
- גרסה 2.2.10 ואילך של Kotlin.
- JDK מגרסה 17 ואילך.
- האפשרות Compose מופעלת בפרויקט. מומלץ להפעיל את Compose באמצעות התוסף Compose Compiler Gradle.
אם רוצים להשתמש רק במשימות הבסיסיות של Gradle בלי שילוב עם IDE, הדרישות הן:
- Android Gradle Plugin (AGP) מגרסה 8.5.0 ואילך.
- גרסת הפלאגין Compose Preview Screenshot Testing 0.0.1-alpha16 ואילך.
- Kotlin מגרסה 1.9.20 ואילך. מומלץ להשתמש ב-Kotlin 2.0 ומעלה כדי שתוכלו להשתמש בתוסף Compose Compiler Gradle.
- JDK מגרסה 17 ואילך.
- האפשרות Compose מופעלת בפרויקט. מומלץ להפעיל את Compose באמצעות התוסף Compose Compiler Gradle.
הגדרה
הכלי המשולב ומשימות 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) }
הגדרת תצוגות מקדימות של רכיבים לשימוש בבדיקות צילומי מסך
כדי לציין את התצוגות המקדימות שניתן להרכיב שבהן רוצים להשתמש לבדיקות צילומי מסך, מסמנים את התצוגות המקדימות באמצעות ההערה @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איך מציגים תצוגה מקדימה של Compose באמצעות Android CLI
לדוגמה, אפשר להשתמש בפקודה
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 ובוחרים באפשרות הפעלה של ScreenshotTests.
אם בדיקה נכשלת, לוחצים על שם הבדיקה בחלונית Run (הפעלה). בוחרים בכרטיסייה צילום מסך כדי לבדוק את ההבדלים בין התמונות באמצעות אמצעי הבקרה המשולבים של הזום וההזזה.
עם משימות 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.
פתרון בעיות
בדיקות צילום מסך של תצוגה מקדימה של יצירה מבוססת-AI מריצות בדיקות בצד השרת, שיכולות להיות בדיקות שדורשות הרבה זיכרון. כדי להגדיל את הגודל המקסימלי של ה-heap עבור ה-JVM של הבדיקה, מוסיפים את המאפיין הבא לקובץ gradle.properties:
android.compose.screenshot.maxHeapSize=4g
בעיות מוכרות
- Kotlin Multiplatform (KMP): גם סביבת הפיתוח המשולבת וגם הפלאגין הבסיסי מתוכננים באופן בלעדי לפרויקטים של Android. הם לא תומכים ביעדים שאינם Android בפרויקטים של KMP.
הרשימה המלאה של הבעיות המוכרות הנוכחיות מופיעה ברכיב המעקב אחר בעיות בכלי. אפשר לדווח על משוב ובעיות אחרות דרך מעקב הבעיות.
עדכוני גרסה
הרשימה המלאה של עדכוני הגרסה מופיעה בנתוני הגרסה.