diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 5b6c3364..ebdccea1 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -9433,7 +9433,6 @@ dependencies = [ "rustls", "serde", "serde_json", - "socket2", "tokio", "tracing", "tt-contracts", diff --git a/src-tauri/crates/tt-adapter-sync/Cargo.toml b/src-tauri/crates/tt-adapter-sync/Cargo.toml index 26b0360a..ff62c895 100644 --- a/src-tauri/crates/tt-adapter-sync/Cargo.toml +++ b/src-tauri/crates/tt-adapter-sync/Cargo.toml @@ -37,7 +37,6 @@ mdns-sd = "0.21.3" [dev-dependencies] base64 = "0.23" -socket2 = { version = "0.6", features = ["all"] } [target.'cfg(target_os = "macos")'.dev-dependencies] mdns-sd = "0.21.3" diff --git a/src-tauri/crates/tt-adapter-sync/src/sync/lan/server.rs b/src-tauri/crates/tt-adapter-sync/src/sync/lan/server.rs index 95ac770e..4cef82dc 100644 --- a/src-tauri/crates/tt-adapter-sync/src/sync/lan/server.rs +++ b/src-tauri/crates/tt-adapter-sync/src/sync/lan/server.rs @@ -397,7 +397,6 @@ mod tests { use async_trait::async_trait; use base64::Engine; use base64::engine::general_purpose::URL_SAFE_NO_PAD; - use socket2::{Domain, Protocol, Socket, Type}; use tokio::sync::{Mutex, mpsc}; use tt_contracts::lan_discovery::LanDiscoveryAnnouncement; use tt_ports::lan_sync::LanPairingClient; @@ -700,17 +699,12 @@ mod tests { completions: Mutex::new(completions), }); let events = recording_events(); - // Reserve a non-listening port so the stale candidate fails without a timing race. - let unavailable = Socket::new(Domain::IPV4, Type::STREAM, Some(Protocol::TCP)) - .expect("reserve stale address"); - unavailable - .bind(&"127.0.0.1:0".parse::().unwrap().into()) + // The stale candidate must fail at once while keeping its port reserved. + let stale = tokio::net::TcpListener::bind("127.0.0.1:0") + .await .expect("bind stale address"); - let stale_address = unavailable - .local_addr() - .expect("stale address") - .as_socket() - .unwrap(); + let stale_address = stale.local_addr().expect("stale address"); + tokio::spawn(async move { while stale.accept().await.is_ok() {} }); let handle = spawn_lan_sync_server( "127.0.0.1:0".parse().unwrap(), default_user_dir.clone(), diff --git a/tests/browser/runtime.mjs b/tests/browser/runtime.mjs index 9bd81385..64e5b382 100644 --- a/tests/browser/runtime.mjs +++ b/tests/browser/runtime.mjs @@ -38,6 +38,8 @@ export function createBrowserRuntime() { return nodeName.get.call(this); }, }); + // Elements must stringify as in browsers, or Popper serializes the document during startup. + delete window.Element.prototype.toString; window.document.write(readFileSync(path.join(root, 'index.html'), 'utf8') .replace(/]*>[\s\S]*?<\/script>/g, '')); for (const file of ['jquery-3.5.1.min.js', 'jquery-ui.min.js', 'jquery.transit.min.js',