Files
openclaw-backups/skills/fast-browser-use/tests/local_storage_integration.rs

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!");
}