Repository navigation
fix(native): close the gaps the repo's gates found (11 of 13 pass in full) - #14
Merged
Merged
Conversation
unohee
force-pushed
the
feat/native-rollout-docs
branch
from
October 25, 2026 04:03
b2bbf85 to
1af6429
Compare
…full) Run on the native driver, scripts/verify_*_e2e.py found what the smokes did not. Each fix below is measured against the gate that found it: - Keys: no nativeVirtualKeyCode. It is read in the platform's own codes; on macOS 27 is not Escape, and Chrome took it for a browser shortcut that opened chrome://help, which the session then followed (browser). - Popups: every attached tab is released with Runtime.runIfWaitingForDebugger before it is set up. A window.open popup arrives paused even with waitForDebuggerOnStart off, and the click that opened it got no answer (Input.dispatchMouseEvent hung). cdp_guard's own hold is not released by it: measured, 60 of 60 refused popup and iframe requests never reached the server, headless and headful, and all 35 guard scenarios pass. - A popup opened with a URL is reported once that URL commits, as Playwright reports it: one refused by the guard (or a 204) is never a tab (tabs); a download such a popup starts belongs to its opener (downloads). - Dedicated workers are attached only to be released: one arrived paused and never ran (cdp_guard workers-fetch-away). - click / press wait for a navigation they requested to commit or stop, as Playwright's do: a click on a slow link times out (click), Enter that leaves the site answers blocked_by_policy (click_refusal). - Refs are stable within a document: a region read hands out the refs the whole page did (snapshot). - Stability falls back to comparing boxes when a frame gets no animation frames (a sandboxed ad frame) instead of reporting "not stable". - internal:control=enter-frame in selectors; Page.frames / main_frame (url, evaluate, wait_for_load_state) with evaluation sent to the frame's own session; Page.content, input_value, click; Context/Page set_default_timeout; Context cookies / add_cookies / clear_cookies. - verify_tabs_e2e.py reads the page's own globals with world="main" through tools.forms._main_world, as patchright would need too. Gates on native (macOS, Chrome 155): browser 63, click 120, downloads 198, dialogs 110, forms 58, wait 130, motion 82, snapshot 148, click_refusal 272, redirect_hop 354, scriptredirect 50 pass in full; tabs passes 70 and stops at the headful-relaunch check the playwright driver stops at here; cdp_guard passes 217 and fails only its Linux-only /proc sections. pytest 1755 passed; the native smokes and the parity script pass.
unohee
force-pushed
the
feat/native-gate-parity
branch
from
October 25, 2026 04:06
e2da7c4 to
986f28b
Compare
unohee
marked this pull request as ready for review
October 25, 2026 04:06
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #13. The repo's own gates found gaps on the native driver; this PR closes them.
Gates on native (macOS, Chrome 155, cdp guard)
/procsections failWhat the gates found
chrome://help.nativeVirtualKeyCodeis read in each platform's own key codes, and on macOS 27 is not Escape. Chrome took the key for a browser shortcut. The fix stops sending that field.Runtime.runIfWaitingForDebuggerbefore it is set up. Dedicated workers had the same problem and are released the same way. This does not release cdp_guard's own hold: 60 of 60 refused popup and iframe requests never reached the server (headless and headful), and all 35 guard scenarios pass.enter-frameselector;Page.frames,content,input_valueandclick;set_default_timeout;page.evaluatestill runs in an isolated world by default, as patchright does. The tabs gate reads the page's own globals withworld="main".