podium-driver 0.2.0

Async Rust library for driving Android devices in tests via Maestro's gRPC server
#[derive(Debug, thiserror::Error)]
pub enum PodiumError {
    #[error("Element not found: {reason}")]
    ElementNotFound { reason: String },

    #[error("Assertion timed out after {timeout_ms}ms: {reason}")]
    Timeout { timeout_ms: u64, reason: String },

    #[error("Transport error: {reason}")]
    Transport { reason: String },

    #[error("Not supported on this platform: {reason}")]
    NotSupported { reason: String },

    #[error("Device not found")]
    DeviceNotFound,
}

#[derive(Debug, thiserror::Error)]
#[allow(dead_code)]
pub(crate) enum TransportError {
    #[error("Element not found: {reason}")]
    ElementNotFound { reason: String },

    #[error("Operation failed: {reason}")]
    OperationFailed { reason: String },

    #[error("Not supported: {reason}")]
    NotSupported { reason: String },

    #[error("Device not found")]
    DeviceNotFound,
}

impl From<TransportError> for PodiumError {
    fn from(e: TransportError) -> Self {
        match e {
            TransportError::ElementNotFound { reason } => PodiumError::ElementNotFound { reason },
            TransportError::OperationFailed { reason } => PodiumError::Transport { reason },
            TransportError::NotSupported { reason } => PodiumError::NotSupported { reason },
            TransportError::DeviceNotFound => PodiumError::DeviceNotFound,
        }
    }
}