Манбаи кушода / Crate

browser-tester

browser-tester муҳити санҷиши ба браузер монанд ва пешгӯишаванда аст, ки пурра бо Rust амалӣ шудааст. Он бидуни оғоз кардани браузери воқеӣ рафтори DOM ва рӯйдодҳоро месанҷад.

Rust Муҳити детерминистӣ Санҷиши DOM

Ин crate барои чӣ беҳтар аст

browser-tester бештар ба санҷиши рафтори пешгӯишавандаи форма ва UI тамаркуз мекунад, на ба мутобиқати пурраи намоиши браузер.

Муҳити танҳо бо Rust

Дар як раванди ягонаи Rust иҷро мешавад. Ба браузери беруна, WebDriver ё вобастагии Node.js ниёз надорад.

Иҷрои детерминистӣ

Аз оғоз барои санҷишҳои такроршаванда сохта шудааст: соати сохта, тухми тасодуфии пешгӯишаванда ва API-ҳои возеҳи идоракунии таймер.

Санҷиши DOM ва рӯйдодҳо

Ҷараёнҳои амалии ба браузер монандро дастгирӣ мекунад: selector-ҳо, иҷрои inline script, паҳншавии рӯйдодҳо ва навсозии DOM.

Бозхурди зуд дар маҳал

Давраи зудии бозхурд барои санҷишҳои UI-и ба форма нигаронидашуда, дар ҳоле ки баромади хато ба selector-ҳо ва арзишҳои expected/actual тамаркуз мекунад.

Оғози зуд

Аз HTML harness созед, ҳамкориҳоро иҷро кунед ва натиҷаҳои DOM-ро санҷед. Аз fixture-и хурд оғоз кунед ва баъд бо 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 ва assertion-ҳо

Амалиётҳои асосии санҷиши DOM: Harness::from_html, type_text, set_checked, click, submit ва ёрирасонҳои санҷиш барои text/value/checked/existence.

Таймерҳои детерминистӣ

Рафтори асинхрониро бо соати сохтагӣ идора кунед. Вақтро бо advance_time, advance_time_to, flush ва API-ҳои санҷиши таймер ба таври детерминистӣ пеш баред.

Mock-ҳои дарунсохт

Бо set_fetch_mock, enqueue_confirm_response ва enqueue_prompt_response ҷавобҳои fetch ва натиҷаҳои диалогро ворид кунед, то санҷишҳо ҷудо бимонанд.

Трейс ва ташхис

Ҳангоми нокомии санҷиш журналҳои trace-ро фаъол кунед ва ҷараёни рӯйдодҳо ва таймерҳоро бароред. Барои ислоҳи тартиби рӯйдодҳо ва рафтори амали пешфарз муфид аст.

Сиёсати рунтайм

  • eval қасдан дастгирӣ намешавад, то амният ва пешгӯишавандагӣ ҳифз шаванд.
  • Ин муҳит ба сенарияҳои амалии санҷиш нигаронида шудааст, на ба мутобиқати 100%-и браузери воқеӣ.
  • I/O-и шабакаи беруна аз доира берун аст; барои фарогирии санҷиш мокҳои fetch-ро истифода баред.

Агар барои маҷмӯаи санҷишии шумо API-ҳои иловагии браузер лозим бошанд, issue-еро бо fixture-и хурд кушоед, то доира ва авлавият баррасӣ шаванд.