Ачык коддуу / контейнер.

browser-tester

"browser-tester" – бул татаалдуулукка эмес, белгилүү натыйжаларга жетишүүгө багытталган, Rust тилинде жазылган, браузерге окшош тест иштетүүчү программа. Ал чыныгы браузерди иштетүүсүз эле, DOM (Document Object Model) жана окуялардын жүрүшүн текшерет.

Rust Такыр убак. DOM тестирлөөсү.

Бул контейнер эмне үчүн пайдалуу?

"Browser-tester" программасы, толук браузердин иштешине көңүл бурабай, формалардагы жана интерфейстеги (UI) элементтердин алдын ала белгиленген иштешине көңүл буруп, тестирлөөгө багытталган.

Төмөн деңгээлдеги Rust тилине негизделген иштетүү системасы.

Бул программа бир Rust процессинде иштейт. Ал үчүн башка браузер, WebDriver же Node.js программаларынан көз алдында эмес.

Такыр жол менен иштеши.

Бул система кайталануучу сынактарды жүргүзүү үчүн атайын иштелип чыккан: жасалма саат, алдын ала белгиленген случайдуулук параметри жана таймерди башкаруу үчүн ачык API интерфейстери колдонулган.

DOM жана окуяларды сынап текшерүү.

Практикалык браузердик функционалдык мүмкүнчүлүктөрдү колдойт: тандоо элементтери, скрипттердин иштетилиши, окуялардын таралышы жана 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(())
} 

Негизги API интерфейси.

"Harness Actions + Assertions" фразасынын маанисин тактап айтуу кыйын. Аны контекстине жараша түрдүүчө которулушу мүмкүн. Мисалы: * Эгерде бул бир нерсени түздөө же иштетүү тууралуу болсо: "Жакшылоочу чаралар жана билдирүүлөр". * Эгерде бул маселени чечүү тууралуу болсо: "Чыдамкайлыкты жана билдирүүлөрдү колдонуу". * Эгерде бул маалыматты берүү тууралуу болсо: "Күчтүү чаралар жана билдирүүлөр". Так маанисин билүү үчүн, контексти керек.

Негизги 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` функцияларын колдонуп, алынган маалыматтарды жана диалогдордун натыйжаларын жасалма маалыматтар менен толтуруңуз.

Трактовка жана диагностика.

Тесттик сынак ийгиликсиз болгондо, трассировка журналдарын иштетиңиз жана окуялардын/убакыттык белгилердин тармагын чыгарып алыңыз. Бул, окуялардын тартибин жана алдын ала белгиленген аракеттердин иштешин түздөө үчүн пайдалуу.

Иштөө режими боюнча эрежелер.

  • "eval" функциясы максаттуу түрдө колдоого алынбай калды, себеби бул коопсуздукту жана алдын-ала белгиленген иштешипти сактоо үчүн зарыл.
  • Бул программалык камсыздоо практикалык сынак сценарийлери үчүн иштелип чыккан, ал эми 10гр пайыздык реалдуу браузерлер менен толук шайкештикке эмес.
  • Тышкы тармак менен байланышуу бул теманын алкагына киребейт; тестирлөө үчүн жасалма маалыматтарды колдонуңуз.

Эгерде сиздин тестирлөө программаңызга кошумча браузер APIлары керек болсо, мүмкүнчүлүктөрдүн чөймөсүн жана приоритетттерин талкуу үчүн, минималдуу конфигурация менен бирге маселени көтөрүңүз.