diff --git a/playwright/src/main/java/com/microsoft/playwright/impl/BrowserTypeImpl.java b/playwright/src/main/java/com/microsoft/playwright/impl/BrowserTypeImpl.java index d9af419e..6373b53b 100644 --- a/playwright/src/main/java/com/microsoft/playwright/impl/BrowserTypeImpl.java +++ b/playwright/src/main/java/com/microsoft/playwright/impl/BrowserTypeImpl.java @@ -64,6 +64,22 @@ class BrowserTypeImpl extends ChannelOwner implements BrowserType { // We don't use gson() here as the headers map should be serialized to a json object. JsonObject params = new Gson().toJsonTree(options).getAsJsonObject(); params.addProperty("wsEndpoint", wsEndpoint); + + if (!params.has("headers")) { + params.add("headers", new JsonObject()); + } + JsonObject headers = params.get("headers").getAsJsonObject(); + boolean foundBrowserHeader = false; + for (String name : headers.keySet()) { + if ("x-playwright-browser".equalsIgnoreCase(name)) { + foundBrowserHeader = true; + break; + } + } + if (!foundBrowserHeader) { + headers.addProperty("x-playwright-browser", name()); + } + JsonObject json = sendMessage("connect", params).getAsJsonObject(); JsonPipe pipe = connection.getExistingObject(json.getAsJsonObject("pipe").get("guid").getAsString()); Connection connection = new Connection(pipe); diff --git a/playwright/src/test/java/com/microsoft/playwright/TestBrowserTypeConnect.java b/playwright/src/test/java/com/microsoft/playwright/TestBrowserTypeConnect.java index db39629f..96602443 100644 --- a/playwright/src/test/java/com/microsoft/playwright/TestBrowserTypeConnect.java +++ b/playwright/src/test/java/com/microsoft/playwright/TestBrowserTypeConnect.java @@ -32,8 +32,7 @@ import java.nio.file.Paths; import java.util.*; import java.util.stream.Collectors; -import static com.microsoft.playwright.Utils.mapOf; -import static com.microsoft.playwright.Utils.parseTrace; +import static com.microsoft.playwright.Utils.*; import static java.nio.charset.StandardCharsets.UTF_8; import static java.util.Arrays.asList; import static org.junit.jupiter.api.Assertions.*; @@ -166,6 +165,7 @@ public class TestBrowserTypeConnect extends TestBase { } assertNotNull(webSocketServer.lastClientHandshake); assertEquals("Playwright", webSocketServer.lastClientHandshake.getFieldValue("User-Agent")); + assertEquals(browserType.name(), webSocketServer.lastClientHandshake.getFieldValue("x-playwright-browser")); assertEquals("bar", webSocketServer.lastClientHandshake.getFieldValue("foo")); } }