diff --git a/playwright/src/main/java/com/microsoft/playwright/impl/BrowserImpl.java b/playwright/src/main/java/com/microsoft/playwright/impl/BrowserImpl.java index a6c36e662..9421565ba 100644 --- a/playwright/src/main/java/com/microsoft/playwright/impl/BrowserImpl.java +++ b/playwright/src/main/java/com/microsoft/playwright/impl/BrowserImpl.java @@ -182,6 +182,11 @@ public BrowserContextImpl newContext(NewContextOptions options) { params.addProperty("noDefaultViewport", true); } } + if (options.screenSize != null) { + JsonElement size = params.get("screenSize"); + params.remove("screenSize"); + params.add("screen", size); + } addToProtocol(params, options.clientCertificates); addHttpCredentialsToProtocol(params); params.remove("acceptDownloads"); diff --git a/playwright/src/test/java/com/microsoft/playwright/TestBrowserContextViewport.java b/playwright/src/test/java/com/microsoft/playwright/TestBrowserContextViewport.java index 23f33070e..d08da1203 100644 --- a/playwright/src/test/java/com/microsoft/playwright/TestBrowserContextViewport.java +++ b/playwright/src/test/java/com/microsoft/playwright/TestBrowserContextViewport.java @@ -20,6 +20,7 @@ import java.util.Map; +import static com.microsoft.playwright.Utils.mapOf; import static com.microsoft.playwright.Utils.verifyViewport; import static org.junit.jupiter.api.Assertions.*; @@ -129,4 +130,15 @@ void shouldReportNullViewPortSizeWhenGivenNullViewport(Browser browser) { assertNull(page.viewportSize()); context.close(); } + + @PlaywrightTest + void shouldSetBothScreenAndViewportOptions(Browser browser) { + try (BrowserContext context = browser.newContext(new Browser.NewContextOptions() + .setScreenSize(1280, 720) + .setViewportSize(1000, 600))) { + Page page = context.newPage(); + assertEquals(mapOf("w", 1280, "h", 720), page.evaluate("() => ({ w: screen.width, h: screen.height })")); + assertEquals(mapOf("w", 1000, "h", 600), page.evaluate("() => ({ w: window.innerWidth, h: window.innerHeight })")); + } + } }