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

0.0.1-alpha16

इस रिलीज़ में, AGP टेस्ट सुइट के लिए सपोर्ट जोड़ा गया है. साथ ही, एचटीएमएल टेस्ट रिपोर्ट में सुधार किए गए हैं और गड़बड़ियां ठीक की गई हैं:

  • टेस्ट सुइट इंटिग्रेशन: Android Gradle प्लगिन (AGP) टेस्ट सुइट की मदद से, Compose की झलक के स्क्रीनशॉट टेस्ट चलाने की सुविधा जोड़ी गई है. स्क्रीनशॉट टेस्ट सुइट को कॉन्फ़िगर करने और चलाने का तरीका जानने के लिए, टेस्ट सुइट की मदद से स्क्रीनशॉट टेस्टिंग करना लेख पढ़ें.
  • एचटीएमएल टेस्ट रिपोर्ट में सुधार: हेडर मेटाडेटा कार्ड जोड़ा गया है. इसमें टेस्ट केस की जानकारी (नाम, तरीका, झलक, वैरिएंट, सुइट, और स्टेटस बैज) दिखती है. साथ ही, गड़बड़ी की खास जानकारी वाला बॉक्स जोड़ा गया है. इसमें गड़बड़ियों को कैटगरी के हिसाब से बांटा गया है. जैसे, रेफ़रंस इमेज मौजूद नहीं हैं या डाइमेंशन मैच नहीं हो रहे हैं. इसमें क्लिपबोर्ड पर तुरंत कॉपी करने की सुविधा भी है.
  • डाइनैमिक विज़ुअल डिफ़: विज़ुअल डिफ़ अब लगातार ग्रेडिएंट का इस्तेमाल करते हैं. इससे पिक्सल में मामूली बदलावों के लिए हल्के हाइलाइट से लेकर बड़े अंतर के लिए ज़्यादा कंट्रास्ट वाले फ़ोकस तक, हर तरह के बदलावों को दिखाया जा सकता है. इससे नेस्ट किए गए कॉम्पोनेंट में हुए बदलावों को छिपाने से रोका जा सकता है.

इस रिलीज़ में, ये गड़बड़ियां भी ठीक की गई हैं:

समस्या ब्यौरा
समस्या #513276596 इससे यह पक्का करने में मदद मिलती है कि Layoutlib रेंडरिंग से जुड़ी गड़बड़ियों की वजह से, स्क्रीनशॉट टेस्ट तुरंत फ़ेल हो जाएं. ऐसा न हो कि वे चुपचाप फ़ेल हो जाएं या खाली रेफ़रंस इमेज बना दें.

0.0.1-alpha15

इस रिलीज़ में, ये गड़बड़ियां ठीक की गई हैं:

समस्या ब्यौरा
समस्या #500417360 Kotlin 2.1+ के साथ झलकियां चलाने पर, NoClassDefFoundError के इनिशियलाइज़ेशन में होने वाली क्रैश की समस्या (NoClassDefFoundError) को ठीक किया गया है. ऐसा इसलिए होता था, क्योंकि Layoutlib फ़्रेमवर्क के आइसोलेटेड क्लास लोडर में kotlin-stdlib डिपेंडेंसी मौजूद नहीं थी.
समस्या #384188032 Composable AndroidView फ़ैक्ट्री के अंदर ViewHolder ऑब्जेक्ट को बड़ा करते समय रेंडरिंग क्रैश होने की समस्या ठीक की गई.
समस्या #351302272 उन झलकियों में ड्रॉएबल रिसॉर्स लोड न होने की समस्या हल की गई है जहां रिसॉर्स, सिबलिंग या डिपेंडेंट प्रोजेक्ट मॉड्यूल में मौजूद होते हैं.
समस्या #482664893 यह पक्का किया गया है कि स्क्रीनशॉट टेस्ट में अपवाद होने पर, पुष्टि करने से जुड़े टास्क सही तरीके से पूरे न हों. ऐसा इसलिए किया गया है, ताकि पुराने स्क्रीनशॉट के साथ टास्क गलत तरीके से पूरे न हों.
समस्या #497675618 JVM कवरेज एजेंट (जैसे, JaCoCo) की मदद से, कंपोज़ेबल क्लास के इंस्ट्रुमेंटेशन की सुविधा जोड़ी गई.
समस्या #498545960 डीबग करने के आउटपुट को बेहतर बनाने के लिए, JUnit कंसोल की गड़बड़ी के स्टैक ट्रेस से, हटाए गए इंटरनल फ़ाइल नामों (उदाहरण के लिए, ImageVerifier.kt) को हटाया गया.
समस्या #385613865 टेस्ट के नतीजों वाली एक्सएमएल फ़ाइल में, इमेज के लिए ऐब्सलूट पाथ का इस्तेमाल करने की सुविधा हटा दी गई है. अब इनकी जगह रिलेटिव पाथ का इस्तेमाल किया जाएगा.
समस्या #513276596 यह पक्का किया गया है कि रेंडरिंग से जुड़ी गड़बड़ियों की वजह से, स्क्रीनशॉट टेस्ट के टास्क सही तरीके से पूरे न हो पाएं. ऐसा न हो कि गड़बड़ी होने के बावजूद, खाली स्क्रीनशॉट के साथ टास्क पूरा हो जाए.
समस्या #340639802 झलक देखने के तरीके से जुड़े उन विवादों को हल किया गया है जिनमें टेस्ट को मुख्य सोर्ससेट में पूरी तरह से क्वालिफ़ाइड तरीके के नामों से गलत तरीके से मैच किया गया था.

0.0.1-alpha14

इस रिलीज़ में, गड़बड़ियां ठीक की गई हैं और परफ़ॉर्मेंस को बेहतर बनाया गया है. जैसे:

समस्या ब्यौरा
समस्या #469819154 Compose रेंडरर में मेमोरी लीक की समस्या ठीक की गई.
समस्या #470058578 रेफ़रंस इमेज अपडेट करते समय, यूज़र इंटरफ़ेस (यूआई) के फ़्रीज़ होने और मेमोरी से जुड़ी गड़बड़ियों को ठीक किया गया.
समस्या #422412664 Windows और GitHub Actions पर, "कमांड लाइन, ऑपरेटिंग सिस्टम की सीमाओं से ज़्यादा है" गड़बड़ियों को ठीक किया गया.
समस्या #437223807 एक से ज़्यादा मॉड्यूल वाले प्रोजेक्ट में, ऐसेट और रिसॉर्स को हल करने से जुड़ी समस्याओं को ठीक किया गया है.
समस्या #464899800 version.properties में नाम के टकराव की वजह से, Gradle प्लगिन के टकराव की समस्या को ठीक किया गया है.
समस्या #482433854 kotlin-reflect या सीरियलाइज़ेशन का इस्तेमाल करने वाले कंपोज़ेबल के लिए, शुरू करने से जुड़ी गड़बड़ियों को ठीक किया गया है.

0.0.1-alpha13

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

  • JDK 17 या इसके बाद के वर्शन के साथ काम करता है.
  • गड़बड़ियां ठीक की गई हैं और Android Studio के साथ बेहतर तरीके से इंटिग्रेट किया गया है.

0.0.1-alpha12

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

  • Android Gradle प्लगिन (AGP) 9.0 के साथ काम करता है.
  • JDK 24 और इसके बाद के वर्शन पर, स्क्रीनशॉट टेस्ट चलाने की सुविधा.
  • ज़्यादा से ज़्यादा हीप साइज़ को कॉन्फ़िगर करने की सुविधा.
  • रेंडरिंग से जुड़ी गड़बड़ियां ठीक की गई हैं और टेस्ट की स्थिरता को बेहतर बनाया गया है.
  • रिपोर्टिंग को बेहतर बनाया गया है, ताकि नई और रेफ़रंस इमेज से जुड़े प्रतिशत के अंतर और अन्य मेटाडेटा को शामिल किया जा सके.

0.0.1-alpha11

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

  • Android Gradle प्लगिन (AGP) 8.13 के साथ काम करता है.
  • होस्ट मशीन की स्थान-भाषा के बावजूद, दशमलव वैल्यू वाले एक्सएमएल ड्रॉएबल को पार्स करने की सुविधा जोड़ी गई.
  • JDK 24 या इसके बाद के वर्शन का इस्तेमाल करने वाली होस्ट मशीन के लिए, JDK (11-23) का इस्तेमाल किया जाएगा. हालांकि, इसके लिए यह ज़रूरी है कि JDK का कोई वर्शन इंस्टॉल किया गया हो.

0.0.1-alpha10

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

  • इस वर्शन से, आपको अपने सभी प्रीव्यू फ़ंक्शन को @PreviewTest एनोटेशन के साथ मार्क करना होगा. एनोटेशन के बिना झलक नहीं दिखाई जाएंगी.

  • रेफ़रंस इमेज डायरेक्ट्री को {module}/src/{variant}/screenshotTest/reference से बदलकर {module}/src/screenshotTest{Variant}/reference कर दिया गया है. ऐसा इसलिए किया जाता है, ताकि जनरेट की गई रेफ़रंस इमेज, प्रोडक्शन कोड का हिस्सा न बनें. साथ ही, यह अन्य टेस्ट टाइप के डायरेक्ट्री स्ट्रक्चर के साथ अलाइन हो.

  • {variant}PreviewScreenshotRender टास्क को हटा दिया जाता है. इमेज रेंडरिंग को JUnit Test Engine में माइग्रेट किया गया है.

  • अपडेट करने से पहले, update{Variant}ScreenshotTest टास्क, रेंडर की गई नई इमेज की तुलना रेफ़रंस इमेज से करेगा. यह सिर्फ़ उन इमेज को अपडेट करेगा जिनमें तय की गई सीमा से ज़्यादा अंतर है. --updateFilter कमांड-लाइन फ़्लैग को हटा दिया गया है.

0.0.1-alpha06

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

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

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

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

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