use {thirtyfour::WebDriver, tokio::process::Command}; pub fn geckodriver(port: u16) -> Result { Command::new("geckodriver") .arg(format!("--port={port}")) .stdout(std::process::Stdio::piped()) .stderr(std::process::Stdio::piped()) .spawn() } pub async fn webdriver( port: u16, ) -> Result { let mut caps = thirtyfour::DesiredCapabilities::firefox(); caps.set_headless().expect("failed to set headless"); let driver = WebDriver::new(&format!("http://localhost:{port}"), caps) .await .expect("failed to connect to webdriver"); driver .goto("https://due.moe/schedule") .await .expect("failed to navigate to https://due.moe/schedule"); Ok(driver) }