diff --git a/src-tauri/tests/common/mod.rs b/src-tauri/tests/common/mod.rs index 6b3dc8a..5939fb1 100644 --- a/src-tauri/tests/common/mod.rs +++ b/src-tauri/tests/common/mod.rs @@ -121,11 +121,48 @@ impl TestUtils { Ok(tempfile::tempdir()?) } + /// Clean up specific nodecar processes by IDs (for targeted test cleanup) + pub async fn cleanup_specific_processes( + nodecar_path: &PathBuf, + proxy_ids: &[String], + camoufox_ids: &[String], + ) -> Result<(), Box> { + println!("Cleaning up specific test processes..."); + + // Stop specific proxies + for proxy_id in proxy_ids { + let stop_args = ["proxy", "stop", "--id", proxy_id]; + if let Ok(output) = Self::execute_nodecar_command(nodecar_path, &stop_args, 10).await { + if output.status.success() { + println!("Stopped test proxy: {proxy_id}"); + } + } + } + + // Stop specific camoufox instances + for camoufox_id in camoufox_ids { + let stop_args = ["camoufox", "stop", "--id", camoufox_id]; + if let Ok(output) = Self::execute_nodecar_command(nodecar_path, &stop_args, 30).await { + if output.status.success() { + println!("Stopped test camoufox instance: {camoufox_id}"); + } + } + } + + // Give processes time to clean up + tokio::time::sleep(Duration::from_millis(500)).await; + + println!("Test process cleanup completed"); + Ok(()) + } + /// Clean up all running nodecar processes (proxies and camoufox instances) + /// WARNING: This will stop ALL processes, including those from actual app usage + #[allow(dead_code)] pub async fn cleanup_all_nodecar_processes( nodecar_path: &PathBuf, ) -> Result<(), Box> { - println!("Cleaning up all nodecar processes..."); + println!("WARNING: Cleaning up ALL nodecar processes..."); // Get list of all proxies and stop them individually let proxy_list_args = ["proxy", "list"]; diff --git a/src-tauri/tests/nodecar_integration.rs b/src-tauri/tests/nodecar_integration.rs index 9807aaf..b5dee97 100644 --- a/src-tauri/tests/nodecar_integration.rs +++ b/src-tauri/tests/nodecar_integration.rs @@ -6,8 +6,9 @@ use serde_json::Value; async fn setup_test() -> Result> { let nodecar_path = TestUtils::ensure_nodecar_binary().await?; - // Clean up any existing processes from previous test runs - let _ = TestUtils::cleanup_all_nodecar_processes(&nodecar_path).await; + // Only clean up test-specific processes, not all processes + // This prevents interfering with actual app usage during testing + println!("Setting up test environment..."); Ok(nodecar_path) } @@ -37,20 +38,13 @@ impl TestResourceTracker { } async fn cleanup_all(&self) { - // Clean up tracked proxies - for proxy_id in &self.proxy_ids { - let stop_args = ["proxy", "stop", "--id", proxy_id]; - let _ = TestUtils::execute_nodecar_command(&self.nodecar_path, &stop_args, 10).await; - } - - // Clean up tracked camoufox instances - for camoufox_id in &self.camoufox_ids { - let stop_args = ["camoufox", "stop", "--id", camoufox_id]; - let _ = TestUtils::execute_nodecar_command(&self.nodecar_path, &stop_args, 30).await; - } - - // Give processes time to clean up - tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; + // Use targeted cleanup to only stop test-specific processes + let _ = TestUtils::cleanup_specific_processes( + &self.nodecar_path, + &self.proxy_ids, + &self.camoufox_ids, + ) + .await; } } @@ -62,15 +56,7 @@ impl Drop for TestResourceTracker { let nodecar_path = self.nodecar_path.clone(); tokio::spawn(async move { - for proxy_id in &proxy_ids { - let stop_args = ["proxy", "stop", "--id", proxy_id]; - let _ = TestUtils::execute_nodecar_command(&nodecar_path, &stop_args, 10).await; - } - - for camoufox_id in &camoufox_ids { - let stop_args = ["camoufox", "stop", "--id", camoufox_id]; - let _ = TestUtils::execute_nodecar_command(&nodecar_path, &stop_args, 30).await; - } + let _ = TestUtils::cleanup_specific_processes(&nodecar_path, &proxy_ids, &camoufox_ids).await; }); } }