Hi all, I'm trying to emulate this POST request which I can do in Postman using APIRequestContext.post
but I must be missing something as I can't seem to get it in the right shape. Can anyone advise on how to structure the multipart data and what headers would be required? Many thanks in advance!
https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-post
This thread is trying to answer question "How to structure the multipart data and what headers would be required for a POST request using `APIRequestContext.post`?"
See if this helps answer your problem. https://playwrightsolutions.com/making-a-post/
@butchmayhew Unfortunately not, no. My example is trickier because as well as uploading the file, I need to send the key value pairs shown in the screenshot (taxYear
, title
, entityType
, ref
).
The multipart
parameter for APIRequestContext.post
will accept either a ReadStream or a Buffer for the file but won't accept any additional key/value pairs in the object. So using this method I can upload my file but I can't send the key/values.
Conversely, the form
parameter for sending form data will accept my key value pairs but will not accept my file stream (it only accepts types of string
, number
or boolean
).
The post
function won't accept both a multipart
and a form
parameter in one request, it will only accept one. The test fails if you attempt to send both:
Error: apiRequestContext.post: Only one of 'data', 'form' or 'multipart' can be specified
So I still don't have a solution to POST both the file and the key value pairs in one request. Is there something I'm missing here?
Update: OK, it turns out I had a problem in one of our existing helper functions for doing POST requests, it was getting in the way with the request headers 🤦♀️ After working that out, I have now got the request working with multipart as below 🙌
const multipart = {
file: stream,
title: "Test Questionnaire",
ref: "testing,
taxYear: 2022,
entityType: "individual"
};
const response = await apiContext.post(`/${getTestVersion()}/form-templates/import`, { multipart });```
Rayrun is a community for QA engineers. I am constantly looking for new ways to add value to people learning Playwright and other browser automation frameworks. If you have feedback, email [email protected].