Highlights
🐛 Puppeteer attaches over the browser endpoint
Puppeteer's puppeteer.connect({ browserWSEndpoint }) now drives a WebView through the bridge. Three gaps blocked it: Target.getBrowserContexts returned a bare object without the browserContextIds array Puppeteer reads, the absent Performance domain raised instead of being treated as a no-op, and a context-scoped Runtime.callFunctionOn (no objectId) was rejected. All three are fixed and covered by an offline golden flow plus a chrome-remote-interface session, so a regression fails in CI rather than in a client.
🐛 The CDP bridge fails cleanly when the device disconnects
A device restart or unplug used to spray a non-recoverable ConnectionResetError per in-flight request. The bridge now notices the lost connection once, keeps serving its last-known state, and stops with a single device-disconnected error. Pass the top-level --reconnect to have pymobiledevice3 wait for that same device and resume the bridge automatically.
pymobiledevice3 --reconnect webinspector cdpWhat's Changed
- d121ae9 cdp: Fail cleanly on a device disconnect so --reconnect can retry (#1934) (@doronz88)
- 9a30f42 cdp: Add a chrome-remote-interface golden flow and Puppeteer-fix tests (#1933) (@doronz88)
- 1d2a1ec cdp: Make Puppeteer work over the browser endpoint (#1933) (@doronz88)
Full Changelog: v11.10.2...v11.10.3