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

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

এই রিলিজে AGP টেস্ট স্যুটের জন্য সাপোর্ট, HTML টেস্ট রিপোর্টের উন্নতি এবং বাগ ফিক্স অন্তর্ভুক্ত করা হয়েছে:

  • টেস্ট স্যুট ইন্টিগ্রেশন : অ্যান্ড্রয়েড গ্রেডল প্লাগইন (AGP) টেস্ট স্যুটের সাথে কম্পোজ প্রিভিউ স্ক্রিনশট টেস্ট চালানোর সুবিধা যোগ করা হয়েছে। স্ক্রিনশট টেস্ট স্যুট কীভাবে কনফিগার এবং রান করতে হয় তা জানতে, “ টেস্ট স্যুটের মাধ্যমে স্ক্রিনশট টেস্টিং” দেখুন।
  • HTML টেস্ট রিপোর্টের উন্নয়ন : একটি হেডার মেটাডেটা কার্ড যোগ করা হয়েছে যেখানে টেস্ট কেসের বিবরণ (নাম, মেথড, প্রিভিউ, ভ্যারিয়েন্ট, স্যুট এবং স্ট্যাটাস ব্যাজ) দেখা যায় এবং একটি এরর সামারি বক্স যোগ করা হয়েছে যেখানে ব্যর্থতাগুলোকে (যেমন রেফারেন্স ইমেজ অনুপস্থিত থাকা বা ডাইমেনশনের অমিল) বিভিন্ন ক্যাটাগরিতে ভাগ করা হয়েছে, সাথে দ্রুত ক্লিপবোর্ডে কপি করার সুবিধাও রয়েছে।
  • ডাইনামিক ভিজ্যুয়াল ডিফস : ভিজ্যুয়াল ডিফস এখন সামান্য পিক্সেল পরিবর্তনের জন্য সূক্ষ্ম হাইলাইট থেকে শুরু করে বড় পার্থক্যের জন্য উচ্চ-কনট্রাস্ট এমফ্যাসিস পর্যন্ত একটি অবিচ্ছিন্ন গ্রেডিয়েন্ট ব্যবহার করে, যা নেস্টেড কম্পোনেন্টের পরিবর্তনগুলিকে আড়াল হওয়া থেকে রক্ষা করে।

এই রিলিজে নিম্নলিখিত বাগ ফিক্সগুলোও অন্তর্ভুক্ত রয়েছে:

সমস্যা বর্ণনা
ইস্যু #513276596 এটা নিশ্চিত করতে সাহায্য করুন যে, লেআউটলিব (Layoutlib) রেন্ডারিং ত্রুটিগুলো যেন নীরবে ব্যর্থ না হয়ে বা ফাঁকা রেফারেন্স ইমেজ তৈরি না করে, বরং স্ক্রিনশট টেস্টগুলো তাৎক্ষণিকভাবে ব্যর্থ করে দেয়।

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

এই রিলিজে নিম্নলিখিত বাগ ফিক্সগুলো অন্তর্ভুক্ত করা হয়েছে:

সমস্যা বর্ণনা
ইস্যু #500417360 Layoutlib ফ্রেমওয়ার্কের আইসোলেটেড ক্লাস লোডারে kotlin-stdlib ডিপেন্ডেন্সি অনুপস্থিত থাকার কারণে Kotlin 2.1+ দিয়ে প্রিভিউ চালানোর সময় যে ইনিশিয়ালাইজেশন ক্র্যাশ ( NoClassDefFoundError ) হতো, তা সমাধান করা হয়েছে।
ইস্যু #৩৮৪১৮৮০৩২ একটি Composable AndroidView ফ্যাক্টরির ভিতরে ViewHolder অবজেক্ট ইনফ্লেট করার সময় হওয়া একটি রেন্ডারিং ক্র্যাশ ঠিক করা হয়েছে।
ইস্যু #351302272 প্রিভিউয়ের মধ্যে ড্রয়েবল রিসোর্স লোড করার ব্যর্থতা সমাধান করা হয়েছে, যেখানে রিসোর্সগুলো সিibling বা ডিপেন্ডেন্ট প্রজেক্ট মডিউলে অবস্থিত ছিল।
ইস্যু #৪৮২৬৬৪৮৯৩ এটা নিশ্চিত করা হয়েছে যে, স্ক্রিনশট টেস্টে এক্সেপশন দেখা দিলে ভ্যালিডেশন টাস্কগুলো যেন পুরোনো স্ক্রিনশট দেখিয়ে ভুলভাবে সফল না হয়ে, যথাযথভাবে ব্যর্থ হয়।
ইস্যু #497675618 JVM কভারেজ এজেন্ট (যেমন JaCoCo) দ্বারা কম্পোজেবল ক্লাসসমূহের ইন্সট্রুমেন্টেশন সমর্থিত।
ইস্যু #498545960 ডিবাগিং আউটপুট আরও স্পষ্ট করার জন্য JUnit কনসোল এরর স্ট্যাক ট্রেস থেকে অভ্যন্তরীণ ফাইলের নাম (যেমন, ImageVerifier.kt ) বাদ দেওয়া হয়েছে।
ইস্যু #৩৮৫৬১৩৮৬৫ পরীক্ষার ফলাফলের XML ফাইল থেকে ছবিগুলোর জন্য অ্যাবসোলিউট পাথের ব্যবহার সরিয়ে রিলেটিভ পাথ ব্যবহার করা হয়েছে।
ইস্যু #513276596 এটি নিশ্চিত করা হয়েছে যে, রেন্ডারিং ব্যর্থতার ক্ষেত্রে স্ক্রিনশট পরীক্ষার কাজগুলো সঠিকভাবে ব্যর্থ হয়, এবং একটি ফাঁকা স্ক্রিনশট দেখিয়ে নীরবে পাস হয়ে যায় না।
ইস্যু #340639802 প্রিভিউ মেথড রেজোলিউশনের সেই দ্বন্দ্বগুলো সমাধান করা হয়েছে, যেখানে মূল সোর্সসেটে থাকা উপযুক্ত পূর্ণ-যোগ্য মেথড নামের সাথে টেস্টগুলো ভুলভাবে মেলানো হচ্ছিল।

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

এই রিলিজে নিম্নলিখিত বাগ সংশোধন এবং কর্মক্ষমতার উন্নতি অন্তর্ভুক্ত রয়েছে:

সমস্যা বর্ণনা
ইস্যু #৪৬৯৮১৯১৫৪ কম্পোজ রেন্ডারারে মেমরি লিকের সমস্যা সমাধান করা হয়েছে।
ইস্যু #470058578 রেফারেন্স ইমেজ আপডেট করার সময় UI ফ্রিজ এবং মেমরি ত্রুটি ঠিক করা হয়েছে।
ইস্যু #422412664 উইন্ডোজ এবং গিটহাব অ্যাকশনস-এ "কমান্ড লাইন অপারেটিং সিস্টেমের সীমা অতিক্রম করেছে" ত্রুটিটি সমাধান করা হয়েছে।
ইস্যু #437223807 একাধিক মডিউল প্রকল্পে রিসোর্স এবং অ্যাসেট রেজোলিউশন সংক্রান্ত সমস্যা সমাধান করা হয়েছে।
ইস্যু #৪৬৪৮৯৯৮০০ version.properties ফাইলে নামকরণের সংঘর্ষের কারণে সৃষ্ট একটি গ্রেডল প্লাগইন দ্বন্দ্ব সমাধান করা হয়েছে।
ইস্যু #৪৮২৪৩৩৮৫৪ kotlin-reflect বা সিরিয়ালাইজেশন ব্যবহার করে কম্পোজেবলগুলোর ইনিশিয়ালাইজেশন ত্রুটি সংশোধন করা হয়েছে।

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

এই রিলিজে থাকছে:

  • JDK 17 বা উচ্চতর সংস্করণের সাথে সামঞ্জস্যপূর্ণ।
  • ত্রুটি সংশোধন এবং অ্যান্ড্রয়েড স্টুডিওর সাথে উন্নত সমন্বয়।

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

এই রিলিজে থাকছে:

  • অ্যান্ড্রয়েড গ্রেডল প্লাগইন (AGP) 9.0-এর সাথে সামঞ্জস্যপূর্ণ।
  • JDK 24 এবং এর পরবর্তী সংস্করণগুলিতে স্ক্রিনশট টেস্ট চালানোর সুবিধা।
  • সর্বোচ্চ হিপ সাইজ কনফিগার করার সুবিধা রয়েছে।
  • রেন্ডারিং-এর ত্রুটি সংশোধন করা হয়েছে এবং পরীক্ষার স্থিতিশীলতা উন্নত করা হয়েছে।
  • নতুন এবং রেফারেন্স ছবি সম্পর্কিত শতাংশ পার্থক্য ও অন্যান্য মেটাডেটা অন্তর্ভুক্ত করার জন্য রিপোর্টিং ব্যবস্থাটি উন্নত করা হয়েছে।

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

এই রিলিজে থাকছে:

  • অ্যান্ড্রয়েড গ্রেডল প্লাগইন (AGP) 8.13-এর সাথে সামঞ্জস্যপূর্ণ।
  • হোস্ট মেশিনের লোকেল নির্বিশেষে দশমিক মান সহ এক্সএমএল ড্রয়েবল পার্স করার সুবিধা যোগ করা হয়েছে।
  • যেসব হোস্ট মেশিনে 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 ফাইলটি আপডেট করুন:

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

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

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