From 6b30c0b3d2c511b37ba702fcf70090bfed4599c2 Mon Sep 17 00:00:00 2001 From: Andrey Lushnikov Date: Wed, 19 Jan 2022 06:15:37 -0700 Subject: [PATCH] fix: pass required env variables for new driver (#774) Fixes #772 --- .../com/microsoft/playwright/impl/Driver.java | 19 +++++++++++++++++++ .../java/com/microsoft/playwright/CLI.java | 4 +--- .../playwright/impl/PlaywrightImpl.java | 1 + .../microsoft/playwright/TestGlobalFetch.java | 19 +++++++++++++++++++ scripts/CLI_VERSION | 2 +- 5 files changed, 41 insertions(+), 4 deletions(-) diff --git a/driver/src/main/java/com/microsoft/playwright/impl/Driver.java b/driver/src/main/java/com/microsoft/playwright/impl/Driver.java index 051d92dc..1f6786bc 100644 --- a/driver/src/main/java/com/microsoft/playwright/impl/Driver.java +++ b/driver/src/main/java/com/microsoft/playwright/impl/Driver.java @@ -65,6 +65,25 @@ public abstract class Driver { return driverDir().resolve(cliFileName); } + public static void setRequiredEnvironmentVariables(ProcessBuilder pb) { + if (!pb.environment().containsKey("PW_CLI_TARGET_LANG")) { + pb.environment().put("PW_CLI_TARGET_LANG", "java"); + pb.environment().put("PW_CLI_TARGET_LANG_VERSION", getMajorJavaVersion()); + } + } + + private static String getMajorJavaVersion() { + String version = System.getProperty("java.version"); + if (version.startsWith("1.")) { + return version.substring(2, 3); + } + int dot = version.indexOf("."); + if (dot != -1) { + return version.substring(0, dot); + } + return version; + } + private static Driver createDriver() throws Exception { String pathFromProperty = System.getProperty("playwright.cli.dir"); if (pathFromProperty != null) { diff --git a/playwright/src/main/java/com/microsoft/playwright/CLI.java b/playwright/src/main/java/com/microsoft/playwright/CLI.java index 4df0f2c0..fb09d33a 100644 --- a/playwright/src/main/java/com/microsoft/playwright/CLI.java +++ b/playwright/src/main/java/com/microsoft/playwright/CLI.java @@ -32,9 +32,7 @@ public class CLI { Path driver = Driver.ensureDriverInstalled(Collections.emptyMap()); ProcessBuilder pb = new ProcessBuilder(driver.toString()); pb.command().addAll(asList(args)); - if (!pb.environment().containsKey("PW_CLI_TARGET_LANG")) { - pb.environment().put("PW_CLI_TARGET_LANG", "java"); - } + Driver.setRequiredEnvironmentVariables(pb); String version = Playwright.class.getPackage().getImplementationVersion(); if (version != null) { pb.environment().put("PW_CLI_DISPLAY_VERSION", version); diff --git a/playwright/src/main/java/com/microsoft/playwright/impl/PlaywrightImpl.java b/playwright/src/main/java/com/microsoft/playwright/impl/PlaywrightImpl.java index 0aab51a1..aa450213 100644 --- a/playwright/src/main/java/com/microsoft/playwright/impl/PlaywrightImpl.java +++ b/playwright/src/main/java/com/microsoft/playwright/impl/PlaywrightImpl.java @@ -41,6 +41,7 @@ public class PlaywrightImpl extends ChannelOwner implements Playwright { ProcessBuilder pb = new ProcessBuilder(driver.toString(), "run-driver"); pb.redirectError(ProcessBuilder.Redirect.INHERIT); pb.environment().putAll(env); + Driver.setRequiredEnvironmentVariables(pb); Process p = pb.start(); Connection connection = new Connection(new PipeTransport(p.getInputStream(), p.getOutputStream())); PlaywrightImpl result = connection.initializePlaywright(); diff --git a/playwright/src/test/java/com/microsoft/playwright/TestGlobalFetch.java b/playwright/src/test/java/com/microsoft/playwright/TestGlobalFetch.java index c327ece5..5fa095fe 100644 --- a/playwright/src/test/java/com/microsoft/playwright/TestGlobalFetch.java +++ b/playwright/src/test/java/com/microsoft/playwright/TestGlobalFetch.java @@ -16,6 +16,25 @@ import static java.util.Arrays.asList; import static org.junit.jupiter.api.Assertions.*; public class TestGlobalFetch extends TestBase { + @Test + void shouldHaveJavaInDefaultUesrAgent() throws ExecutionException, InterruptedException { + APIRequestContext request = playwright.request().newContext(new APIRequest.NewContextOptions()); + Future serverRequest = server.futureRequest("/empty.html"); + APIResponse response = request.get(server.EMPTY_PAGE); + assertTrue(response.ok()); + assertEquals(server.EMPTY_PAGE, response.url()); + String version = System.getProperty("java.version"); + if (version.startsWith("1.")) { + version = version.substring(2, 3); + } else { + int dot = version.indexOf("."); + if (dot != -1) { + version = version.substring(0, dot); + } + } + assertTrue(serverRequest.get().headers.get("user-agent").get(0).contains("java/" + version)); + } + @Test void fetchShouldWork() { APIRequestContext request = playwright.request().newContext(); diff --git a/scripts/CLI_VERSION b/scripts/CLI_VERSION index aa1a83f1..8b53d414 100644 --- a/scripts/CLI_VERSION +++ b/scripts/CLI_VERSION @@ -1 +1 @@ -1.18.0-beta-1642115083000 +1.18.0-rc1