From d12726170686a3e49c6d0e55fe682bef9182816c Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Thu, 1 Feb 2024 11:54:18 -0800 Subject: [PATCH] cherry-pick(#1469): fix: put file payloads into "payloads" protocol field Fixes https://github.com/microsoft/playwright-java/issues/1468 --- .../playwright/impl/ElementHandleImpl.java | 2 +- .../microsoft/playwright/TestPageSetInputFiles.java | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/playwright/src/main/java/com/microsoft/playwright/impl/ElementHandleImpl.java b/playwright/src/main/java/com/microsoft/playwright/impl/ElementHandleImpl.java index 1218749b5..35d7374bc 100644 --- a/playwright/src/main/java/com/microsoft/playwright/impl/ElementHandleImpl.java +++ b/playwright/src/main/java/com/microsoft/playwright/impl/ElementHandleImpl.java @@ -490,7 +490,7 @@ void setInputFilesImpl(FilePayload[] files, SetInputFilesOptions options) { options = new SetInputFilesOptions(); } JsonObject params = gson().toJsonTree(options).getAsJsonObject(); - params.add("files", Serialization.toJsonArray(files)); + params.add("payloads", Serialization.toJsonArray(files)); sendMessage("setInputFiles", params); } diff --git a/playwright/src/test/java/com/microsoft/playwright/TestPageSetInputFiles.java b/playwright/src/test/java/com/microsoft/playwright/TestPageSetInputFiles.java index 6e44703b6..f2cfbed23 100644 --- a/playwright/src/test/java/com/microsoft/playwright/TestPageSetInputFiles.java +++ b/playwright/src/test/java/com/microsoft/playwright/TestPageSetInputFiles.java @@ -308,7 +308,18 @@ void shouldAcceptSingleFile() { assertEquals("file-to-upload.txt", page.evalOnSelector("input", "input => input.files[0].name")); } -// @Test + @Test + void shouldAcceptSingleFilePayload() { + page.setContent(""); + FileChooser fileChooser = page.waitForFileChooser(() -> page.click("input")); + assertEquals(page, fileChooser.page()); + assertNotNull(fileChooser.element()); + fileChooser.setFiles(new FilePayload("test.txt", "text/plain", "Hello!".getBytes())); + assertEquals(1, page.evalOnSelector("input", "input => input.files.length")); + assertEquals("test.txt", page.evalOnSelector("input", "input => input.files[0].name")); + } + + // @Test void shouldDetectMimeType() throws ExecutionException, InterruptedException { // TODO: Parse form fields on server }