tauri_plugin_webdriver/
lib.rs1use tauri::{
2 plugin::{Builder, TauriPlugin},
3 Manager, Runtime,
4};
5
6#[cfg(desktop)]
7mod desktop;
8#[cfg(mobile)]
9mod mobile;
10
11mod error;
12mod platform;
13mod server;
14mod webdriver;
15
16pub use error::{Error, Result};
17
18pub const DEFAULT_PORT: u16 = 4445;
20
21pub const PORT_ENV_VAR: &str = "TAURI_WEBDRIVER_PORT";
23
24#[must_use]
30pub fn init<R: Runtime>() -> TauriPlugin<R> {
31 let port = std::env::var(PORT_ENV_VAR)
32 .ok()
33 .and_then(|s| s.parse::<u16>().ok())
34 .unwrap_or(DEFAULT_PORT);
35
36 init_with_port(port)
37}
38
39#[must_use]
43pub fn init_with_port<R: Runtime>(port: u16) -> TauriPlugin<R> {
44 Builder::new("webdriver")
45 .setup(move |app, api| {
46 #[cfg(mobile)]
47 let webdriver = mobile::init(app, api)?;
48 #[cfg(desktop)]
49 let webdriver = desktop::init(app, api);
50 app.manage(webdriver);
51
52 #[cfg(target_os = "windows")]
54 app.manage(platform::AsyncScriptState::default());
55
56 app.manage(platform::AlertStateManager::default());
58
59 let app_handle = app.app_handle().clone();
61 server::start(app_handle, port);
62 tracing::info!("WebDriver plugin initialized on port {port}");
63
64 Ok(())
65 })
66 .on_webview_ready(|webview| {
67 platform::register_webview_handlers(&webview);
68 })
69 .build()
70}