Restore zero DOM dimensions before layout publication. Keep the viewport
fallback in Page.getLayoutMetrics so clients can construct a positive clip
without changing element geometry or screenshot command semantics.
Empty clips remain invalid regardless of layout publication state. CLI
screenshot_full continues to request FullDocument directly on its first capture.
Cover cold and published clip rejection, page-metric captures with DPR and
scale, and CLI full-document output without a preceding viewport capture.
Document and test the separate cold Playwright fullPage limitation.
Install the navigation through the target owner and wait for the child frame load event before registering the preload. This keeps delayed child initialization from replaying a new-document script during the top-level isolation assertion.
Read live viewport and document scroll state for Page.getLayoutMetrics without forcing layout. Use published content bounds when available and the viewport otherwise.
Cover first Playwright viewport and clipped screenshots without CDP prewarming, and remove screenshot prewarming from DPR/resize and concurrent-page smoke cases. Keep element geometry and input dependent on explicit layout publication.
Make geometry, input and observers read the latest published layout without
cold-start or invalidation-triggered layout. Only screenshot, screencast and
PDF output can build and publish a new tree.
Connect WebDriver page screenshots to the shared output pipeline, explain how
to initialize layout in errors, and migrate fixtures to explicit publication.
Remove obsolete read policies and embedded-frame completeness metadata.
Reject mouse input without a rendered snapshot and retain published geometry
across interaction invalidation. Mouse hit testing and native default actions
consume that snapshot without triggering layout; explicit geometry queries
and WebDriver click preparation may still demand layout.
Share geometry query dispatch and result conversion across demand and snapshot
reads, and cover cold input errors, DOM and hover changes, native defaults,
document replacement, and explicit snapshot refreshes.
Coalescing consecutive History API requests discarded intermediate
same-document traversals and their events when joint traversal plans
entered the shared queue. Keep these requests in order and derive the next
index from the last queued step, while retaining Navigation API promise
reuse.
Apply top-level traversals to the page's default Window when an isolated
realm initiated the request. Add local back/forward coverage across same-
and cross-document entries, and verify every event and microtask turn in
the existing history tests and fixture.
Fixes: f8f46bf48 (fix(history): coordinate complete joint traversal plans)
Dispatch trusted beforeinput and input events with operation-specific
inputType and data for text controls and contenteditable editing. Keep
beforeinput cancelable and report input.data after text normalization
and maxlength truncation.
Cover keyboard and CDP insertion, cancellation, deletion, and textarea
line breaks with 57 regression scenarios.
Per-Window length counters cannot shrink after traversal and branching, and
leave retained sibling History objects stale. Give each traversable one
ordered history and cursor with stable step, browsing context, and Document
identities. All History getters read that state; Navigation entries remain
Document views.
Route push, replace, traversal, and pruning through the shared model. Carry
browser positions or renderer snapshots into new Documents and publish
committed mutations through the Page owner-action FIFO. Remove cached length
adjustments and DOM-order traversal guesses. Preserve srcdoc identity when
only its parent's URL changes.
Keep reset callback pushes in both renderer and browser history, and prune
discarded sibling Navigation entries when forward steps are removed.
Validation: cargo fmt --all; workspace all-targets/all-features Clippy with
warnings denied; cargo nextest run --no-fail-fast (18,501 passed, 14 skipped);
12 targeted Chromium/Moli state and length comparisons; frontend differential
1,020/1,020 matches, all 5,259 observed frames matching, with zero retries.
Seed newly committed renderer documents with the browser-owned session-history
length before author scripts run. Keep navigation, reload, and traversal from
losing prior entries that the Navigation API does not expose.
Grow joint history by newly appended entries, preserving existing parent steps
when a child pushes history and avoiding an extra step when replacing forward
history after back. Add protocol and renderer regression coverage.
Carry raw response header values through fetch, caches, redirects,
renderer delivery, workers, and protocol records. Convert explicitly
at WebIDL and protocol text boundaries while preserving opaque bytes.
Keep legacy CacheStorage and service worker metadata readable, and
advance the HTTP cache format for raw header values.
Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast
* fix(parser): preserve text document MIME and encoding semantics
* fix(document): share literal text parsing across child document paths
* fix(document): construct projection parser with the public API
Expose the canonical resource runtime snapshot alongside the existing runtime id and memory-cache fields. Add a CDP regression that verifies disk-pool allocation and parked-image memory accounting.
Restore original headers on redirect while preserving current-hop overrides
for authentication retries and keeping Network event identity intact.
Preserve raw BiDi Cookie, Set-Cookie, and extra header values through page,
navigation, and worker policies. Apply CDP's last-value behavior for duplicate
request header names.
Add coverage for header bytes, redirects, authentication, and event sequences.
Carry RequestHeaders through navigation, Fetch/XHR, workers, redirects and auth,
with explicit Unicode and ByteString conversions at protocol and WebIDL boundaries.
Share the raw curl header list with WebSocket transport and decode binary response
headers without UTF-8 replacement. Keep header memory charging concrete.
Cover opaque values, UTF-8 overrides, duplicates, redirect/auth continuation and
WebSocket handshakes with byte-level regression tests.
Render generic navigation failures with their complete anyhow context chain.
Keep blocked-URL error text canonical through an explicit typed policy cause,
and cover both serialized CDP output and an intercepted blocked navigation.
Replace the offline navigation cause's free-form error text with a typed kind
and a single protocol-text mapping. Keep these policy error types internal and
document that transport failures still use NetworkFetchFailureContext.
Update the unsupported authentication regression to expect preserved context
while retaining the assertion that no retry is issued.
Consume child-frame navigation before the Runtime.enable helper clears
collected events, avoiding an event-ordering race in the Fetch test.
Use a local connection-drop server to trigger nested worker script load
failure, removing external DNS timing from the asynchronous error-event test.
Preserve the constructor, event type, message, and filename assertions and
verify that the fixture receives the expected child script request.
Apply maxlength to user text insertion, preserve complete surrogate pairs,
and keep selection and replacement offsets in UTF-16 units. Cover CDP
input, execCommand insertText, and setRangeText.
Keep keyboard movement and deletion, including execCommand deletion, on
complete surrogate-pair boundaries while exposing UTF-16 offsets.
Source: 3be5eb5e37