pub struct Request { /* private fields */ }Expand description
Live reference to a network request. Mirrors Playwright’s Request.
Cheaply cloneable; every clone shares the same underlying state. Sync
getters (url, method, …) read immutable fields. Async accessors
(response, all_headers) wait until the backend records the result.
Implementations§
Source§impl Request
impl Request
Sourcepub fn new(init: RequestInit) -> Self
pub fn new(init: RequestInit) -> Self
Construct a fresh Request. Called by backend listeners on the
initial requestWillBeSent / beforeRequestSent event. When
init.redirected_from is set, the constructor wires the prior
request’s redirected_to slot synchronously via ArcSwapOption.
pub fn url(&self) -> &str
pub fn method(&self) -> &str
pub fn resource_type(&self) -> &str
pub fn id(&self) -> &str
pub fn frame_id(&self) -> Option<&str>
Sourcepub fn post_data(&self) -> Option<String>
pub fn post_data(&self) -> Option<String>
POST body as UTF-8 text (matches Playwright’s postData()). Returns
None for non-POST requests or non-UTF-8 bodies.
Sourcepub fn post_data_buffer(&self) -> Option<Vec<u8>>
pub fn post_data_buffer(&self) -> Option<Vec<u8>>
POST body as raw bytes (matches Playwright’s postDataBuffer()).
Sourcepub fn post_data_json(&self) -> Result<Option<Value>>
pub fn post_data_json(&self) -> Result<Option<Value>>
POST body parsed as JSON or application/x-www-form-urlencoded.
Mirrors Playwright’s postDataJSON(): returns the parsed value or
None if there’s no body. Errors if the body is not valid JSON for
non-form content types.
§Errors
Returns an error if the post data is set but cannot be parsed as JSON
(and the content type is not application/x-www-form-urlencoded).
Sourcepub fn headers(&self) -> Headers
pub fn headers(&self) -> Headers
Provisional headers (matches Playwright’s deprecated headers()).
For the post-extraInfo headers use all_headers().
Sourcepub async fn headers_array(&self) -> Vec<HeaderEntry>
pub async fn headers_array(&self) -> Vec<HeaderEntry>
Headers as [{name, value}] preserving order and duplicates.
Returns provisional headers when raw headers haven’t arrived yet.
Sourcepub async fn all_headers(&self) -> Result<Headers>
pub async fn all_headers(&self) -> Result<Headers>
All headers, awaiting raw header push or fetch if needed.
§Errors
Returns an error if the raw-header fetcher fails.
Sourcepub async fn header_value(&self, name: &str) -> Result<Option<String>>
pub async fn header_value(&self, name: &str) -> Result<Option<String>>
Single header value (case-insensitive). Returns None when the
header is absent. Multiple values are joined with , (or \n for
Set-Cookie) per Playwright’s headerValue() contract.
§Errors
Returns an error if the raw-header fetcher fails.
Sourcepub const fn service_worker(&self) -> Option<()>
pub const fn service_worker(&self) -> Option<()>
Mirrors Playwright request.serviceWorker(): Worker | null —
returns the Service Worker that initiated the request (if any).
Service-worker request observability is a Tier-2 subsystem
(§2.7), so we always return None for now. The signature
matches Playwright so flipping it on later is non-breaking; the
body genuinely doesn’t need self until §2.7 wires per-request
SW provenance, which is why the lint suppression below is local
and justified rather than a workspace-wide escape hatch.
pub fn redirected_from(&self) -> Option<Request>
Sourcepub fn redirected_to(&self) -> Option<Request>
pub fn redirected_to(&self) -> Option<Request>
Sync — Playwright’s Request.redirectedTo(): Request | null.
Reads via ArcSwapOption so no async lock is needed even though
the slot is set after construction by the listener.
Sourcepub fn failure(&self) -> Option<String>
pub fn failure(&self) -> Option<String>
Failure text, if the request failed before producing a response.
Sync — mirrors Playwright’s request.failure() getter.
Sourcepub async fn response(&self) -> Result<Option<Response>>
pub async fn response(&self) -> Result<Option<Response>>
Wait for the response (or failure) to be recorded. Mirrors
Playwright’s request.response(): Promise<Response | null>.
Returns Ok(None) for a request that failed.
§Errors
Currently infallible (preserved for forward-compat with cancellation).
Sourcepub async fn existing_response(&self) -> Option<Response>
pub async fn existing_response(&self) -> Option<Response>
Existing response without waiting (matches Playwright’s
_response private accessor used by the test runner).
Sourcepub fn timing(&self) -> RequestTiming
pub fn timing(&self) -> RequestTiming
Sync — Playwright’s Request.timing(): ResourceTiming. The
underlying ArcSwap is updated by the backend listener as
timing samples arrive.
Sourcepub async fn sizes(&self) -> Result<RequestSizes>
pub async fn sizes(&self) -> Result<RequestSizes>
Per Playwright: throws if the request didn’t reach response (no transfer happened). We match that contract.
§Errors
Returns an error if the request hasn’t received a response.
Sourcepub async fn set_raw_headers(&self, raw: Vec<HeaderEntry>)
pub async fn set_raw_headers(&self, raw: Vec<HeaderEntry>)
Record raw headers from requestWillBeSentExtraInfo / equivalent.
pub fn update_timing(&self, timing: RequestTiming)
pub fn update_sizes(&self, sizes: RequestSizes)
pub async fn set_response(&self, response: &Response)
pub fn set_failure(&self, error_text: String)
Sourcepub async fn to_diagnostic_json(&self) -> Value
pub async fn to_diagnostic_json(&self) -> Value
JSON snapshot of the request’s current state. Used by MCP’s
diagnostics(type=network) tool which serialises the per-context
network log to a flat array of strings — the live Request
object isn’t itself serde::Serialize because its waiters / locks
would have to be excluded anyway.