use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum WaitCondition {
Text,
TextGone,
Selector,
SelectorGone,
Url,
IpcIdle,
NetworkIdle,
}
impl WaitCondition {
#[must_use]
pub fn as_str(self) -> &'static str {
match self {
Self::Text => "text",
Self::TextGone => "text_gone",
Self::Selector => "selector",
Self::SelectorGone => "selector_gone",
Self::Url => "url",
Self::IpcIdle => "ipc_idle",
Self::NetworkIdle => "network_idle",
}
}
}
impl fmt::Display for WaitCondition {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_str())
}
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct ResolveCommandParams {
pub query: String,
pub limit: Option<usize>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct SemanticAssertParams {
pub expression: String,
pub label: String,
pub condition: victauri_core::AssertionCondition,
pub expected: serde_json::Value,
pub webview_label: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct WaitForParams {
pub condition: WaitCondition,
pub value: Option<String>,
pub timeout_ms: Option<u64>,
pub poll_ms: Option<u64>,
pub webview_label: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct FindElementsParams {
pub text: Option<String>,
pub role: Option<String>,
pub test_id: Option<String>,
pub css: Option<String>,
pub name: Option<String>,
pub max_results: Option<u32>,
pub webview_label: Option<String>,
}