Skip to content

Commit d30882a

Browse files
yury-sclaude
andcommitted
fix: emit 'event' catch-all on CDPSession; add test
The JS CDPSession fires two events per CDP protocol event: this.emit(event.method, event.params) // method-specific this.emit('event', event) // catch-all with { method, params } Java was only firing the method-specific one. Add the missing listeners.notify("event", parameters) call so on("event", handler) receives every CDP event as { method, params }. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 5396dde commit d30882a

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

playwright/src/main/java/com/microsoft/playwright/impl/CDPSessionImpl.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ void handleEvent(String event, JsonObject parameters) {
4545
params = parameters.get("params").getAsJsonObject();
4646
}
4747
listeners.notify(method, params);
48+
listeners.notify("event", parameters);
4849
} else if ("close".equals(event)) {
4950
typedListeners.notify(EventType.CLOSE, this);
5051
}

playwright/src/test/java/com/microsoft/playwright/TestBrowserContextCDPSession.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,26 @@ void shouldAddMultipleEventListeners() {
155155
assertEquals(2, events.size());
156156
}
157157

158+
@Test
159+
void shouldEmitEventForEachCDPEvent() {
160+
CDPSession client = page.context().newCDPSession(page);
161+
client.send("Network.enable");
162+
List<JsonObject> events = new ArrayList<>();
163+
client.on("event", events::add);
164+
page.navigate(server.EMPTY_PAGE);
165+
assertTrue(events.size() > 0);
166+
JsonObject requestEvent = null;
167+
for (JsonObject e : events) {
168+
if ("Network.requestWillBeSent".equals(e.get("method").getAsString())) {
169+
requestEvent = e;
170+
break;
171+
}
172+
}
173+
assertNotNull(requestEvent);
174+
assertEquals(server.EMPTY_PAGE,
175+
requestEvent.getAsJsonObject("params").getAsJsonObject("request").get("url").getAsString());
176+
}
177+
158178
@Test
159179
void shouldRemoveEventListeners() {
160180
CDPSession cdpSession = page.context().newCDPSession(page);

0 commit comments

Comments
 (0)