झलक दिखाने वाले स्क्रीनशॉट की टेस्टिंग कंपोज़ करें

स्क्रीनशॉट की जांच करके, यह देखा जा सकता है कि आपका यूज़र इंटरफ़ेस (यूआई) लोगों को कैसा दिखता है. कॉन्टेंट बनाने टेक्स्ट की झलक दिखाने वाला टूल कंपोज़ करें, इसकी सादगी और सुविधाएं कंपोज़ेबल प्रीव्यू देखने के लिए, होस्ट-साइड स्क्रीनशॉट टेस्ट करने से, प्रोडक्टिविटी में बढ़ोतरी होती है. झलक लिखें स्क्रीनशॉट की टेस्टिंग को इस तरह से डिज़ाइन किया गया है कि वह कंपोज़ेबल प्रीव्यू की तरह इस्तेमाल करने में आसान हो.

स्क्रीनशॉट टेस्ट एक ऑटोमेटेड टेस्ट है, जो यूज़र इंटरफ़ेस (यूआई) के किसी हिस्से का स्क्रीनशॉट लेता है और फिर उसकी तुलना पहले से मंज़ूर की गई पहचान इमेज से करता है. अगर इमेज मेल नहीं खा रही हैं, टेस्ट नहीं हो पाता है और आपकी मदद करने के लिए एक एचटीएमएल रिपोर्ट जनरेट करता है तुलना करें और फ़र्क़ ढूंढें.

Compose की झलक दिखाने वाले स्क्रीनशॉट की जांच करने वाले टूल की मदद से, ये काम किए जा सकते हैं:

  • आपको जिन मौजूदा या नई कंपोज़ेबल झलक का इस्तेमाल करना है उनकी पहचान करें स्क्रीनशॉट टेस्ट.
  • कंपोज़ेबल प्रीव्यू से रेफ़रंस इमेज जनरेट करें.
  • एक एचटीएमएल रिपोर्ट जनरेट करना, जो आपके बाद उन झलक में हुए बदलावों की पहचान करे कोड में बदलाव करें.
  • एक से ज़्यादा झलक देखने के लिए और uiMode या fontScale जैसे @Preview पैरामीटर का इस्तेमाल करें ताकि आपको टेस्ट की संख्या बढ़ाने में मदद मिल सके.
  • screenshotTest के नए सोर्स सेट की मदद से, अपने टेस्ट मॉड्यूल तैयार करें.
पहली इमेज. एचटीएमएल रिपोर्ट का उदाहरण.

ज़रूरी शर्तें

टेक्स्ट की झलक दिखाने की सुविधा की जांच करने के लिए, आपको इनकी ज़रूरत पड़ेगी:

  • Android Gradle 8.5.0-beta01 या इसके बाद का वर्शन.
  • Kotlin 1.9.20 या इसके बाद का वर्शन.

सेटअप

इस टूल को चालू करने के लिए, यह तरीका अपनाएं:

  1. अपने प्रोजेक्ट में com.android.compose.screenshot प्लग इन, वर्शन 0.0.1-alpha01 जोड़ें.
    1. अपनी वर्शन कैटलॉग फ़ाइल में प्लग इन जोड़ें:
      [versions]
      agp = "8.5.0-beta01"
      kotlin = "1.9.20"
      ...
      screenshot = "0.0.1-alpha01"
      
      [plugins]
      ...
      screenshot = { id = "com.android.compose.screenshot", version.ref = "screenshot"}
      
    2. अपनी मॉड्यूल-लेवल build.gradle.kts फ़ाइल में, प्लगिन को plugins {} ब्लॉक:
      plugins {
          ...
          alias(libs.plugins.screenshot)
      }
      
  2. अपने प्रोजेक्ट की gradle.properties फ़ाइल में, एक्सपेरिमेंटल प्रॉपर्टी चालू करें.
    android.experimental.enableScreenshotTest=true
    
  3. आपके मॉड्यूल-लेवल के android {} ब्लॉक में build.gradle.kts फ़ाइल का इस्तेमाल करके, प्रयोग के तौर पर इस्तेमाल होने वाले फ़्लैग को चालू करें. screenshotTest सोर्स सेट कर सकता है और पक्का करता है कि kotlinCompilerExtensionVersion को 1.5.4 या उसके बाद के वर्शन पर सेट किया गया है.
    android {
        ...
        composeOptions {
            kotlinCompilerExtensionVersion = "1.5.4"
        }
        experimentalProperties["android.experimental.enableScreenshotTest"] = true
    }
    
  4. पक्का करें कि आपने ui-tooling निर्भर है.
    1. इसे अपने वर्शन कैटलॉग में जोड़ें:
      [libraries]
      androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling"}
      
    2. इसे अपने मॉड्यूल-लेवल की build.gradle.kts फ़ाइल में जोड़ें:
      dependencies {
        screenshotTestImplementation(libs.androidx.compose.ui.tooling)
      }
      

स्क्रीनशॉट टेस्ट के लिए, कंपोज़ेबल झलक सेट करें

स्क्रीनशॉट की जांच करने के लिए, आपको जिन कंपोज़ेबल झलक का इस्तेमाल करना है उन्हें तय करने के लिए, टेस्ट क्लास में झलक. टेस्ट क्लास फ़ाइल नए उदाहरण के लिए, screenshotTest सोर्स सेट app/src/screenshotTest/kotlin/com/google/yourapp/ExamplePreviewScreenshots.kt ({module}/src/screenshotTest/{kotlin|java}/com/your/package).

इस फ़ाइल या एक ही सोर्स सेट में बनाई गई अन्य फ़ाइलों में, ज़्यादा कॉम्पोज़ेबल और/या झलकें जोड़ी जा सकती हैं. इनमें एक से ज़्यादा झलकें भी शामिल हैं.

package com.google.yourapp

import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import com.google.yourapp.ui.theme.MyApplicationTheme

class ExamplePreviewsScreenshots {

    @Preview(showBackground = true)
    @Composable
    fun GreetingPreview() {
        MyApplicationTheme {
            Greeting("Android!")
        }
    }
}

रेफ़रंस इमेज जनरेट करें

टेस्ट क्लास सेट अप करने के बाद, आपको हर एक के लिए रेफ़रंस इमेज जनरेट करनी होंगी झलक देखें. इन पहचान इमेज का इस्तेमाल, बाद में बदलावों की पहचान करने के लिए किया जाता है. ऐसा तब किया जाता है, जब आप कोड में बदलाव करें. अपने कॉम्पोज़ेबल के झलक वाले स्क्रीनशॉट के टेस्ट के लिए रेफ़रंस इमेज जनरेट करने के लिए, यह Gradle टास्क चलाएं:

  • Linux और macOS: ./gradlew updateDebugScreenshotTest ./gradlew {:module:}update{Variant}ScreenshotTest
  • Windows: gradlew updateDebugScreenshotTest gradlew {:module:}update{Variant}ScreenshotTest

टास्क पूरा होने के बाद, रेफ़रंस इमेज को इसमें ढूंढें app/src/debug/screenshotTest/reference ({module}/src/{variant}/screenshotTest/reference).

टेस्ट रिपोर्ट जनरेट करना

रेफ़रंस इमेज मौजूद होने के बाद, नया स्क्रीनशॉट लेने और उसकी तुलना रेफ़रंस इमेज से करने के लिए, पुष्टि करने वाला टास्क चलाएं:

  • 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.

पहले से मालूम समस्याएं

टूल में आम तौर पर होने वाली समस्याओं की मौजूदा सूची देखने के लिए, समस्या ट्रैकर कॉम्पोनेंट. अन्य सुझाव और समस्याओं की शिकायत करना समस्या को ट्रैक करने वाले टूल के ज़रिए ढूंढा जा सकता है.

रिलीज़ से जुड़े अपडेट

मौजूदा वर्शन के लिए रिलीज़ की जानकारी और बदलाव

0.0.1-alpha06

इस रिलीज़ में ये सुविधाएं शामिल हैं:

इमेज में अंतर का थ्रेशोल्ड: इस नई ग्लोबल थ्रेशोल्ड सेटिंग की मदद से, स्क्रीनशॉट की तुलना पर बेहतर तरीके से कंट्रोल किया जा सकता है. कॉन्फ़िगर करने के लिए, अपना मॉड्यूल का create.gradle.kts:

android {
    ...
    testOptions {
        ...
        screenshotTests {
            imageDifferenceThreshold = 0.0001f // 0.01%
        }
    }
}

यह थ्रेशोल्ड, मॉड्यूल में तय किए गए सभी स्क्रीनशॉट टेस्ट पर लागू होगा.

  • गड़बड़ियां ठीक की गईं: 'लिखें' विंडो में दिखने वाली कुछ गड़बड़ियां ठीक की गई हैं. साथ ही, इसमें खाली जगह भेजने के लिए सहायता जोड़ी गई है
  • परफ़ॉर्मेंस बेहतर बनाएं: इमेज में अंतर दिखाने वाले एल्गोरिदम को ज़्यादा तेज़ बनाने के लिए अपडेट किया गया