ਓਪਨ ਸੋਰਸ / ਕ੍ਰੇਟ

browser-tester

browser-tester ਇੱਕ ਨਿਰਧਾਰਿਤ, ਬ੍ਰਾਊਜ਼ਰ-ਨੁਮਾ test runtime ਹੈ ਜੋ pure Rust ਵਿੱਚ ਲਾਗੂ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਅਸਲੀ browser ਚਾਲੂ ਕੀਤੇ ਬਿਨਾਂ DOM ਅਤੇ event behavior ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ।

Rust ਨਿਰਧਾਰਿਤ ਰਨਟਾਈਮ DOM ਟੈਸਟਿੰਗ

ਇਹ crate ਕਿਸ ਲਈ ਚੰਗਾ ਹੈ

browser-tester ਪੂਰੇ browser rendering compatibility ਦੀ ਬਜਾਏ ਭਰੋਸੇਯੋਗ form/UI behavior tests 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਦਾ ਹੈ।

ਕੇਵਲ Rust runtime

ਇੱਕੋ Rust process ਦੇ ਅੰਦਰ ਚੱਲਦਾ ਹੈ। ਬਾਹਰੀ browser, WebDriver ਜਾਂ Node.js 'ਤੇ ਕੋਈ ਨਿਰਭਰਤਾ ਨਹੀਂ।

ਨਿਰਧਾਰਿਤ ਚਲਾਉਣ

ਡਿਜ਼ਾਇਨ ਅਨੁਸਾਰ ਦੁਹਰਾਏ ਜਾ ਸਕਣ ਵਾਲੇ ਟੈਸਟਾਂ ਲਈ ਬਣਾਇਆ ਗਿਆ: ਨਕਲੀ ਘੜੀ, ਨਿਰਧਾਰਿਤ random seed, ਅਤੇ timer control ਲਈ ਸਪਸ਼ਟ APIs.

DOM + event ਟੈਸਟਿੰਗ

ਵਿਹਾਰਕ ਬ੍ਰਾਊਜ਼ਰ-ਨੁਮਾ flows ਨੂੰ ਸਹਾਰਾ ਦਿੰਦਾ ਹੈ: selectors, inline script ਚਲਾਉਣਾ, event propagation, ਅਤੇ DOM updates.

ਤੇਜ਼ ਸਥਾਨਕ ਫੀਡਬੈਕ

Form-ਕੇਂਦਰਿਤ UI ਟੈਸਟਾਂ ਲਈ ਤੇਜ਼ ਸਥਾਨਕ ਫੀਡਬੈਕ ਚੱਕਰ, ਅਤੇ ਗਲਤੀ output ਨੂੰ selectors ਅਤੇ expected/actual values 'ਤੇ ਕੇਂਦਰਿਤ ਰੱਖਦਾ ਹੈ।

ਤੁਰੰਤ ਸ਼ੁਰੂਆਤ

HTML ਤੋਂ harness ਬਣਾਓ, interactions ਚਲਾਓ, ਅਤੇ DOM ਨਤੀਜਿਆਂ 'ਤੇ assert ਕਰੋ। ਇੱਕ ਛੋਟੇ fixture ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ ਅਤੇ timer/mock APIs ਨਾਲ ਵਿਸਥਾਰ ਕਰੋ।

ਇੰਸਟਾਲ ਕਰੋ

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 ਕਾਰਵਾਈਆਂ + ਪੁਸ਼ਟੀਕਰਨ

ਮੁੱਖ DOM ਟੈਸਟ ਓਪਰੇਸ਼ਨ: Harness::from_html, type_text, set_checked, click, submit, ਅਤੇ text/value/checked/existence ਲਈ assertion helpers.

ਨਿਰਧਾਰਿਤ ਟਾਈਮਰ

ਨਕਲੀ ਘੜੀ ਨਾਲ asynchronous ਵਿਹਾਰ ਨੂੰ ਕਾਬੂ ਕਰੋ। advance_time, advance_time_to, flush ਅਤੇ timer inspection APIs ਨਾਲ ਸਮੇਂ ਨੂੰ deterministic ਢੰਗ ਨਾਲ ਅੱਗੇ ਵਧਾਓ।

ਅੰਦਰੂਨੀ mocks

set_fetch_mock, enqueue_confirm_response ਅਤੇ enqueue_prompt_response ਨਾਲ fetch responses ਅਤੇ dialog outcomes inject ਕਰੋ ਤਾਂ ਜੋ ਟੈਸਟ ਇਕਾਂਤ ਰਹਿਣ।

ਟਰੇਸ ਅਤੇ ਨਿਦਾਨ

ਟੈਸਟ ਫੇਲ੍ਹ ਹੋਣ 'ਤੇ trace logs ਚਾਲੂ ਕਰੋ ਅਤੇ event/timer flow ਨਿਕਾਲੋ। Event order ਅਤੇ default action behavior ਨੂੰ debug ਕਰਨ ਲਈ ਲਾਭਕਾਰੀ।

ਰਨਟਾਈਮ ਨੀਤੀ

  • ਸੁਰੱਖਿਆ ਅਤੇ deterministic behavior ਕਾਇਮ ਰੱਖਣ ਲਈ eval ਨੂੰ ਜਾਣਬੁੱਝ ਕੇ ਸਮਰਥਨ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ।
  • ਇਹ runtime ਵਿਹਾਰਕ test scenarios ਲਈ ਹੈ, 100% real-browser compatibility ਲਈ ਨਹੀਂ।
  • ਬਾਹਰੀ network I/O ਇਸ ਦੇ scope ਤੋਂ ਬਾਹਰ ਹੈ; test coverage ਲਈ fetch mocks ਵਰਤੋ।

ਜੇ ਤੁਹਾਨੂੰ ਆਪਣੇ test suite ਲਈ ਵਾਧੂ browser APIs ਦੀ ਲੋੜ ਹੈ, ਤਾਂ scope ਅਤੇ priority 'ਤੇ ਚਰਚਾ ਲਈ ਇੱਕ minimal fixture ਨਾਲ issue ਖੋਲ੍ਹੋ।