limit_cli/tools/browser/handlers/
wait.rs1use super::super::args::ArgsExt;
2use super::super::client::BrowserClient;
3use super::super::client_ext::WaitingExt;
4use super::super::response::ok_msg;
5use limit_agent::error::AgentError;
6use serde_json::Value;
7
8pub async fn wait(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
9 let condition = args.get_str("wait_for", "wait")?;
10 client.wait_for(condition).await?;
11 Ok(ok_msg(format!("Wait condition met: {}", condition)))
12}
13
14pub async fn wait_for_text(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
15 let text = args.get_str("text", "wait_for_text")?;
16 client.wait_for_text(text).await?;
17 Ok(ok_msg(format!("Text found: {}", text)))
18}
19
20pub async fn wait_for_url(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
21 let pattern = args.get_str("pattern", "wait_for_url")?;
22 client.wait_for_url(pattern).await?;
23 Ok(ok_msg(format!("URL pattern matched: {}", pattern)))
24}
25
26pub async fn wait_for_load(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
27 let state = args.get_str("state", "wait_for_load")?;
28 client.wait_for_load(state).await?;
29 Ok(ok_msg(format!("Load state reached: {}", state)))
30}
31
32pub async fn wait_for_download(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
33 let path = args.get_opt_str("path");
34 let download_path = client.wait_for_download(path).await?;
35 Ok(serde_json::json!({
36 "success": true,
37 "path": download_path,
38 "message": "Download completed"
39 }))
40}
41
42pub async fn wait_for_fn(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
43 let js = args.get_str("js", "wait_for_fn")?;
44 client.wait_for_fn(js).await?;
45 Ok(ok_msg("JavaScript condition met"))
46}
47
48pub async fn wait_for_state(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
49 let selector = args.get_str("selector", "wait_for_state")?;
50 let state = args.get_str("state", "wait_for_state")?;
51 client.wait_for_state(selector, state).await?;
52 Ok(ok_msg(format!(
53 "Element {} reached state: {}",
54 selector, state
55 )))
56}