76 lines
3.1 KiB
Rust
76 lines
3.1 KiB
Rust
use browser_use::{BrowserSession, LaunchOptions,
|
|
tools::{local_storage::{ClearLocalStorageParams, GetLocalStorageParams, RemoveLocalStorageParams, SetLocalStorageParams},
|
|
Tool, ToolContext, local_storage::{ClearLocalStorageTool, GetLocalStorageTool, RemoveLocalStorageTool, SetLocalStorageTool}}};
|
|
use log::info;
|
|
|
|
#[test]
|
|
#[ignore]
|
|
fn test_local_storage_workflow() {
|
|
let session = BrowserSession::launch(LaunchOptions::new().headless(true)).expect("Failed to launch browser");
|
|
|
|
// Navigate to a domain to have a context for localStorage
|
|
session.navigate("https://example.com").expect("Failed to navigate");
|
|
|
|
let mut context = ToolContext::new(&session);
|
|
let get_tool = GetLocalStorageTool::default();
|
|
let set_tool = SetLocalStorageTool::default();
|
|
let remove_tool = RemoveLocalStorageTool::default();
|
|
let clear_tool = ClearLocalStorageTool::default();
|
|
|
|
// 1. Set a value
|
|
let set_result = set_tool
|
|
.execute_typed(SetLocalStorageParams { key: "test_key".to_string(), value: "test_value".to_string() }, &mut context)
|
|
.expect("Failed to set localStorage");
|
|
assert!(set_result.success);
|
|
|
|
// 2. Get the value
|
|
let get_result = get_tool
|
|
.execute_typed(GetLocalStorageParams { key: Some("test_key".to_string()) }, &mut context)
|
|
.expect("Failed to get localStorage");
|
|
assert!(get_result.success);
|
|
assert_eq!(get_result.data.unwrap().as_str(), Some("test_value"));
|
|
|
|
// 3. Set another value
|
|
set_tool
|
|
.execute_typed(SetLocalStorageParams { key: "key2".to_string(), value: "value2".to_string() }, &mut context)
|
|
.expect("Failed to set localStorage key2");
|
|
|
|
// 4. Get all values
|
|
let get_all_result = get_tool
|
|
.execute_typed(GetLocalStorageParams { key: None }, &mut context)
|
|
.expect("Failed to get all localStorage");
|
|
let all_data = get_all_result.data.unwrap();
|
|
println!("All data: {:?}", all_data);
|
|
assert_eq!(all_data["test_key"].as_str(), Some("test_value"));
|
|
assert_eq!(all_data["key2"].as_str(), Some("value2"));
|
|
|
|
// 5. Remove one value
|
|
let remove_result = remove_tool
|
|
.execute_typed(RemoveLocalStorageParams { key: "test_key".to_string() }, &mut context)
|
|
.expect("Failed to remove localStorage item");
|
|
assert!(remove_result.success);
|
|
|
|
// Verify removal
|
|
let get_removed = get_tool
|
|
.execute_typed(GetLocalStorageParams { key: Some("test_key".to_string()) }, &mut context)
|
|
.expect("Failed to get localStorage");
|
|
assert!(get_removed.data.unwrap().is_null());
|
|
|
|
// 6. Clear all
|
|
let clear_result = clear_tool
|
|
.execute_typed(ClearLocalStorageParams, &mut context)
|
|
.expect("Failed to clear localStorage");
|
|
assert!(clear_result.success);
|
|
|
|
// Verify clear
|
|
let get_all_cleared = get_tool
|
|
.execute_typed(GetLocalStorageParams { key: None }, &mut context)
|
|
.expect("Failed to get all localStorage after clear");
|
|
|
|
// The implementation returns an empty object {}
|
|
let cleared_obj = get_all_cleared.data.unwrap();
|
|
assert!(cleared_obj.as_object().unwrap().is_empty());
|
|
|
|
info!("LocalStorage workflow passed!");
|
|
}
|