কম্পোজ প্রিভিউ স্ক্রিনশট টেস্টিং

ব্যবহারকারীদের কাছে আপনার UI কেমন দেখাচ্ছে তা যাচাই করার জন্য স্ক্রিনশট টেস্টিং একটি কার্যকর উপায়। কম্পোজ প্রিভিউ স্ক্রিনশট টেস্টিং টুল কম্পোজেবল প্রিভিউয়ের সরলতা এবং বৈশিষ্ট্যগুলিকে হোস্ট-সাইড স্ক্রিনশট পরীক্ষা চালানোর উৎপাদনশীলতা লাভের সাথে একত্রিত করে। কম্পোজ প্রিভিউ স্ক্রিনশট টেস্টিং কম্পোজেবল প্রিভিউয়ের মতোই ব্যবহার করা সহজ করার জন্য ডিজাইন করা হয়েছে।

স্ক্রিনশট পরীক্ষা হল একটি স্বয়ংক্রিয় পরীক্ষা যা UI এর একটি অংশের স্ক্রিনশট নেয় এবং তারপর এটি পূর্বে অনুমোদিত রেফারেন্স ছবির সাথে তুলনা করে। যদি ছবিগুলি মিল না করে, তাহলে পরীক্ষাটি ব্যর্থ হয় এবং তুলনা করতে এবং পার্থক্যগুলি খুঁজে পেতে আপনাকে সাহায্য করার জন্য একটি HTML প্রতিবেদন তৈরি করে।

কম্পোজ প্রিভিউ স্ক্রিনশট টেস্টিং টুলের সাহায্যে আপনি যা করতে পারেন:

  • বিদ্যমান বা নতুন কম্পোজেবল প্রিভিউগুলির জন্য স্ক্রিনশট পরীক্ষা তৈরি করতে @PreviewTest ব্যবহার করুন।
  • সেই কম্পোজেবল প্রিভিউ থেকে রেফারেন্স ছবি তৈরি করুন।
  • কোড পরিবর্তন করার পরে সেই প্রিভিউগুলিতে পরিবর্তনগুলি সনাক্ত করে এমন একটি HTML রিপোর্ট তৈরি করুন।
  • আপনার পরীক্ষাগুলিকে স্কেল করতে সাহায্য করার জন্য @Preview প্যারামিটার, যেমন uiMode বা fontScale , এবং মাল্টি-প্রিভিউ ব্যবহার করুন।
  • নতুন screenshotTest সোর্স সেট দিয়ে আপনার পরীক্ষাগুলিকে মডুলারাইজ করুন।
চিত্র ১। HTML রিপোর্টের উদাহরণ।

আবশ্যকতা

কম্পোজ প্রিভিউ স্ক্রিনশট টেস্টিং ব্যবহার করতে, আপনার নিম্নলিখিতগুলি প্রয়োজন:

  • অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.৫.০ বা তার বেশি।
  • কোটলিন ১.৯.২০ বা তার বেশি। আমরা কোটলিন ২.০ বা তার বেশি ব্যবহার করার পরামর্শ দিচ্ছি যাতে আপনি কম্পোজ কম্পাইলার গ্রেডল প্লাগইন ব্যবহার করতে পারেন।
  • JDK ২৩ বা তার কম।
  • আপনার প্রোজেক্টের জন্য Compose সক্ষম করা হয়েছে। আমরা Compose Compiler Gradle প্লাগইন ব্যবহার করে Compose সক্ষম করার পরামর্শ দিচ্ছি।

সেটআপ

টুলটি সক্রিয় করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার প্রোজেক্টের gradle.properties ফাইলে পরীক্ষামূলক বৈশিষ্ট্যটি সক্ষম করুন।
          android.experimental.enableScreenshotTest=true
        
  2. আপনার module-level build.gradle.kts ফাইলের android {} ব্লকে, screenshotTest সোর্স সেট ব্যবহার করার জন্য পরীক্ষামূলক পতাকাটি সক্ষম করুন।
          android {
              experimentalProperties["android.experimental.enableScreenshotTest"] = true
          }
        
  3. আপনার প্রোজেক্টে com.android.compose.screenshot প্লাগইন, সংস্করণ 0.0.1-alpha11 যোগ করুন।
    1. আপনার সংস্করণ ক্যাটালগ ফাইলে প্লাগইনটি যোগ করুন:
                [versions]
                agp = "8.11.0-alpha06"
                kotlin = "2.1.20"
                screenshot = "0.0.1-alpha11"
      
                [plugins]
                screenshot = { id = "com.android.compose.screenshot", version.ref = "screenshot"}
              
    2. আপনার মডিউল-স্তরের build.gradle.kts ফাইলে, plugins {} ব্লকে প্লাগইনটি যোগ করুন:
                plugins {
                    alias(libs.plugins.screenshot)
                }
              
  4. screenshot-validation-api এবং ui-tooling নির্ভরতা যোগ করুন।
    1. আপনার সংস্করণ ক্যাটালগে এগুলি যোগ করুন:
                [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"}
              
    2. আপনার মডিউল-স্তরের 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!")
    }
}

রেফারেন্স ছবি তৈরি করুন

একটি পরীক্ষামূলক ক্লাস সেট আপ করার পরে, আপনাকে প্রতিটি প্রিভিউয়ের জন্য রেফারেন্স ছবি তৈরি করতে হবে। কোড পরিবর্তন করার পরে, এই রেফারেন্স ছবিগুলি পরে পরিবর্তনগুলি সনাক্ত করতে ব্যবহৃত হয়। আপনার কম্পোজেবল প্রিভিউ স্ক্রিনশট পরীক্ষার জন্য রেফারেন্স ছবি তৈরি করতে, নিম্নলিখিত গ্র্যাডেল টাস্কটি চালান:

  • লিনাক্স এবং ম্যাকোস: ./gradlew updateDebugScreenshotTest ( ./gradlew :{module}:update{Variant}ScreenshotTest )
  • উইন্ডোজ: gradlew updateDebugScreenshotTest ( gradlew :{module}:update{Variant}ScreenshotTest )

কাজটি সম্পন্ন হওয়ার পর, app/src/screenshotTestDebug/reference ( {module}/src/screenshotTest{Variant}/reference ) এ রেফারেন্স চিত্রগুলি খুঁজুন।

একটি পরীক্ষার রিপোর্ট তৈরি করুন

রেফারেন্স ছবিগুলি উপস্থিত হয়ে গেলে, একটি নতুন স্ক্রিনশট নিতে এবং রেফারেন্স ছবির সাথে তুলনা করতে validate টাস্কটি চালান:

  • লিনাক্স এবং ম্যাকোস: ./gradlew validateDebugScreenshotTest ( ./gradlew :{module}:validate{Variant}ScreenshotTest )
  • উইন্ডোজ: gradlew validateDebugScreenshotTest ( gradlew :{module}:validate{Variant}ScreenshotTest )

যাচাইকরণের কাজটি {module}/build/reports/screenshotTest/preview/{variant}/index.html এ একটি HTML রিপোর্ট তৈরি করে।

জ্ঞাত সমস্যা

আপনি টুলের ইস্যু ট্র্যাকার কম্পোনেন্টে জ্ঞাত সমস্যার বর্তমান তালিকাটি খুঁজে পেতে পারেন। ইস্যু ট্র্যাকারের মাধ্যমে অন্য কোনও প্রতিক্রিয়া এবং সমস্যা রিপোর্ট করুন।

রিলিজ আপডেট

০.০.১-আলফা১১

এই রিলিজে পরিচয় করিয়ে দেওয়া হয়েছে:

  • অ্যান্ড্রয়েড গ্রেডল প্লাগইন (এজিপি) ৮.১৩ এর সাথে সামঞ্জস্যপূর্ণ।
  • হোস্ট মেশিনের লোকেল নির্বিশেষে দশমিক মান সহ XML ড্রয়েবল পার্স করার জন্য সমর্থন যোগ করা হয়েছে।
  • JDK 24 বা তার বেশি ভার্সন ব্যবহার করে এমন হোস্ট মেশিনের জন্য, সামঞ্জস্যপূর্ণ JDK (11-23) সংগ্রহ করা হবে, যদি একটি ইনস্টল করা থাকে।

০.০.১-আলফা১০

এই রিলিজে পরিচয় করিয়ে দেওয়া হয়েছে:

  • এই সংস্করণ থেকে, আপনাকে আপনার সমস্ত প্রিভিউ ফাংশন @PreviewTest অ্যানোটেশন দিয়ে চিহ্নিত করতে হবে। অ্যানোটেশন ছাড়া প্রিভিউ কার্যকর করা হবে না।

  • রেফারেন্স ইমেজ ডিরেক্টরি {module}/src/{variant}/screenshotTest/reference থেকে {module}/src/screenshotTest{Variant}/reference এ পরিবর্তন করা হয়েছে। এটি নিশ্চিত করার জন্য যে জেনারেট করা রেফারেন্স ইমেজগুলি প্রোডাকশন কোডের অংশ হবে না এবং অন্যান্য পরীক্ষার ধরণের ডিরেক্টরি কাঠামোর সাথে সামঞ্জস্যপূর্ণ হবে।

  • {variant}PreviewScreenshotRender টাস্কটি সরানো হয়েছে। চিত্র রেন্ডারিং JUnit টেস্ট ইঞ্জিনে স্থানান্তরিত হয়েছে।

  • update{Variant}ScreenshotTest টাস্কটি আপডেট করার আগে নতুন রেন্ডারিং ছবিগুলিকে রেফারেন্স ছবির সাথে তুলনা করবে। এটি শুধুমাত্র সেই ছবিগুলিকে আপডেট করবে যেগুলির পার্থক্য একটি নির্দিষ্ট থ্রেশহোল্ডের চেয়ে বেশি। --updateFilter কমান্ডলাইন ফ্ল্যাগটি সরানো হয়েছে।

০.০.১-আলফা০৬

এই রিলিজে পরিচয় করিয়ে দেওয়া হয়েছে:

চিত্রের পার্থক্যের থ্রেশহোল্ড: এই নতুন গ্লোবাল থ্রেশহোল্ড সেটিং আপনাকে স্ক্রিনশট তুলনার উপর আরও সূক্ষ্ম নিয়ন্ত্রণ অর্জনের অনুমতি দেবে। কনফিগার করতে, আপনার মডিউলের build.gradle.kts আপডেট করুন:

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

এই থ্রেশহোল্ড মডিউলে সংজ্ঞায়িত সমস্ত স্ক্রিনশট পরীক্ষায় প্রয়োগ করা হবে।

  • বাগ ফিক্স: কিছু কম্পোজ রেন্ডারার বাগ এবং খালি কম্পোজের জন্য অতিরিক্ত সমর্থন।
  • কর্মক্ষমতা বৃদ্ধি: দ্রুততর করার জন্য চিত্র পার্থক্য অ্যালগরিদম আপডেট করা হয়েছে