From ef2e794263a496fc17d1ca62c2ed0d5b924ce61d Mon Sep 17 00:00:00 2001 From: Oleg Ridchenko Date: Tue, 13 Oct 2026 16:59:36 +0300 Subject: [PATCH 1/2] fix: send isRunning=false in stop() for backend 5.1.0+ --- .../sdk_java/TestRunOptions.java | 2 ++ .../sdk_java/VisualRegressionTracker.java | 6 +++++- .../sdk_java/request/ModifyBuildRequest.java | 11 +++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 src/main/java/io/visual_regression_tracker/sdk_java/request/ModifyBuildRequest.java diff --git a/src/main/java/io/visual_regression_tracker/sdk_java/TestRunOptions.java b/src/main/java/io/visual_regression_tracker/sdk_java/TestRunOptions.java index e681faf..a093d49 100755 --- a/src/main/java/io/visual_regression_tracker/sdk_java/TestRunOptions.java +++ b/src/main/java/io/visual_regression_tracker/sdk_java/TestRunOptions.java @@ -4,9 +4,11 @@ import lombok.Builder; import lombok.Getter; +import lombok.ToString; @Builder @Getter +@ToString public class TestRunOptions { private final String os; private final String browser; diff --git a/src/main/java/io/visual_regression_tracker/sdk_java/VisualRegressionTracker.java b/src/main/java/io/visual_regression_tracker/sdk_java/VisualRegressionTracker.java index 3c3f491..bdd56ee 100755 --- a/src/main/java/io/visual_regression_tracker/sdk_java/VisualRegressionTracker.java +++ b/src/main/java/io/visual_regression_tracker/sdk_java/VisualRegressionTracker.java @@ -2,6 +2,7 @@ import com.google.gson.Gson; import io.visual_regression_tracker.sdk_java.request.BuildRequest; +import io.visual_regression_tracker.sdk_java.request.ModifyBuildRequest; import io.visual_regression_tracker.sdk_java.request.TestRunRequest; import io.visual_regression_tracker.sdk_java.response.BuildResponse; import io.visual_regression_tracker.sdk_java.response.TestRunResponse; @@ -81,7 +82,10 @@ public BuildResponse stop() throws IOException, InterruptedException { log.info("Stopping Visual Regression Tracker for buildId <{}>", buildId); - HttpRequest.BodyPublisher body = HttpRequest.BodyPublishers.ofString(""); + ModifyBuildRequest stopBuildRequest = ModifyBuildRequest.builder() + .isRunning(false) + .build(); + HttpRequest.BodyPublisher body = HttpRequest.BodyPublishers.ofString(gson.toJson(stopBuildRequest)); HttpResponse response = getResponse(METHOD.PATCH, paths.getBuildPathForBuild(buildId), body); BuildResponse vrtStopResponse = handleResponse(response, BuildResponse.class); diff --git a/src/main/java/io/visual_regression_tracker/sdk_java/request/ModifyBuildRequest.java b/src/main/java/io/visual_regression_tracker/sdk_java/request/ModifyBuildRequest.java new file mode 100644 index 0000000..075e3b6 --- /dev/null +++ b/src/main/java/io/visual_regression_tracker/sdk_java/request/ModifyBuildRequest.java @@ -0,0 +1,11 @@ +package io.visual_regression_tracker.sdk_java.request; + +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class ModifyBuildRequest { + private final Boolean isRunning; + private final String ciBuildId; +} From cc312c545a6b8e38b5381aacdb60aa8568c52fea Mon Sep 17 00:00:00 2001 From: Oleg Ridchenko Date: Tue, 13 Oct 2026 17:28:08 +0300 Subject: [PATCH 2/2] - `shouldStopBuild` test now asserts the request body --- .../sdk_java/VisualRegressionTrackerTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/io/visual_regression_tracker/sdk_java/VisualRegressionTrackerTest.java b/src/test/java/io/visual_regression_tracker/sdk_java/VisualRegressionTrackerTest.java index e9fcd36..71aa218 100755 --- a/src/test/java/io/visual_regression_tracker/sdk_java/VisualRegressionTrackerTest.java +++ b/src/test/java/io/visual_regression_tracker/sdk_java/VisualRegressionTrackerTest.java @@ -133,6 +133,7 @@ public void shouldStopBuild() throws IOException, InterruptedException { assertThat(recordedRequest.getHeader(VisualRegressionTracker.API_KEY_HEADER), is(config.getApiKey())); assertThat(recordedRequest.getHeader(VisualRegressionTracker.PROJECT_HEADER), is(config.getProject())); assertThat(Objects.requireNonNull(recordedRequest.getRequestUrl()).encodedPath(), containsString(BUILD_ID)); + assertThat(recordedRequest.getBody().readUtf8(), is("{\"isRunning\":false}")); assertThat(actualBuildResponse.isRunning(), is(false)); assertThat(actualBuildResponse.getStatus(), containsString("unresolved")); assertThat(actualBuildResponse.getPassedCount(), is(1));