test: add test for multipart keeping order (#27787)

Test for https://github.com/microsoft/playwright/issues/27720
This commit is contained in:
Max Schmitt 2023-10-25 19:33:00 +02:00 committed by GitHub
parent 1afeff5be0
commit 5f0d91a42c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -920,7 +920,7 @@ it('should support multipart/form-data', async function({ context, server }) {
expect(response.status()).toBe(200);
});
it('should support multipart/form-data with ReadSream values', async function({ context, page, asset, server }) {
it('should support multipart/form-data with ReadStream values', async function({ context, page, asset, server }) {
const formReceived = new Promise<{error: any, fields: formidable.Fields, files: Record<string, formidable.File>, serverRequest: IncomingMessage}>(resolve => {
server.setRoute('/empty.html', async (serverRequest, res) => {
const form = new formidable.IncomingForm();
@ -953,6 +953,35 @@ it('should support multipart/form-data with ReadSream values', async function({
expect(response.status()).toBe(200);
});
it('should support multipart/form-data and keep the order', async function({ context, page, asset, server }) {
const given = {
firstName: 'John',
lastName: 'Doe',
age: 27,
};
given['foo'] = 'bar';
const givenKeys = Object.keys(given);
const formReceived = new Promise<{error: any, fields: formidable.Fields}>(resolve => {
server.setRoute('/empty.html', async (serverRequest, res) => {
const form = new formidable.IncomingForm();
form.parse(serverRequest, (error, fields, files) => {
server.serveFile(serverRequest, res);
resolve({ error, fields });
});
});
});
const [{ error, fields }, response] = await Promise.all([
formReceived,
context.request.post(server.EMPTY_PAGE, {
multipart: given,
})
]);
expect(error).toBeFalsy();
const actualKeys = Object.keys(fields);
expect(actualKeys).toEqual(givenKeys);
expect(response.status()).toBe(200);
});
it('should serialize data to json regardless of content-type', async function({ context, server }) {
const data = {
firstName: 'John',