use std::time::Duration;
use zendriver::Browser;
const FORM_HTML: &str = "data:text/html,\
<!doctype html><html><body>\
<form id='f' onsubmit=\"event.preventDefault();fetch('https://example.com/login',{method:'POST',mode:'no-cors'});\">\
<input id='user' name='user' value='rin' />\
<input id='pass' name='pass' type='password' value='hunter2' />\
<button id='go' type='submit'>Log in</button>\
</form></body></html>";
#[tokio::main]
#[allow(clippy::result_large_err)] async fn main() -> zendriver::Result<()> {
tracing_subscriber::fmt::init();
let browser = Browser::builder().headless(true).launch().await?;
let tab = browser.main_tab();
tab.goto(FORM_HTML).await?;
tab.wait_for_load().await?;
let expectation = tab
.expect_response("*/login")
.timeout(Duration::from_secs(10));
let go = tab.find().css("#go").one().await?;
go.click().await?;
let matched = expectation.await?;
println!(
"matched: url={} status={} status_text={:?}",
matched.url, matched.status, matched.status_text
);
assert!(
matched.url.contains("/login"),
"matched url should contain /login; got {}",
matched.url
);
browser.close().await?;
Ok(())
}