Version
1.60.0
Steps to reproduce
Steps to Reproduce
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser = await p.chromium.connect_over_cdp("http://127.0.0.1:9222")
print("connected") # never reached
await browser.close()
asyncio.run(main())
Expected behavior
connect_over_cdp() should connect successfully to Edge 148,
as it did with Edge 147.
Actual behavior
Description
After Microsoft Edge was updated to 148.0.3967.54 via Windows Update,
connect_over_cdp() hangs indefinitely and never returns.
Edge is launched with remote debugging enabled:
"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --remote-debugging-port=9222
Observed Behavior
The call log shows the WebSocket connection succeeds, but the call hangs
after <ws connected> and never resolves:
<ws preparing> retrieving websocket url from http://127.0.0.1:9222
<ws connecting> ws://127.0.0.1:9222/devtools/browser/xxxxxxxx-...
<ws connected> ws://127.0.0.1:9222/devtools/browser/xxxxxxxx-...
(hangs here indefinitely)
Additional context
Investigation
To confirm that Edge's CDP endpoint itself is reachable, I verified:
http://127.0.0.1:9222/json returns valid JSON ✅
- Connecting via raw
websockets library and sending Browser.getVersion
returns a valid response ✅
This suggests that Edge 148 may have changed its CDP initialization
sequence or response format in a way that is incompatible with
Playwright 1.60.0's handshake implementation. The connection succeeds
at the WebSocket level, but Playwright appears to hang waiting for
a response that does not arrive in the expected format.
The root cause — whether it lies in Edge's changed behavior or in
Playwright's handling of it — would need further investigation on the
Playwright side.
Additional Notes
- Playwright 1.60.0 lists Edge 147 as its tested browser version.
The Windows Update bumped Edge to 148, causing this version mismatch.
- Downgrading Edge is not practical in a managed corporate environment.
- A workaround using the raw
websockets library with
Target.attachToTarget confirms that CDP communication itself works
correctly after the connection is established manually.
Environment
| | Version |
|---|---|
| Playwright Python | 1.60.0 |
| Node.js | v24.14.1 |
| Python | 3.12.13 (conda) |
| OS | Windows 11 22H2(Build 22631.7079) |
| Microsoft Edge | 148.0.3967.54 |
Version
1.60.0
Steps to reproduce
Steps to Reproduce
Expected behavior
connect_over_cdp()should connect successfully to Edge 148,as it did with Edge 147.
Actual behavior
Description
After Microsoft Edge was updated to 148.0.3967.54 via Windows Update,
connect_over_cdp()hangs indefinitely and never returns.Edge is launched with remote debugging enabled:
Observed Behavior
The call log shows the WebSocket connection succeeds, but the call hangs
after
<ws connected>and never resolves:Additional context
Investigation
To confirm that Edge's CDP endpoint itself is reachable, I verified:
http://127.0.0.1:9222/jsonreturns valid JSON ✅websocketslibrary and sendingBrowser.getVersionreturns a valid response ✅
This suggests that Edge 148 may have changed its CDP initialization
sequence or response format in a way that is incompatible with
Playwright 1.60.0's handshake implementation. The connection succeeds
at the WebSocket level, but Playwright appears to hang waiting for
a response that does not arrive in the expected format.
The root cause — whether it lies in Edge's changed behavior or in
Playwright's handling of it — would need further investigation on the
Playwright side.
Additional Notes
The Windows Update bumped Edge to 148, causing this version mismatch.
websocketslibrary withTarget.attachToTargetconfirms that CDP communication itself workscorrectly after the connection is established manually.
Environment