#![allow(clippy::all, missing_docs, unused_imports)]
use serde::{Deserialize, Serialize};
use super::*;
use crate::playwright::connection::{
Binary, Channel, ChannelType, ObjectRef, ProtocolError, ProtocolEvent, Ref,
};
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct TracingInitializer {}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct TracingTracingStartParams {
#[serde(rename = "name", default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "snapshotDom", default, skip_serializing_if = "Option::is_none")]
pub snapshot_dom: Option<bool>,
#[serde(rename = "snapshotAria", default, skip_serializing_if = "Option::is_none")]
pub snapshot_aria: Option<bool>,
#[serde(rename = "snapshotScreen", default, skip_serializing_if = "Option::is_none")]
pub snapshot_screen: Option<bool>,
#[serde(rename = "screencast", default, skip_serializing_if = "Option::is_none")]
pub screencast: Option<bool>,
#[serde(rename = "live", default, skip_serializing_if = "Option::is_none")]
pub live: Option<bool>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct TracingTracingStartChunkParams {
#[serde(rename = "name", default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "title", default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct TracingTracingStartChunkResult {
#[serde(rename = "traceName")]
pub trace_name: String,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct TracingTracingGroupParamsLocation {
#[serde(rename = "file")]
pub file: String,
#[serde(rename = "line", default, skip_serializing_if = "Option::is_none")]
pub line: Option<i64>,
#[serde(rename = "column", default, skip_serializing_if = "Option::is_none")]
pub column: Option<i64>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct TracingTracingGroupParams {
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "location", default, skip_serializing_if = "Option::is_none")]
pub location: Option<TracingTracingGroupParamsLocation>,
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum TracingTracingStopChunkParamsMode {
#[default]
#[serde(rename = "archive")]
Archive,
#[serde(rename = "discard")]
Discard,
#[serde(rename = "entries")]
Entries,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct TracingTracingStopChunkParams {
#[serde(rename = "mode")]
pub mode: TracingTracingStopChunkParamsMode,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct TracingTracingStopChunkResult {
#[serde(rename = "artifact", default, skip_serializing_if = "Option::is_none")]
pub artifact: Option<Ref<Artifact>>,
#[serde(rename = "entries", default, skip_serializing_if = "Option::is_none")]
pub entries: Option<Vec<NameValue>>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct TracingHarStartParams {
#[serde(rename = "page", default, skip_serializing_if = "Option::is_none")]
pub page: Option<Ref<Page>>,
#[serde(rename = "options")]
pub options: RecordHarOptions,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct TracingHarStartResult {
#[serde(rename = "harId")]
pub har_id: String,
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum TracingHarExportParamsMode {
#[default]
#[serde(rename = "archive")]
Archive,
#[serde(rename = "entries")]
Entries,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct TracingHarExportParams {
#[serde(rename = "harId", default, skip_serializing_if = "Option::is_none")]
pub har_id: Option<String>,
#[serde(rename = "mode")]
pub mode: TracingHarExportParamsMode,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct TracingHarExportResult {
#[serde(rename = "artifact", default, skip_serializing_if = "Option::is_none")]
pub artifact: Option<Ref<Artifact>>,
#[serde(rename = "entries", default, skip_serializing_if = "Option::is_none")]
pub entries: Option<Vec<NameValue>>,
}
#[derive(Debug, Clone, PartialEq)]
pub enum TracingEvent {
Unknown {
method: String,
params: serde_json::Value,
},
}
impl ProtocolEvent for TracingEvent {
fn parse(method: &str, params: serde_json::Value) -> Result<Self, serde_json::Error> {
match method {
_ => Ok(Self::Unknown { method: method.to_string(), params }),
}
}
}
#[derive(Debug, Clone)]
pub struct Tracing {
channel: Channel,
}
impl ChannelType for Tracing {
const INTERFACE: &'static str = "Tracing";
type Initializer = TracingInitializer;
type Event = TracingEvent;
fn accepts(interface: &str) -> bool {
matches!(interface, "Tracing")
}
fn from_channel(channel: Channel) -> Self {
Self { channel }
}
fn channel(&self) -> &Channel {
&self.channel
}
}
impl Tracing {
pub async fn tracing_start(&self, params: TracingTracingStartParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("tracingStart", ¶ms).await
}
pub async fn tracing_start_chunk(&self, params: TracingTracingStartChunkParams) -> Result<TracingTracingStartChunkResult, ProtocolError> {
self.channel.send("tracingStartChunk", ¶ms).await
}
pub async fn tracing_group(&self, params: TracingTracingGroupParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("tracingGroup", ¶ms).await
}
pub async fn tracing_group_end(&self) -> Result<(), ProtocolError> {
self.channel.send_no_result("tracingGroupEnd", &serde_json::json!({})).await
}
pub async fn tracing_stop_chunk(&self, params: TracingTracingStopChunkParams) -> Result<TracingTracingStopChunkResult, ProtocolError> {
self.channel.send("tracingStopChunk", ¶ms).await
}
pub async fn tracing_stop(&self) -> Result<(), ProtocolError> {
self.channel.send_no_result("tracingStop", &serde_json::json!({})).await
}
pub async fn har_start(&self, params: TracingHarStartParams) -> Result<TracingHarStartResult, ProtocolError> {
self.channel.send("harStart", ¶ms).await
}
pub async fn har_export(&self, params: TracingHarExportParams) -> Result<TracingHarExportResult, ProtocolError> {
self.channel.send("harExport", ¶ms).await
}
}