From 43ba37817b6d621923f5a4177f13425a0824d8a2 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Mon, 14 Mar 2022 15:31:19 -0700 Subject: [PATCH] fix: send x-playwright-browser (#844) --- .../playwright/impl/BrowserTypeImpl.java | 16 ++++++++++++++++ .../playwright/TestBrowserTypeConnect.java | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) 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")); } }