Төмөн деңгээлдеги Rust тилине негизделген иштетүү системасы.
Бул программа бир Rust процессинде иштейт. Ал үчүн башка браузер, WebDriver же Node.js программаларынан көз алдында эмес.
Ачык коддуу / контейнер.
"browser-tester" – бул татаалдуулукка эмес, белгилүү натыйжаларга жетишүүгө багытталган, Rust тилинде жазылган, браузерге окшош тест иштетүүчү программа. Ал чыныгы браузерди иштетүүсүз эле, DOM (Document Object Model) жана окуялардын жүрүшүн текшерет.
"Browser-tester" программасы, толук браузердин иштешине көңүл бурабай, формалардагы жана интерфейстеги (UI) элементтердин алдын ала белгиленген иштешине көңүл буруп, тестирлөөгө багытталган.
Бул программа бир Rust процессинде иштейт. Ал үчүн башка браузер, WebDriver же Node.js программаларынан көз алдында эмес.
Бул система кайталануучу сынактарды жүргүзүү үчүн атайын иштелип чыккан: жасалма саат, алдын ала белгиленген случайдуулук параметри жана таймерди башкаруу үчүн ачык API интерфейстери колдонулган.
Практикалык браузердик функционалдык мүмкүнчүлүктөрдү колдойт: тандоо элементтери, скрипттердин иштетилиши, окуялардын таралышы жана DOM структурасынын өзгөрүштери.
Формаларга багытталган интерфейс тестирлеу үчүн ылдам кайра байланышуу системасы колдонулат, ал эми тестирлөөдөгү кемчиликтердин маалыматы түйүндөргө жана күтүлүүчү/чыныгы маанилерге баса белгиленип көрсөтүлөт.
HTML кодун колдонуп сынама түзүп, аракеттерди иштетип, 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` жана таймерлерди текшерүү APIлери аркылуу убакытты алдын ала, белгилүү бир убактагыга коюп, системаны тазалоо мүмкүнчүлүгүн камсыз кылуу.
Тесттердин өзүнчө иштешин камсыз кылуу үчүн, `set_fetch_mock`, `enqueue_confirm_response` жана `enqueue_prompt_response` функцияларын колдонуп, алынган маалыматтарды жана диалогдордун натыйжаларын жасалма маалыматтар менен толтуруңуз.
Тесттик сынак ийгиликсиз болгондо, трассировка журналдарын иштетиңиз жана окуялардын/убакыттык белгилердин тармагын чыгарып алыңыз. Бул, окуялардын тартибин жана алдын ала белгиленген аракеттердин иштешин түздөө үчүн пайдалуу.
Эгерде сиздин тестирлөө программаңызга кошумча браузер APIлары керек болсо, мүмкүнчүлүктөрдүн чөймөсүн жана приоритетттерин талкуу үчүн, минималдуу конфигурация менен бирге маселени көтөрүңүз.