ဖော်ပြပါကိရိယာ (Open Source) / ကရိန်း (Crate)

browser-tester (အင်တာနက်ဘရောက်ဆာကို စစ်ဆေးနိုင်သော ကိရိယာ)

"browser-tester" ဟာ Rust programming language ကို အသုံးပြု၍ တီထွင်ထားသော၊ အမှန်တကယ့် browser ကို မဖွင့်ဘဲ DOM (Document Object Model) နဲ့ event များ၏ လုပ်ဆောင်ချက်များကို စစ်ဆေးနိုင်သည့် စနစ်တစ်ခုဖြစ်သည်။ ဒီစနစ်ဟာ တိကျတဲ့ အဖြေများကို ထွက်ပေးနိုင်ပါတယ်။

ကြက်တက် (သို့မဟုတ်) သံတက်။ အကဲဖြတ်နိုင်သော အချိန်အပိုင်း (deterministic runtime) DOM (Document Object Model) စစ်ဆေးခြင်း။

ဤဒါတာဖန်အုပ်သည် ဘာတွေအတွက် ကောင်းလဲ။

browser-tester သည် အပြည့်အဝ browser အခြေခံအမျိုးအစားအလိုက် သဟူညီမှု (compatibility) ကို စစ်ဆေးခြင်းမဟုတ်ဘဲ၊ form နှင့် UI တို့၏ တည်တံ့ခိုင်မာသော (predictable) အပြုအမူများကို စစ်ဆေးသည့်အပေါ် အာ Schwerpunkt ပေးထားသည်။

"Rust" လမ်းကြောင်းသာပါသော စနစ် (သို့မဟုတ်) ပရိုဂရမ်။

၎င်းသည် Rust process တစ်ခုအတွင်းသာ အလုပ်လုပ်ပါသည်။ အခြား browser၊ WebDriver သို့မဟုတ် Node.js တို့နှင့် ဆက်စပ်မှု မရှိပါ။

အတည်ပြုနိုင်သော အကောင်အထည်ဖော်ခြင်း (သို့မဟုတ်) အကောင်အထည်ဖော်ပုံ။

ဒီထုတ်လုပ်မှုသည် တီထွင်မှုအဆင့်တွင်ပင် တီထွင်ချက်များကို ထပ်တူညီစွာ တီထွင်နိုင်ရန်အတွက် အထူးဒီဇိုင်းပြုလုပ်ထားခြင်းဖြစ်ပြီး၊ အချက်များမှာ အောက်ပါတို့ပါဝင်သည်။ (၁) အမှားကိန်းဂဏန်းများ ထည့်သွင်းပေးနိုင်သော အကဲဖြတ်ချက် နာရီ (fake clock)၊ (၂) တိကျသော ရန်ကုန်စမ်းသပ်မှုအတွက် အခြေခံအချက် (deterministic random seed)၊ (၃) အချိန်ကို ထိန်းညှိနိုင်သော အချက်အလက်များ (explicit timer control APIs)။

DOM (Document Object Model) နှင့် Event အချက်စစ်ခြင်း (Testing)။

အသုံးပြုသူက တန်းဖတ်စက် (browser) ကဲ့သို့ လုပ်ဆောင်နိုင်သော အချက်အလက်များကို ထောက်ပံ့ပေးသည်။ ၎င်းတို့မှာ အစိတ်အပိုင်းများကို ရွေးချယ်ခြင်း၊ စက္ရစ် (script) ကို တန်းဖတ်စက်အတွင်းမှာပင် အကောင်အထည်ဖော်ခြင်း၊ အဖြစ်အပျက်များကို အဆက်မပြတ် ထိန်းသိမ်းခြင်း၊ နှင့် ဒေါကူမင့် အဖွဲ့အစည်း (DOM) ကို အဆင့်ဆင့် ပြောင်းလဲခြင်းတို့ဖြစ်သည်။

အလွန်လျင်မြန်သော ဒေသဆိုင်ရာ အချက်အလက်များ ပြန်လည်ပေးပို့ခြင်း။

ပုံစံအခြေခံ UI စစ်ဆေးမှုများအတွက် လျင်မြန်သော ප්‍රතිလွတ်ပေးမှု စက်முறையை အသုံးပြုထားပြီး၊ အမှားဖြစ်ပေါ်သည့်အခါတွင် အကြောင်းအရာများသည် အထောက်အပံ့များ (selectors) နှင့် စစ်ဆေးရန် သတ်မှတ်ထားသည့်/အမှန်တကယ်ရရှိသည့် တန်ဖိုးများပေါ်တွင်သာ အာရုံစိုက်ထားသည်။

အစပြုနိုင်ရန် (သို့မဟုတ်) လျင်မြန်စွာ စတင်နိုင်ရန်အတွက် (လမ်းညွှန်ချက်များ)

HTML ကိုအခြေခံထားသော စစ်ဆေးရေးအထောက်အပံ့ (harness) ကို တည်ဆောက်ပါ။ အပြန်အလှန် ဆက်သွယ်မှုများကို စမ်းသပ်ပြီး DOM (Document Object Model) အခြေအနေများကို စစ်ဆေးပါ။ ပထမဦးစွာ အသေးစား စစ်ဆေးရေးအထောက်အပံ့တစ်ခုကို ဖန်တီးပြီးနောက်၊ အချိန်ထိန်း (timer) နှင့် အစစ်ဆေးရေးအတွက် အသုံးပြုနိုင်သော API များကို ထည့်သွင်း၍ တိုးချဲ့နိုင်သည်။

တပ်ဆင်ပါကွယ်။

cargo မှာ browser_tester ကို ထည့်သွင်းပါကွယ်။

အခြေခံအпримерတစ်ခု။

အဓိက API အပိုင်း (သို့) အဓိက API ပုံဆောင်မှုများ။

"Harness Actions + Assertions" ဟူသော စကားစုကို ဘာသာပြန်ဆိုလျှင် "အကောင်အထည်ဖော်မှုများနှင့် အခိုင်အမာပြောဆိုမှုများကို ပေါင်းစပ်အသုံးချခြင်း" ဟု ဆိုနိုင်သည်။

အဓိက DOM စစ်ဆေးမှု လုပ်ဆောင်နိုင်စွမ်းများမှာ Harness::from_html၊ type_text၊ set_checked၊ click၊ submit တို့ဖြစ်ပြီး၊ အကြောင်းအရာ/အသားပေးစာ/ဂဏန်း/စစ်ဆေးထားသည့်အခြေအနေ/ရှိရှိနေခြင်း စသည့်တို့ကို စစ်ဆေးနိုင်မည့် အထောက်အပံ့များလည်း ပါဝင်ပါသည်။

သတ်မှတ်ထားသော အချိန်ထိန်းများ (Deterministic Timers)

အsynchronous လုပ်ဆောင်မှုများကို အကောင်အလှည့်အပြောင်းမရှိသော နားလည်နိုင်သော နည်းလမ်းဖြင့် ထိန်းညှိနိုင်ရန်၊ "fake clock" ကို အသုံးပြုနိုင်သည်။ `advance_time`၊ `advance_time_to`၊ `flush` နှင့် timer inspection APIs တို့ကို အသုံးပြု၍ အချိန်ကို တိကျသော အတိုင်းအတာဖြင့် တိုးပေးနိုင်သည်။

အ встроен (built-in) မဟုတ်သော အချက်အလက်များ (mocks) ပါဝင်သည်။

"set_fetch_mock"၊ "enqueue_confirm_response" နှင့် "enqueue_prompt_response" တို့ကို အသုံးပြု၍ fetch လုပ်ယူရသော အချက်အလက်များနှင့် dialogue မှန်ကန်မှုများကို ထည့်သွင်းပေးခြင်းဖြင့်၊ စစ်ဆေးမှုများကို အခြားအစိတ်အပိုင်းများမှ ကင်းအောင် ထိန်းသိမ်းထားနိုင်ပါသည်။

တံဆိပ်နှင့် အချက်အလက် စစ်ဆေးမှု (သို့မဟုတ်) အချက်အလက် စုဆောင်းခြင်းနှင့် အချက်အလက် စစ်ဆေးခြင်း။

စမ်းသပ်မှုတစ်ခု မအောင်မြင်ပါက၊ အကြောင်းအရာများ (trace logs) ကိုဖွင့်ပြီး အဖြစ်အပျက်များနှင့် အချိန်ဆိုင်ရာ အချက်အလက်များကို စစ်ဆေးနိုင်ရန် ထုတ်ယူပါ။ ၎င်းသည် အဖြစ်အပျက်များ၏ အစဉ်အဆက်နှင့် အခြေအနေဆိုင်ရာ လုပ်ဆောင်မှုများကို စစ်ဆေးရာတွင် အထောက်အကူအရှိဆုံးဖြစ်သည်။

ပြောင်းလွယ်ပြင်ဆင်နိုင်မှုဆိုင်ရာမူဝါဒ (သို့မဟုတ်) အသုံးပြုချိန်ဆိုင်ရာမူဝါဒ။

  • "eval" အမိန့်ကို တုံတောင်းအကြံပြုထားခြင်းသည် လုံခြုံရေးနှင့် တိကျသော အချက်များ ထိန်းသိမ်းထားနိုင်ရန်အတွက် ဖြစ်သည်။
  • ဤအသုံးပြုချိန်သည် လက်တွေ့ စမ်းသပ်ချက်များကို အဓိကထား၍ တည်ဆောက်ထားခြင်းဖြစ်ပြီး၊ အမှန်တကယ် ဘရောက်ဆာများနှင့် ၁၀၀% ကိုက်ညီမှုမရှိနိုင်ပါ။
  • အပြင်ဘက်ကနေတ့်ဝက် (network) ဆက်သွယ်မှုများကို ထည့်သွင်းစဉ်းစားခြင်းမဟုတ်ပါ; စစ်ဆေးမှုများအတွက် အစားထိုးအချက်အလက်များကို (mock data) အသုံးပြုပါ။

သင်၏ စမ်းသပ်မှုအစုအတွက် အသေးစိတ်အချက်အလက်များပါ၀င်သော ဘราวဇာ API အပိုများလိုအပ်ပါက၊ အကြောင်းအရာနှင့် အဆင့်အတန်းများကို ဆွေးနွေးရန်အတွက် အရေးကြီးဆုံးအချက်များသာပါသော အကြောင်းအချက်တစ်ခုကို တင်သွင်းပါ။