use std::time::Duration;
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum ManagerError {
#[error("download failed: {0}")]
Download(String),
#[error("extract failed: {0}")]
Extract(String),
#[error("could not detect installed {browser}: {hint}")]
LocalBrowserNotFound {
browser: &'static str,
hint: &'static str,
},
#[error("unsupported browser: {0} (manager supports chrome, chromium, firefox)")]
UnsupportedBrowser(String),
#[error("browserName missing from capabilities")]
MissingBrowserName,
#[error(
"browserVersion missing from capabilities; required by DriverVersion::FromCapabilities"
)]
MissingCapabilityVersion,
#[error("WebDriverManagerBuilder awaited without capabilities; use .build() instead")]
NoCapabilities,
#[error("driver did not become ready within {0:?}")]
DriverNotReady(Duration),
#[error("failed to spawn driver: {0}")]
Spawn(String),
#[error("cache lock failed: {0}")]
Lock(String),
#[error("offline mode and driver not present in cache")]
Offline,
#[error("io: {0}")]
Io(#[from] std::io::Error),
#[error("http: {0}")]
Http(String),
#[error("parse error: {0}")]
Parse(String),
}
impl From<reqwest::Error> for ManagerError {
fn from(e: reqwest::Error) -> Self {
ManagerError::Http(e.to_string())
}
}