Skip to content

Commit

Permalink
[cdp][java] Continue requests without modification for know errors in…
Browse files Browse the repository at this point in the history
… NetworkInterceptor

Related to SeleniumHQ#13774
  • Loading branch information
pujagani committed Apr 22, 2024
1 parent e85bf8d commit 8b8418b
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 9 deletions.
8 changes: 8 additions & 0 deletions java/src/org/openqa/selenium/devtools/idealized/Network.java
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,12 @@ public void prepareToInterceptTraffic() {
pausedRequest -> {
try {
String id = getRequestId(pausedRequest);

if (hasErrorResponse(pausedRequest)) {
devTools.send(continueWithoutModification(pausedRequest));
return;
}

Either<HttpRequest, HttpResponse> message = createSeMessages(pausedRequest);

if (message.isRight()) {
Expand Down Expand Up @@ -348,6 +354,8 @@ protected abstract Command<Void> continueWithAuth(

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

protected abstract boolean hasErrorResponse(REQUESTPAUSED pausedReq);

protected abstract Command<Void> continueWithoutModification(REQUESTPAUSED pausedReq);

protected abstract Command<Void> continueRequest(REQUESTPAUSED pausedReq, HttpRequest req);
Expand Down
8 changes: 6 additions & 2 deletions java/src/org/openqa/selenium/devtools/v121/v121Network.java
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,7 @@ public Event<RequestPaused> requestPausedEvent() {

@Override
public Either<HttpRequest, HttpResponse> createSeMessages(RequestPaused pausedReq) {
if (pausedReq.getResponseStatusCode().isPresent()
|| pausedReq.getResponseErrorReason().isPresent()) {
if (pausedReq.getResponseStatusCode().isPresent()) {
String body;
boolean bodyIsBase64Encoded;

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

@Override
protected boolean hasErrorResponse(RequestPaused pausedReq) {
return pausedReq.getResponseErrorReason().isPresent();
}

@Override
protected String getRequestId(RequestPaused pausedReq) {
return pausedReq.getRequestId().toString();
Expand Down
8 changes: 6 additions & 2 deletions java/src/org/openqa/selenium/devtools/v122/v122Network.java
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,7 @@ public Event<RequestPaused> requestPausedEvent() {

@Override
public Either<HttpRequest, HttpResponse> createSeMessages(RequestPaused pausedReq) {
if (pausedReq.getResponseStatusCode().isPresent()
|| pausedReq.getResponseErrorReason().isPresent()) {
if (pausedReq.getResponseStatusCode().isPresent()) {
String body;
boolean bodyIsBase64Encoded;

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

@Override
protected boolean hasErrorResponse(RequestPaused pausedReq) {
return pausedReq.getResponseErrorReason().isPresent();
}

@Override
protected String getRequestId(RequestPaused pausedReq) {
return pausedReq.getRequestId().toString();
Expand Down
8 changes: 6 additions & 2 deletions java/src/org/openqa/selenium/devtools/v123/v123Network.java
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,7 @@ public Event<RequestPaused> requestPausedEvent() {

@Override
public Either<HttpRequest, HttpResponse> createSeMessages(RequestPaused pausedReq) {
if (pausedReq.getResponseStatusCode().isPresent()
|| pausedReq.getResponseErrorReason().isPresent()) {
if (pausedReq.getResponseStatusCode().isPresent()) {
String body;
boolean bodyIsBase64Encoded;

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

@Override
protected boolean hasErrorResponse(RequestPaused pausedReq) {
return pausedReq.getResponseErrorReason().isPresent();
}

@Override
protected String getRequestId(RequestPaused pausedReq) {
return pausedReq.getRequestId().toString();
Expand Down
8 changes: 6 additions & 2 deletions java/src/org/openqa/selenium/devtools/v85/V85Network.java
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,7 @@ public Event<RequestPaused> requestPausedEvent() {

@Override
public Either<HttpRequest, HttpResponse> createSeMessages(RequestPaused pausedReq) {
if (pausedReq.getResponseStatusCode().isPresent()
|| pausedReq.getResponseErrorReason().isPresent()) {
if (pausedReq.getResponseStatusCode().isPresent()) {
String body;
boolean bodyIsBase64Encoded;

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

@Override
protected boolean hasErrorResponse(RequestPaused pausedReq) {
return pausedReq.getResponseErrorReason().isPresent();
}

@Override
protected String getRequestId(RequestPaused pausedReq) {
return pausedReq.getRequestId().toString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
import static com.google.common.net.MediaType.XHTML_UTF_8;
import static java.net.HttpURLConnection.HTTP_MOVED_TEMP;
import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType;
import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
import static org.assertj.core.api.Assumptions.assumeThat;
import static org.openqa.selenium.remote.http.Contents.utf8String;
import static org.openqa.selenium.testing.Safely.safelyCall;
Expand All @@ -35,7 +36,9 @@
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.environment.webserver.NettyAppServer;
import org.openqa.selenium.net.PortProber;
import org.openqa.selenium.remote.http.Contents;
import org.openqa.selenium.remote.http.Filter;
import org.openqa.selenium.remote.http.HttpMethod;
Expand Down Expand Up @@ -248,4 +251,14 @@ void shouldHandleRedirects() {
assertThat(body).contains("Hello, World!");
}
}

@Test
@NoDriverBeforeTest
void shouldProceedAsNormalIfRequestResultInAnKnownError() {
Filter filter = next -> next;
try (NetworkInterceptor ignored = new NetworkInterceptor(driver, filter)) {
assertThatExceptionOfType(WebDriverException.class)
.isThrownBy(() -> driver.get("http://localhost:" + PortProber.findFreePort()));
}
}
}

0 comments on commit 8b8418b

Please sign in to comment.