Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion playwright/_impl/_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -1047,7 +1047,7 @@ def get(self, name: str) -> Optional[str]:
return separator.join(values)

def get_all(self, name: str) -> List[str]:
return list(self._headers_map[name.lower()].keys())
return list(self._headers_map.get(name.lower(), {}).keys())

def headers(self) -> Dict[str, str]:
result = {}
Expand Down
22 changes: 22 additions & 0 deletions tests/async/test_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,28 @@ async def test_response_headers_should_work(page: Page, server: Server) -> None:
assert (await response.all_headers())["foo"] == "bar"


async def test_header_value_of_missing_header_should_not_add_it_to_all_headers(
page: Page, server: Server
) -> None:
server.set_route("/empty.html", lambda r: (r.setHeader("foo", "bar"), r.finish()))

response = await page.goto(server.EMPTY_PAGE)
assert response
assert await response.header_value("x-missing") is None
assert await response.header_values("x-other") == []
headers = await response.all_headers()
assert "x-missing" not in headers
assert "x-other" not in headers
assert headers["foo"] == "bar"

request = response.request
assert await request.header_value("x-missing") is None
assert await request.header_value("x-other") is None
request_headers = await request.all_headers()
assert "x-missing" not in request_headers
assert "x-other" not in request_headers


async def test_request_post_data_should_work(page: Page, server: Server) -> None:
await page.goto(server.EMPTY_PAGE)
server.set_route("/post", lambda r: r.finish())
Expand Down
22 changes: 22 additions & 0 deletions tests/sync/test_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,3 +114,25 @@ def test_should_report_service_worker_request(page: Page, server: Server) -> Non
) as request_info:
page.evaluate("() => fetch('/example.txt')")
assert request_info.value.service_worker == worker_info.value


def test_header_value_of_missing_header_should_not_add_it_to_all_headers(
page: Page, server: Server
) -> None:
server.set_route("/empty.html", lambda r: (r.setHeader("foo", "bar"), r.finish()))

response = page.goto(server.EMPTY_PAGE)
assert response
assert response.header_value("x-missing") is None
assert response.header_values("x-other") == []
headers = response.all_headers()
assert "x-missing" not in headers
assert "x-other" not in headers
assert headers["foo"] == "bar"

request = response.request
assert request.header_value("x-missing") is None
assert request.header_value("x-other") is None
request_headers = request.all_headers()
assert "x-missing" not in request_headers
assert "x-other" not in request_headers