Android Gradle Plugin (AGP) 9.5.0-alpha03 এবং Compose Preview Screenshot Testing engine 0.0.1-alpha16 থেকে শুরু করে, স্ক্রিনশট টেস্টিং AGP-এর নেটিভ টেস্ট স্যুট ফ্রেমওয়ার্কের সাথে সমন্বিত করা হয়েছে।
এই পদ্ধতিটি স্বতন্ত্র স্ক্রিনশট প্লাগইন ( com.android.compose.screenshot )-কে প্রতিস্থাপন করে। আমরা নিম্নলিখিত কারণগুলির জন্য AGP টেস্ট স্যুট গ্রহণ করার সুপারিশ করি:
- নেটিভ গ্রেডল টাস্ক লাইফসাইকেল : স্ক্রিনশট টেস্টগুলো সরাসরি স্ট্যান্ডার্ড গ্রেডল এবং এজিপি টেস্টিং লাইফসাইকেলের সাথে একীভূত হয়, যা টাস্ক আইসোলেশন এবং টেস্ট এক্সিকিউশনের নির্ভরযোগ্যতা উন্নত করে।
- একাধিক ভ্যারিয়েন্ট এবং কাস্টম স্যুট সমর্থন : একটিমাত্র পূর্ব-কনফিগার করা সোর্স সেটের মধ্যে সীমাবদ্ধ না থেকে, আপনি একটি একক মডিউলের মধ্যে একাধিক স্বতন্ত্র স্ক্রিনশট টেস্ট স্যুট (যেমন
screenshotTest,uiTests, বাsmokeTests) তৈরি করতে পারেন এবং নির্দিষ্ট বিল্ড ভ্যারিয়েন্টকে (যেমনdemoDebugবাrelease) টার্গেট করতে পারেন। - উন্নত বিল্ড পারফরম্যান্স এবং আইসোলেশন : AGP টেস্ট স্যুটগুলি বিল্ট-ইন আর্টিফ্যাক্ট ট্রান্সফর্ম (যেমন লেআউটলিব রানটাইম এক্সট্র্যাকশন) এবং আইসোলেটেড ক্লাসলোডিং ব্যবহার করে, সাথে গ্রেডল কনফিগারেশন ক্যাশিং এবং প্রজেক্ট আইসোলেশনের সম্পূর্ণ সমর্থন রয়েছে।
প্রয়োজনীয়তা
টেস্ট স্যুটের সাথে কম্পোজ স্ক্রিনশট টেস্টিং ব্যবহার করতে, নিশ্চিত করুন যে আপনার পরিবেশ নিম্নলিখিত প্রয়োজনীয়তাগুলি পূরণ করে:
- অ্যান্ড্রয়েড স্টুডিও র্যাবিট ১ ক্যানারি ৪ বা উচ্চতর সংস্করণ।
- অ্যান্ড্রয়েড গ্রেডল প্লাগইন (AGP) সংস্করণ 9.5.0-alpha03 বা উচ্চতর।
- কম্পোজ স্ক্রিনশট ইঞ্জিন সংস্করণ 0.0.1-alpha16 বা উচ্চতর।
- জেডিকে সংস্করণ ১৭ বা উচ্চতর।
- আপনার প্রোজেক্টের জন্য Compose সক্রিয় করা হয়েছে। আমরা Compose Compiler Gradle প্লাগইন ব্যবহার করে Compose সক্রিয় করার পরামর্শ দিই।
সেটআপ এবং কনফিগারেশন
টেস্ট স্যুটের সাথে কম্পোজ স্ক্রিনশট টেস্টিং কনফিগার করতে, নিম্নলিখিত ধাপগুলো সম্পন্ন করুন:
১. পরীক্ষামূলক ফ্ল্যাগ সক্রিয় করুন
আপনার প্রোজেক্টের রুট gradle.properties ফাইলে স্ক্রিনশট টেস্টিং এবং টেস্ট স্যুট সাপোর্ট সক্রিয় করুন:
android.experimental.enableScreenshotTest=true
android.experimental.testSuiteSupport=true
২. build.gradle.kts ফাইলে টেস্ট স্যুটটি কনফিগার করুন।
আপনার মডিউলের build.gradle.kts ফাইলে, testOptions ব্লকের মধ্যে একটি স্ক্রিনশট টেস্ট স্যুট সংজ্ঞায়িত করুন:
android {
testOptions {
screenshotTests.create("screenshotTest") { // suiteName can be customized (for example, "uiTests")
engineVersion = "0.0.1-alpha16"
targetVariants.add("demoDebug") // Add specific variants to test
dependencies {
implementation(libs.androidx.compose.ui.tooling)
implementation("com.android.tools.screenshot:screenshot-validation-api:0.0.1-alpha16")
}
}
}
}
৩. পরীক্ষার উৎস সেট তৈরি করুন
আপনার স্যুট নামের সাথে মেলে এমন একটি ডেডিকেটেড সোর্স সেট ডিরেক্টরি তৈরি করুন:
{module}/src/{suiteName}/kotlin/
উদাহরণস্বরূপ, screenshotTest নামের একটি স্যুটের জন্য:
feature/foryou/impl/src/screenshotTest/kotlin/com/example/app/ForYouScreenTest.kt
৪. কম্পোজেবল প্রিভিউ টেস্ট সংজ্ঞায়িত করুন
@PreviewTest এবং স্ট্যান্ডার্ড @Preview বা মাল্টি-প্রিভিউ অ্যানোটেশন ব্যবহার করে কম্পোজেবল ফাইলগুলোকে টীকাযুক্ত করুন:
package com.example.app
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import com.android.tools.screenshot.PreviewTest
import com.example.app.ui.theme.AppTheme
@PreviewTest
@Preview(showBackground = true)
@Composable
fun ForYouScreenPreview() {
AppTheme {
ForYouScreen(isSyncing = false)
}
}
স্ক্রিনশট পরীক্ষা চালান
AGP টেস্ট স্যুটগুলো আপনার স্যুটের নাম, টার্গেট এবং ভ্যারিয়েন্টের উপর ভিত্তি করে নির্দিষ্ট গ্রেডল টাস্ক তৈরি করে।
১. রেফারেন্স ইমেজ তৈরি বা আপডেট করুন
কম্পোজেবল প্রিভিউ রেন্ডার করুন এবং গোল্ডেন বেসলাইন রেফারেন্স ইমেজগুলো সংরক্ষণ করুন:
- লিনাক্স এবং ম্যাকওএস :
./gradlew update{SuiteName}{Target}{Variant}TestSuite(উদাহরণস্বরূপ,./gradlew updateScreenshotTestDefaultDemoDebugTestSuite) - উইন্ডোজ :
gradlew updateScreenshotTestDefaultDemoDebugTestSuite
রেফারেন্স ছবিগুলো তৈরি করে এখানে সংরক্ষণ করা হয়:
{module}/src/{suiteName}{Target}{Variant}/reference/
২. যাচাই করুন এবং পরীক্ষা চালান
নতুন স্ক্রিনশট তৈরি করুন এবং সেগুলোকে রেফারেন্স ছবির সাথে তুলনা করুন:
- লিনাক্স এবং ম্যাকওএস :
./gradlew test{SuiteName}{Target}{Variant}TestSuite(উদাহরণস্বরূপ,./gradlew testScreenshotTestDefaultDemoDebugTestSuite) - উইন্ডোজ :
gradlew testScreenshotTestDefaultDemoDebugTestSuite
পরীক্ষার প্রতিবেদন পরিদর্শন করুন
যদি কোনো পার্থক্য শনাক্ত হয় বা পরীক্ষাগুলো ব্যর্থ হয়, তাহলে AGP একটি HTML পরীক্ষার প্রতিবেদন তৈরি করে।
- রিপোর্টের অবস্থান :
{module}/build/reports/tests/{taskName}/index.html(উদাহরণস্বরূপ,app/build/reports/tests/testScreenshotTestDefaultDemoDebugTestSuite/index.html)
হালনাগাদ প্রতিবেদনে অন্তর্ভুক্ত রয়েছে:
- হেডার মেটাডেটা কার্ড : টেস্টের নাম, প্রিভিউ মেথড, ভ্যারিয়েন্ট, স্যুট এবং স্ট্যাটাস ব্যাজ প্রদর্শন করে।
- ত্রুটির শ্রেণীকরণ :
Reference Image Missing,Image Size Mismatch, অথবাPixel Mismatchঅনুলিপিযোগ্য স্ট্যাক ট্রেস সহ স্পষ্টভাবে চিহ্নিত করে। - ডাইনামিক ভিজ্যুয়াল ডিফারেন্স : সূক্ষ্ম পরিবর্তনগুলোকে কম তীব্রতায় এবং বড় পরিবর্তনগুলোকে উচ্চ-কন্ট্রাস্টে তুলে ধরে, যাতে একটির ভেতরে আরেকটি থাকা উপাদান চাপা পড়ে না যায়।
পুরোনো স্বতন্ত্র প্লাগইন থেকে মাইগ্রেট করুন
পুরোনো স্বতন্ত্র স্ক্রিনশট প্লাগইন থেকে AGP টেস্ট স্যুটে স্থানান্তরিত হতে, আপনার Gradle কনফিগারেশন এবং টাস্ক কমান্ড আপডেট করুন।
বিল্ড কনফিগারেশন ডিএসএল তুলনা
লিগ্যাসি স্বতন্ত্র প্লাগইন (অপ্রচলিত)
// In build.gradle.kts
plugins {
alias(libs.plugins.screenshot)
}
dependencies {
screenshotTestImplementation(libs.androidx.compose.ui.tooling)
screenshotTestImplementation("com.android.tools.screenshot:screenshot-validation-api:0.0.1-alpha16")
}
এজিপি টেস্ট স্যুট (প্রস্তাবিত)
// In build.gradle.kts
android {
testOptions {
screenshotTests.create("screenshotTest") {
engineVersion = "0.0.1-alpha16"
targetVariants.add("demoDebug")
dependencies {
implementation(libs.androidx.compose.ui.tooling)
implementation("com.android.tools.screenshot:screenshot-validation-api:0.0.1-alpha16")
}
}
}
}
কাজ এবং পথের ম্যাপিং
| ধারণা | লিগ্যাসি সেটআপ (অপ্রচলিত) | এজিপি টেস্ট স্যুট (প্রস্তাবিত) |
|---|---|---|
| টাস্ক আপডেট করুন | ./gradlew updateDebugScreenshotTest | ./gradlew update{SuiteName}{Target}{Variant}TestSuite |
| পরীক্ষার কাজ | ./gradlew validateDebugScreenshotTest | ./gradlew test{SuiteName}{Target}{Variant}TestSuite |
| রেফারেন্স পথ | src/screenshotTestDebug/reference | src/{suiteName}{Target}{Variant}/reference |
| রিপোর্টের পথ | build/reports/screenshotTest/debug/ | build/reports/tests/{taskName}/ |