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

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

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

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

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

প্রয়োজনীয়তা

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

  • Android Gradle প্লাগইন 8.5.0-beta01 বা উচ্চতর।
  • Kotlin 1.9.20 বা উচ্চতর। আমরা Kotlin 2.0 বা উচ্চতর ব্যবহার করার পরামর্শ দিই যাতে আপনি Compose Compiler Gradle প্লাগইন ব্যবহার করতে পারেন।
  • আপনার প্রকল্পের জন্য কম্পোজ সক্ষম. আমরা কম্পোজ কম্পাইলার গ্রেডল প্লাগইন ব্যবহার করে কম্পোজ সক্রিয় করার পরামর্শ দিই।

সেটআপ

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

  1. আপনার প্রকল্পে com.android.compose.screenshot প্লাগইন, সংস্করণ 0.0.1-alpha10 যোগ করুন।
    1. আপনার সংস্করণ ক্যাটালগ ফাইলে প্লাগইন যোগ করুন:
      [versions]
      agp = "8.11.0-alpha06"
      kotlin = "2.1.20"
      screenshot = "0.0.1-alpha10"
      
      [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. আপনার মডিউল-স্তরের build.gradle.kts ফাইলের android {} ব্লকে, screenshotTest সোর্স সেট ব্যবহার করতে পরীক্ষামূলক পতাকা সক্ষম করুন৷
    android {
        experimentalProperties["android.experimental.enableScreenshotTest"] = true
    }
    
  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!")
    }
}

রেফারেন্স ইমেজ তৈরি করুন

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

  • Linux এবং macOS: ./gradlew updateDebugScreenshotTest ( ./gradlew :{module}:update{Variant}ScreenshotTest )
  • উইন্ডোজ: gradlew updateDebugScreenshotTest ( gradlew :{module}:update{Variant}ScreenshotTest )

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

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

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

  • Linux এবং macOS: ./gradlew validateDebugScreenshotTest ( ./gradlew :{module}:validate{Variant}ScreenshotTest )
  • উইন্ডোজ: gradlew validateDebugScreenshotTest ( gradlew :{module}:validate{Variant}ScreenshotTest )

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

পরিচিত সমস্যা

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

রিলিজ আপডেট

রিলিজ নোট এবং চলমান সংস্করণের জন্য পরিবর্তন.

0.0.1-আলফা10

এই রিলিজ পরিচয় করিয়ে দেয়:

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

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

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

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

0.0.1-আলফা06

এই রিলিজ পরিচয় করিয়ে দেয়:

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

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

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

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