Skip to content

Commit 96f65fd

Browse files
authored
fix(fetch): serialize primitive multipart values (#3227)
1 parent 8154661 commit 96f65fd

3 files changed

Lines changed: 11 additions & 11 deletions

File tree

‎playwright/_impl/_fetch.py‎

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -423,18 +423,10 @@ async def _inner_fetch(
423423
await _form_data_field_to_form_field(fd_name, fd_value)
424424
)
425425
else:
426-
# Convert file-like values to ServerFilePayload structs.
427426
for name, value in multipart.items():
428-
if is_file_payload(value):
429-
payload = cast(FilePayload, value)
430-
assert isinstance(
431-
payload["buffer"], bytes
432-
), f"Unexpected buffer type of 'data.{name}'"
433-
multipart_data.append(
434-
FormField(name=name, file=file_payload_to_json(payload))
435-
)
436-
elif isinstance(value, str):
437-
multipart_data.append(FormField(name=name, value=value))
427+
multipart_data.append(
428+
await _form_data_field_to_form_field(name, value)
429+
)
438430
if (
439431
post_data_buffer is None
440432
and json_data is None

‎tests/async/test_fetch_browser_context.py‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,8 @@ async def test_should_support_multipart_form_data(
345345
multipart={
346346
"firstName": "John",
347347
"lastName": "Doe",
348+
"score": 42.5,
349+
"active": True,
348350
"file": file,
349351
},
350352
),
@@ -358,6 +360,8 @@ async def test_should_support_multipart_form_data(
358360
)
359361
assert request.args[b"firstName"] == [b"John"]
360362
assert request.args[b"lastName"] == [b"Doe"]
363+
assert request.args[b"score"] == [b"42.5"]
364+
assert request.args[b"active"] == [b"True"]
361365
assert request.args[b"file"][0] == file["buffer"]
362366

363367

‎tests/sync/test_fetch_browser_context.py‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,8 @@ def test_should_support_multipart_form_data(
269269
multipart={
270270
"firstName": "John",
271271
"lastName": "Doe",
272+
"score": 42.5,
273+
"active": True,
272274
"file": file,
273275
},
274276
)
@@ -281,6 +283,8 @@ def test_should_support_multipart_form_data(
281283
)
282284
assert server_req.value.args[b"firstName"] == [b"John"]
283285
assert server_req.value.args[b"lastName"] == [b"Doe"]
286+
assert server_req.value.args[b"score"] == [b"42.5"]
287+
assert server_req.value.args[b"active"] == [b"True"]
284288
assert server_req.value.args[b"file"][0] == file["buffer"]
285289

286290

0 commit comments

Comments
 (0)