def test_should_work_for_redirect(page: Page, server: Server) -> None: server.set_redirect("/foo.html", "/empty.html") responses = [] page.on("response", lambda response: responses.append(response)) page.goto(server.PREFIX + "/foo.html") for r in responses: r.finished() assert len(responses) == 2 assert responses[0].url == server.PREFIX + "/foo.html" assert responses[1].url == server.PREFIX + "/empty.html" timing1 = responses[0].request.timing verify_connections_timing_consistency(timing1) assert timing1["requestStart"] >= timing1["connectEnd"] assert timing1["responseStart"] > timing1["requestStart"] assert timing1["responseEnd"] >= timing1["responseStart"] assert timing1["responseEnd"] < 10000 timing2 = responses[1].request.timing verify_connections_timing_consistency(timing2) assert timing2["requestStart"] >= 0 assert timing2["responseStart"] > timing2["requestStart"] assert timing2["responseEnd"] >= timing2["responseStart"] assert timing2["responseEnd"] < 10000
def test_should_propagate_extra_http_headers_with_redirects( playwright: Playwright, server: Server) -> None: server.set_redirect("/a/redirect1", "/b/c/redirect2") server.set_redirect("/b/c/redirect2", "/simple.json") request = playwright.request.new_context( extra_http_headers={"My-Secret": "Value"}) with server.expect_request("/a/redirect1") as server_req1: with server.expect_request("/b/c/redirect2") as server_req2: with server.expect_request("/simple.json") as server_req3: request.get(f"{server.PREFIX}/a/redirect1"), assert server_req1.value.getHeader("my-secret") == "Value" assert server_req2.value.getHeader("my-secret") == "Value" assert server_req3.value.getHeader("my-secret") == "Value"
async def test_should_propagate_extra_http_headers_with_redirects( playwright: Playwright, server: Server): server.set_redirect("/a/redirect1", "/b/c/redirect2") server.set_redirect("/b/c/redirect2", "/simple.json") request = await playwright.request.new_context( extra_http_headers={"My-Secret": "Value"}) [req1, req2, req3, _] = await asyncio.gather( server.wait_for_request("/a/redirect1"), server.wait_for_request("/b/c/redirect2"), server.wait_for_request("/simple.json"), request.get(f"{server.PREFIX}/a/redirect1"), ) assert req1.getHeader("my-secret") == "Value" assert req2.getHeader("my-secret") == "Value" assert req3.getHeader("my-secret") == "Value"