শুধুমাত্র রাস্ট প্রোগ্রাম চালানোর জন্য প্রয়োজনীয় রানটাইম।
এটি একটিমাত্র রাস্ট (Rust) প্রক্রিয়ার মধ্যে কাজ করে। এর জন্য কোনো বাহ্যিক ব্রাউজার, ওয়েবড্রাইভার বা নোড.জেএস (Node.js)-এর প্রয়োজন নেই।
ওপেন সোর্স / ক্রেট।
"ব্রাউজার-টেস্টার" হলো একটি বিশেষ প্রোগ্রাম যা ব্রাউজারের মতো কাজ করে এবং যা সম্পূর্ণরূপে "রস্ট" প্রোগ্রামিং ভাষায় তৈরি। এটি কোনো আসল ব্রাউজার চালু না করেই, ওয়েব পেজের গঠন (DOM) এবং বিভিন্ন ঘটনার (ইভেন্ট) কার্যকারিতা পরীক্ষা করে।
ব্রাউজার-টেস্টার মূলত ফর্ম এবং ইউজার ইন্টারফেসের আচরণ পরীক্ষার উপর জোর দেয়, সম্পূর্ণ ব্রাউজার রেন্ডারিংয়ের সামঞ্জস্যের উপর নয়।
এটি একটিমাত্র রাস্ট (Rust) প্রক্রিয়ার মধ্যে কাজ করে। এর জন্য কোনো বাহ্যিক ব্রাউজার, ওয়েবড্রাইভার বা নোড.জেএস (Node.js)-এর প্রয়োজন নেই।
এটি এমনভাবে তৈরি করা হয়েছে যাতে এটি বারবার পরীক্ষার জন্য ব্যবহার করা যায়: এর মধ্যে রয়েছে একটি কৃত্রিম ঘড়ি, একটি নির্দিষ্ট রেন্ডম বীজ (random seed), এবং টাইমার নিয়ন্ত্রণের জন্য সুস্পষ্ট অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (API)।
এটি ব্যবহারিক ব্রাউজার-এর মতো কার্যকারিতা সমর্থন করে: যেমন - উপাদান নির্বাচন, ইনলাইন স্ক্রিপ্ট চালানো, ইভেন্ট প্রোপাগেশন এবং ডিওএম (DOM) আপডেট।
ফর্ম-ভিত্তিক ইউজার ইন্টারফেস (ইউআই) পরীক্ষার জন্য দ্রুত প্রতিক্রিয়া প্রদান ব্যবস্থা, যেখানে ত্রুটিপূর্ণ ফলাফলগুলো শুধুমাত্র নির্বাচক (সিলেক্টর) এবং প্রত্যাশিত/বাস্তব মানগুলোর উপর দৃষ্টি নিবদ্ধ করে।
এইচটিএমএল ব্যবহার করে একটি টেস্টিং কাঠামো তৈরি করুন, বিভিন্ন কার্যক্রম চালান এবং ডোম (DOM) ফলাফলের যথার্থতা যাচাই করুন। প্রথমে একটি ছোট পরীক্ষার কাঠামো দিয়ে শুরু করুন এবং পরে টাইমার ও মক এপিআই (API) যোগ করে এটিকে বিস্তৃত করুন।
স্থাপন করুন।
cargo add browser_tester
একটি সাধারণ উদাহরণ।
use browser_tester::Harness;
fn main() -> browser_tester::Result<()> {
let html = r#"..."#;
let mut h = Harness::from_html(html)?;
h.type_text("#name", "Alice")?;
h.click("#submit")?;
h.assert_text("#result", "Hello, Alice")?;
Ok(())
}
মূল ডোম (DOM) পরীক্ষার কার্যক্রম: `Harness::from_html`, `type_text`, `set_checked`, `click`, `submit`, এবং টেক্সট/মান/নির্বাচিত/অস্তিত্ব সম্পর্কিত যাচাইকরণ সহায়ক ফাংশন।
অ্যাসিঙ্ক্রোনাস আচরণকে একটি কৃত্রিম ঘড়ির মাধ্যমে নিয়ন্ত্রণ করুন। `advance_time`, `advance_time_to`, `flush` এবং টাইমার পরিদর্শনের জন্য উপলব্ধ এপিআইগুলি ব্যবহার করে সময়কে সুনির্দিষ্টভাবে এগিয়ে নিয়ে যান।
পরীক্ষাগুলোকে একে অপরের থেকে আলাদা রাখার জন্য, `set_fetch_mock`, `enqueue_confirm_response` এবং `enqueue_prompt_response` ফাংশনগুলো ব্যবহার করে পরীক্ষার ডেটা এবং কথোপকথনের ফলাফলগুলোকে নিয়ন্ত্রণ করুন।
পরীক্ষা ব্যর্থ হলে, ট্রেস লগ চালু করুন এবং ইভেন্ট/টাইমারের ক্রম বের করুন। এটি ইভেন্টের ক্রম এবং ডিফল্ট অ্যাকশনের আচরণ ডিবাগ করার জন্য উপযোগী।
যদি আপনার পরীক্ষার জন্য অতিরিক্ত ব্রাউজার এপিআই-এর প্রয়োজন হয়, তাহলে একটি সমস্যা (ইস্যু) তৈরি করুন এবং এর সাথে একটি সংক্ষিপ্ত উদাহরণ দিন। এটি আলোচনার জন্য গুরুত্বপূর্ণ, যাতে আমরা সুযোগ এবং অগ্রাধিকার নির্ধারণ করতে পারি।