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)