Skip to content

Commit 91755db

Browse files
authored
fix(websocket): error handling (microsoft#756)
1 parent 7b920ea commit 91755db

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

playwright/_impl/_network.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,8 @@ def __init__(
295295
lambda params: self._on_frame_received(params["opcode"], params["data"]),
296296
)
297297
self._channel.on(
298-
"error", lambda params: self.emit(WebSocket.Events.Error, params["error"])
298+
"socketError",
299+
lambda params: self.emit(WebSocket.Events.Error, params["error"]),
299300
)
300301
self._channel.on("close", lambda params: self._on_close())
301302

tests/async/test_websocket.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15+
import asyncio
16+
1517
import pytest
1618
from flaky import flaky
1719

@@ -125,3 +127,22 @@ async def test_should_reject_wait_for_event_on_close_and_error(page, ws_server):
125127
async with ws.expect_event("framesent"):
126128
await page.evaluate("window.ws.close()")
127129
assert exc_info.value.message == "Socket closed"
130+
131+
132+
async def test_should_emit_error_event(page, server, browser_name):
133+
future = asyncio.Future()
134+
page.on(
135+
"websocket",
136+
lambda websocket: websocket.on(
137+
"socketerror", lambda err: future.set_result(err)
138+
),
139+
)
140+
await page.evaluate(
141+
"""port => new WebSocket(`ws://localhost:${port}/bogus-ws`)""",
142+
server.PORT,
143+
)
144+
err = await future
145+
if browser_name == "firefox":
146+
assert err == "CLOSE_ABNORMAL"
147+
else:
148+
assert ": 404" in err

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy