@@ -207,6 +207,36 @@ async def test_request_postdata_should_be_undefined_when_there_is_no_post_data(
207207 assert response .request .postData is None
208208
209209
210+ async def test_should_parse_the_json_post_data (page , server ):
211+ await page .goto (server .EMPTY_PAGE )
212+ server .set_route ("/post" , lambda req : req .finish ())
213+ requests = []
214+ page .on ("request" , lambda r : requests .append (r ))
215+ await page .evaluate (
216+ """() => fetch('./post', { method: 'POST', body: JSON.stringify({ foo: 'bar' }) })"""
217+ )
218+ assert len (requests ) == 1
219+ assert requests [0 ].postDataJSON == {"foo" : "bar" }
220+
221+
222+ async def test_should_parse_the_data_if_content_type_is_form_urlencoded (page , server ):
223+ await page .goto (server .EMPTY_PAGE )
224+ server .set_route ("/post" , lambda req : req .finish ())
225+ requests = []
226+ page .on ("request" , lambda r : requests .append (r ))
227+ await page .setContent (
228+ """<form method='POST' action='/post'><input type='text' name='foo' value='bar'><input type='number' name='baz' value='123'><input type='submit'></form>"""
229+ )
230+ await page .click ("input[type=submit]" )
231+ assert len (requests ) == 1
232+ assert requests [0 ].postDataJSON == {"foo" : "bar" , "baz" : "123" }
233+
234+
235+ async def test_should_be_undefined_when_there_is_no_post_data (page , server ):
236+ response = await page .goto (server .EMPTY_PAGE )
237+ assert response .request .postDataJSON is None
238+
239+
210240async def test_response_text_should_work (page , server ):
211241 response = await page .goto (server .PREFIX + "/simple.json" )
212242 assert await response .text () == '{"foo": "bar"}\n '
0 commit comments