ওপেন সোর্স / ক্রেট।

browser-tester

"ব্রাউজার-টেস্টার" হলো একটি বিশেষ প্রোগ্রাম যা ব্রাউজারের মতো কাজ করে এবং যা সম্পূর্ণরূপে "রস্ট" প্রোগ্রামিং ভাষায় তৈরি। এটি কোনো আসল ব্রাউজার চালু না করেই, ওয়েব পেজের গঠন (DOM) এবং বিভিন্ন ঘটনার (ইভেন্ট) কার্যকারিতা পরীক্ষা করে।

মরিচা। নির্ধারিত রানটাইম। ডোম টেস্টিং।

এই প্যাকেজটি কী কাজে লাগে।

ব্রাউজার-টেস্টার মূলত ফর্ম এবং ইউজার ইন্টারফেসের আচরণ পরীক্ষার উপর জোর দেয়, সম্পূর্ণ ব্রাউজার রেন্ডারিংয়ের সামঞ্জস্যের উপর নয়।

শুধুমাত্র রাস্ট প্রোগ্রাম চালানোর জন্য প্রয়োজনীয় রানটাইম।

এটি একটিমাত্র রাস্ট (Rust) প্রক্রিয়ার মধ্যে কাজ করে। এর জন্য কোনো বাহ্যিক ব্রাউজার, ওয়েবড্রাইভার বা নোড.জেএস (Node.js)-এর প্রয়োজন নেই।

নির্ধারিতভাবে সম্পন্ন হওয়া।

এটি এমনভাবে তৈরি করা হয়েছে যাতে এটি বারবার পরীক্ষার জন্য ব্যবহার করা যায়: এর মধ্যে রয়েছে একটি কৃত্রিম ঘড়ি, একটি নির্দিষ্ট রেন্ডম বীজ (random seed), এবং টাইমার নিয়ন্ত্রণের জন্য সুস্পষ্ট অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (API)।

ডোম (DOM) এবং ইভেন্ট টেস্টিং।

এটি ব্যবহারিক ব্রাউজার-এর মতো কার্যকারিতা সমর্থন করে: যেমন - উপাদান নির্বাচন, ইনলাইন স্ক্রিপ্ট চালানো, ইভেন্ট প্রোপাগেশন এবং ডিওএম (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(())
} 

প্রধান অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (এপিআই)।

"হার্নেস অ্যাকশনস + অ্যাসার্শনস" (Harness Actions + Assertions) - এর কোনো সরাসরি এবং উপযুক্ত বাংলা অনুবাদ দেওয়া কঠিন। এর অর্থ এবং প্রেক্ষাপট না জেনে, এর কাছাকাছি কিছু অনুবাদ হতে পারে: * "কার্যকারিতা এবং দৃঢ়তার সমন্বয়।" * "কর্ম এবং আত্মবিশ্বাসের মিশ্রণ।" * "কার্যকর পদক্ষেপ এবং আত্মবিশ্বাসী অভিব্যক্তি।" * "কর্মক্ষমতা এবং আত্ম-প্রতিষ্ঠার কৌশল।" তবে, সঠিক অনুবাদ পরিস্থিতির উপর নির্ভর করবে।

মূল ডোম (DOM) পরীক্ষার কার্যক্রম: `Harness::from_html`, `type_text`, `set_checked`, `click`, `submit`, এবং টেক্সট/মান/নির্বাচিত/অস্তিত্ব সম্পর্কিত যাচাইকরণ সহায়ক ফাংশন।

নির্ধারিত সময় নির্ধারণকারী।

অ্যাসিঙ্ক্রোনাস আচরণকে একটি কৃত্রিম ঘড়ির মাধ্যমে নিয়ন্ত্রণ করুন। `advance_time`, `advance_time_to`, `flush` এবং টাইমার পরিদর্শনের জন্য উপলব্ধ এপিআইগুলি ব্যবহার করে সময়কে সুনির্দিষ্টভাবে এগিয়ে নিয়ে যান।

অন্তর্নির্মিত মক (Mock) বৈশিষ্ট্য।

পরীক্ষাগুলোকে একে অপরের থেকে আলাদা রাখার জন্য, `set_fetch_mock`, `enqueue_confirm_response` এবং `enqueue_prompt_response` ফাংশনগুলো ব্যবহার করে পরীক্ষার ডেটা এবং কথোপকথনের ফলাফলগুলোকে নিয়ন্ত্রণ করুন।

ট্রেস এবং ডায়াগনস্টিকস।

পরীক্ষা ব্যর্থ হলে, ট্রেস লগ চালু করুন এবং ইভেন্ট/টাইমারের ক্রম বের করুন। এটি ইভেন্টের ক্রম এবং ডিফল্ট অ্যাকশনের আচরণ ডিবাগ করার জন্য উপযোগী।

কার্যকর সময়কালের নীতি।

  • "eval" ফাংশনটি ইচ্ছাকৃতভাবে সমর্থন করা হয় না, কারণ এর মাধ্যমে নিরাপত্তা এবং নির্ভরযোগ্যতা বজায় রাখা প্রয়োজন।
  • এই রানটাইমটি বাস্তব পরীক্ষার পরিস্থিতিগুলোর জন্য তৈরি করা হয়েছে, এটি কোনো ব্রাউজারের সাথে সম্পূর্ণভাবে সামঞ্জস্যপূর্ণ নাও হতে পারে।
  • বাহ্যিক নেটওয়ার্কের ইনপুট/আউটপুট এই প্রকল্পের আওতার বাইরে; পরীক্ষার জন্য ফেচ মক ব্যবহার করুন।

যদি আপনার পরীক্ষার জন্য অতিরিক্ত ব্রাউজার এপিআই-এর প্রয়োজন হয়, তাহলে একটি সমস্যা (ইস্যু) তৈরি করুন এবং এর সাথে একটি সংক্ষিপ্ত উদাহরণ দিন। এটি আলোচনার জন্য গুরুত্বপূর্ণ, যাতে আমরা সুযোগ এবং অগ্রাধিকার নির্ধারণ করতে পারি।