Skip to content

Commit 907b4f4

Browse files
authored
[cdp][java] Continue requests without modification for know errors in NetworkInterceptor (#13836)
1 parent 031c8cf commit 907b4f4

File tree

6 files changed

+47
-9
lines changed

6 files changed

+47
-9
lines changed

java/src/org/openqa/selenium/devtools/idealized/Network.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,13 @@ public void prepareToInterceptTraffic() {
200200
pausedRequest -> {
201201
try {
202202
String id = getRequestId(pausedRequest);
203+
204+
if (hasErrorResponse(pausedRequest)) {
205+
pendingResponses.remove(id);
206+
devTools.send(continueWithoutModification(pausedRequest));
207+
return;
208+
}
209+
203210
Either<HttpRequest, HttpResponse> message = createSeMessages(pausedRequest);
204211

205212
if (message.isRight()) {
@@ -348,6 +355,8 @@ protected abstract Command<Void> continueWithAuth(
348355

349356
protected abstract Either<HttpRequest, HttpResponse> createSeMessages(REQUESTPAUSED pausedReq);
350357

358+
protected abstract boolean hasErrorResponse(REQUESTPAUSED pausedReq);
359+
351360
protected abstract Command<Void> continueWithoutModification(REQUESTPAUSED pausedReq);
352361

353362
protected abstract Command<Void> continueRequest(REQUESTPAUSED pausedReq, HttpRequest req);

java/src/org/openqa/selenium/devtools/v121/v121Network.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,7 @@ public Event<RequestPaused> requestPausedEvent() {
114114

115115
@Override
116116
public Either<HttpRequest, HttpResponse> createSeMessages(RequestPaused pausedReq) {
117-
if (pausedReq.getResponseStatusCode().isPresent()
118-
|| pausedReq.getResponseErrorReason().isPresent()) {
117+
if (pausedReq.getResponseStatusCode().isPresent()) {
119118
String body;
120119
boolean bodyIsBase64Encoded;
121120

@@ -161,6 +160,11 @@ public Either<HttpRequest, HttpResponse> createSeMessages(RequestPaused pausedRe
161160
return Either.left(req);
162161
}
163162

163+
@Override
164+
protected boolean hasErrorResponse(RequestPaused pausedReq) {
165+
return pausedReq.getResponseErrorReason().isPresent();
166+
}
167+
164168
@Override
165169
protected String getRequestId(RequestPaused pausedReq) {
166170
return pausedReq.getRequestId().toString();

java/src/org/openqa/selenium/devtools/v122/v122Network.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,7 @@ public Event<RequestPaused> requestPausedEvent() {
114114

115115
@Override
116116
public Either<HttpRequest, HttpResponse> createSeMessages(RequestPaused pausedReq) {
117-
if (pausedReq.getResponseStatusCode().isPresent()
118-
|| pausedReq.getResponseErrorReason().isPresent()) {
117+
if (pausedReq.getResponseStatusCode().isPresent()) {
119118
String body;
120119
boolean bodyIsBase64Encoded;
121120

@@ -161,6 +160,11 @@ public Either<HttpRequest, HttpResponse> createSeMessages(RequestPaused pausedRe
161160
return Either.left(req);
162161
}
163162

163+
@Override
164+
protected boolean hasErrorResponse(RequestPaused pausedReq) {
165+
return pausedReq.getResponseErrorReason().isPresent();
166+
}
167+
164168
@Override
165169
protected String getRequestId(RequestPaused pausedReq) {
166170
return pausedReq.getRequestId().toString();

java/src/org/openqa/selenium/devtools/v123/v123Network.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,7 @@ public Event<RequestPaused> requestPausedEvent() {
114114

115115
@Override
116116
public Either<HttpRequest, HttpResponse> createSeMessages(RequestPaused pausedReq) {
117-
if (pausedReq.getResponseStatusCode().isPresent()
118-
|| pausedReq.getResponseErrorReason().isPresent()) {
117+
if (pausedReq.getResponseStatusCode().isPresent()) {
119118
String body;
120119
boolean bodyIsBase64Encoded;
121120

@@ -161,6 +160,11 @@ public Either<HttpRequest, HttpResponse> createSeMessages(RequestPaused pausedRe
161160
return Either.left(req);
162161
}
163162

163+
@Override
164+
protected boolean hasErrorResponse(RequestPaused pausedReq) {
165+
return pausedReq.getResponseErrorReason().isPresent();
166+
}
167+
164168
@Override
165169
protected String getRequestId(RequestPaused pausedReq) {
166170
return pausedReq.getRequestId().toString();

java/src/org/openqa/selenium/devtools/v85/V85Network.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,7 @@ public Event<RequestPaused> requestPausedEvent() {
124124

125125
@Override
126126
public Either<HttpRequest, HttpResponse> createSeMessages(RequestPaused pausedReq) {
127-
if (pausedReq.getResponseStatusCode().isPresent()
128-
|| pausedReq.getResponseErrorReason().isPresent()) {
127+
if (pausedReq.getResponseStatusCode().isPresent()) {
129128
String body;
130129
boolean bodyIsBase64Encoded;
131130

@@ -171,6 +170,11 @@ public Either<HttpRequest, HttpResponse> createSeMessages(RequestPaused pausedRe
171170
return Either.left(req);
172171
}
173172

173+
@Override
174+
protected boolean hasErrorResponse(RequestPaused pausedReq) {
175+
return pausedReq.getResponseErrorReason().isPresent();
176+
}
177+
174178
@Override
175179
protected String getRequestId(RequestPaused pausedReq) {
176180
return pausedReq.getRequestId().toString();

java/test/org/openqa/selenium/devtools/NetworkInterceptorTest.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
import static com.google.common.net.MediaType.XHTML_UTF_8;
2121
import static java.net.HttpURLConnection.HTTP_MOVED_TEMP;
2222
import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
23-
import static org.assertj.core.api.Assertions.assertThat;
23+
import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType;
24+
import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
2425
import static org.assertj.core.api.Assumptions.assumeThat;
2526
import static org.openqa.selenium.remote.http.Contents.utf8String;
2627
import static org.openqa.selenium.testing.Safely.safelyCall;
@@ -35,7 +36,9 @@
3536
import org.junit.jupiter.api.Test;
3637
import org.openqa.selenium.By;
3738
import org.openqa.selenium.WebDriver;
39+
import org.openqa.selenium.WebDriverException;
3840
import org.openqa.selenium.environment.webserver.NettyAppServer;
41+
import org.openqa.selenium.net.PortProber;
3942
import org.openqa.selenium.remote.http.Contents;
4043
import org.openqa.selenium.remote.http.Filter;
4144
import org.openqa.selenium.remote.http.HttpMethod;
@@ -248,4 +251,14 @@ void shouldHandleRedirects() {
248251
assertThat(body).contains("Hello, World!");
249252
}
250253
}
254+
255+
@Test
256+
@NoDriverBeforeTest
257+
void shouldProceedAsNormalIfRequestResultInAnKnownError() {
258+
Filter filter = next -> next;
259+
try (NetworkInterceptor ignored = new NetworkInterceptor(driver, filter)) {
260+
assertThatExceptionOfType(WebDriverException.class)
261+
.isThrownBy(() -> driver.get("http://localhost:" + PortProber.findFreePort()));
262+
}
263+
}
251264
}

0 commit comments

Comments
 (0)