fix: use actual Brave binary path, not wrapper script

This commit is contained in:
Rodrigo Rodriguez (Pragmatismo) 2025-12-14 17:07:52 -03:00
parent c2b2727a86
commit 1ae6c6e5c7
2 changed files with 50 additions and 10 deletions

View file

@ -206,11 +206,35 @@ impl Browser {
pub async fn new(config: BrowserConfig) -> Result<Self> { pub async fn new(config: BrowserConfig) -> Result<Self> {
let caps = config.build_capabilities(); let caps = config.build_capabilities();
let client = ClientBuilder::native() log::info!("Connecting to WebDriver at {}", config.webdriver_url);
log::debug!(
"Capabilities: {}",
serde_json::to_string_pretty(&caps).unwrap_or_default()
);
// Give chromedriver a moment to be fully ready
tokio::time::sleep(Duration::from_millis(500)).await;
let client = match ClientBuilder::native()
.capabilities(caps.as_object().cloned().unwrap_or_default()) .capabilities(caps.as_object().cloned().unwrap_or_default())
.connect(&config.webdriver_url) .connect(&config.webdriver_url)
.await .await
.context("Failed to connect to WebDriver")?; {
Ok(c) => {
log::info!("Successfully connected to WebDriver");
c
}
Err(e) => {
log::error!("WebDriver connection error: {:?}", e);
log::error!("WebDriver URL: {}", config.webdriver_url);
log::error!("Browser type: {:?}", config.browser_type);
log::error!("Headless: {}", config.headless);
if let Some(ref binary) = config.binary_path {
log::error!("Binary path: {}", binary);
}
return Err(anyhow::anyhow!("Failed to connect to WebDriver: {:?}", e));
}
};
Ok(Self { client, config }) Ok(Self { client, config })
} }

View file

@ -86,17 +86,32 @@ impl E2ETestContext {
}; };
let chromedriver = match ChromeDriverService::start(CHROMEDRIVER_PORT).await { let chromedriver = match ChromeDriverService::start(CHROMEDRIVER_PORT).await {
Ok(cd) => Some(cd), Ok(cd) => {
log::info!("ChromeDriver started on port {}", CHROMEDRIVER_PORT);
Some(cd)
}
Err(e) => { Err(e) => {
log::warn!("Failed to start ChromeDriver: {}", e); log::error!("Failed to start ChromeDriver: {}", e);
eprintln!("Failed to start ChromeDriver: {}", e);
None None
} }
}; };
let browser = if chromedriver.is_some() { let browser = if chromedriver.is_some() {
let config = browser_config(); let config = browser_config();
Browser::new(config).await.ok() match Browser::new(config).await {
Ok(b) => {
log::info!("Browser created successfully");
Some(b)
}
Err(e) => {
log::error!("Failed to create browser: {}", e);
eprintln!("Failed to create browser: {}", e);
None
}
}
} else { } else {
log::warn!("ChromeDriver not available, skipping browser");
None None
}; };
@ -142,12 +157,13 @@ pub fn browser_config() -> BrowserConfig {
let webdriver_url = std::env::var("WEBDRIVER_URL") let webdriver_url = std::env::var("WEBDRIVER_URL")
.unwrap_or_else(|_| format!("http://localhost:{}", CHROMEDRIVER_PORT)); .unwrap_or_else(|_| format!("http://localhost:{}", CHROMEDRIVER_PORT));
// Detect Brave browser path // Detect Brave browser path - need actual binary, not wrapper script
let brave_paths = [ let brave_paths = [
"/usr/bin/brave-browser", "/opt/brave.com/brave-nightly/brave", // Brave Nightly actual binary
"/usr/bin/brave", "/opt/brave.com/brave/brave", // Brave stable actual binary
"/snap/bin/brave", "/snap/brave/current/opt/brave.com/brave/brave", // Snap installation
"/opt/brave.com/brave/brave-browser", "/usr/bin/google-chrome", // Chrome as fallback
"/usr/bin/chromium-browser", // Chromium as fallback
]; ];
let mut config = BrowserConfig::default() let mut config = BrowserConfig::default()