#[derive(Debug, Clone, Default)]
pub struct RoleOptions {
pub name: Option<String>,
pub exact: Option<bool>,
pub checked: Option<bool>,
pub disabled: Option<bool>,
pub expanded: Option<bool>,
pub level: Option<i32>,
pub pressed: Option<bool>,
pub selected: Option<bool>,
pub include_hidden: Option<bool>,
}
#[derive(Debug, Clone, Default)]
pub struct TextOptions {
pub exact: Option<bool>,
}
#[derive(Debug, Clone, Default)]
pub struct FilterOptions {
pub has_text: Option<String>,
pub has_not_text: Option<String>,
pub has: Option<String>,
pub has_not: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct WaitOptions {
pub state: Option<String>,
pub timeout: Option<u64>,
}
#[derive(Debug, Clone, Default)]
pub struct ScreenshotOptions {
pub full_page: Option<bool>,
pub format: Option<String>,
pub quality: Option<i64>,
}
#[derive(Debug, Clone, Copy)]
pub struct BoundingBox {
pub x: f64,
pub y: f64,
pub width: f64,
pub height: f64,
}
#[derive(Debug, Clone)]
pub struct ViewportConfig {
pub width: i64,
pub height: i64,
pub device_scale_factor: f64,
pub is_mobile: bool,
pub has_touch: bool,
pub is_landscape: bool,
}
#[derive(Debug, Clone, Default)]
pub struct EmulateMediaOptions {
pub media: Option<String>,
pub color_scheme: Option<String>,
pub reduced_motion: Option<String>,
pub forced_colors: Option<String>,
pub contrast: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct GotoOptions {
pub wait_until: Option<String>,
pub timeout: Option<u64>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum BrowserType {
Chromium,
Firefox,
WebKit,
}
#[derive(Debug, Clone)]
pub struct LaunchOptions {
pub backend: crate::backend::BackendKind,
pub browser: Option<BrowserType>,
pub headless: bool,
pub executable_path: Option<String>,
pub args: Vec<String>,
pub user_data_dir: Option<String>,
pub ws_endpoint: Option<String>,
pub auto_connect: Option<AutoConnectOptions>,
pub viewport: Option<ViewportConfig>,
pub slow_mo: Option<u64>,
pub timeout: Option<u64>,
}
#[derive(Debug, Clone)]
pub struct AutoConnectOptions {
pub channel: String,
pub user_data_dir: Option<String>,
}
impl Default for LaunchOptions {
fn default() -> Self {
Self {
backend: crate::backend::BackendKind::CdpPipe,
browser: None,
headless: true,
executable_path: None,
args: Vec::new(),
user_data_dir: None,
ws_endpoint: None,
auto_connect: None,
viewport: Some(ViewportConfig::default()),
slow_mo: None,
timeout: None,
}
}
}
impl Default for ViewportConfig {
fn default() -> Self {
Self {
width: 1280,
height: 720,
device_scale_factor: 1.0,
is_mobile: false,
has_touch: false,
is_landscape: false,
}
}
}