Skip to content

Commit 248f3ec

Browse files
authored
chore: refactor TestServer/Request class (#2179)
1 parent fa71145 commit 248f3ec

23 files changed

+148
-153
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ repos:
2222
rev: v1.5.1
2323
hooks:
2424
- id: mypy
25-
additional_dependencies: [types-pyOpenSSL==23.2.0.2]
25+
additional_dependencies: [types-pyOpenSSL==23.2.0.2, types-requests==2.31.0.10]
2626
- repo: https://github.com/pycqa/flake8
2727
rev: 6.1.0
2828
hooks:

local-requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ service_identity==23.1.0
2020
setuptools==68.2.2
2121
twisted==23.10.0
2222
types-pyOpenSSL==23.2.0.2
23+
types-requests==2.31.0.10
2324
wheel==0.41.2

playwright/_impl/_locator.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import json
1616
import pathlib
1717
import sys
18-
from collections import ChainMap
1918
from typing import (
2019
TYPE_CHECKING,
2120
Any,
@@ -528,7 +527,7 @@ async def screenshot(
528527
params = locals_to_params(locals())
529528
return await self._with_element(
530529
lambda h, timeout: h.screenshot(
531-
**ChainMap({"timeout": timeout}, params),
530+
**{**params, "timeout": timeout},
532531
),
533532
)
534533

@@ -561,9 +560,7 @@ async def select_option(
561560
async def select_text(self, force: bool = None, timeout: float = None) -> None:
562561
params = locals_to_params(locals())
563562
return await self._with_element(
564-
lambda h, timeout: h.select_text(
565-
**ChainMap({"timeout": timeout}, params),
566-
),
563+
lambda h, timeout: h.select_text(**{**params, "timeout": timeout}),
567564
timeout,
568565
)
569566

playwright/_impl/_network.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ def post_data(self) -> Optional[str]:
167167
data = self._fallback_overrides.post_data_buffer
168168
if not data:
169169
return None
170-
return data.decode() if isinstance(data, bytes) else data
170+
return data.decode()
171171

172172
@property
173173
def post_data_json(self) -> Optional[Any]:

pyproject.toml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,16 @@ warn_unused_configs = true
2525
check_untyped_defs = true
2626
disallow_untyped_defs = true
2727
no_implicit_optional = false
28-
29-
[[tool.mypy.overrides]]
30-
module = "tests/async.*"
31-
ignore_errors = true
28+
exclude = [
29+
"build/",
30+
"env/",
31+
]
3232

3333
[tool.isort]
3434
profile = "black"
3535

3636
[tool.pyright]
37-
include = ["playwright", "tests/sync"]
38-
ignore = ["tests/async/", "scripts/"]
37+
include = ["playwright", "tests", "scripts"]
3938
pythonVersion = "3.8"
4039
reportMissingImports = false
4140
reportTypedDictNotRequiredAccess = false

scripts/documentation_provider.py

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,7 @@
1616
import re
1717
import subprocess
1818
from sys import stderr
19-
from typing import ( # type: ignore
20-
Any,
21-
Dict,
22-
List,
23-
Set,
24-
Union,
25-
get_args,
26-
get_origin,
27-
get_type_hints,
28-
)
19+
from typing import Any, Dict, List, Set, Union, get_args, get_origin, get_type_hints
2920
from urllib.parse import urljoin
3021

3122
from playwright._impl._helper import to_snake_case

tests/async/test_browsercontext_add_cookies.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import pytest
2020

2121
from playwright.async_api import Browser, BrowserContext, Error, Page
22-
from tests.server import HttpRequestWithPostBody, Server
22+
from tests.server import Server, TestServerRequest
2323
from tests.utils import must
2424

2525

@@ -49,7 +49,7 @@ async def test_should_roundtrip_cookie(
4949
cookies = await context.cookies()
5050
await context.clear_cookies()
5151
assert await context.cookies() == []
52-
await context.add_cookies(cookies)
52+
await context.add_cookies(cookies) # type: ignore
5353
assert await context.cookies() == cookies
5454

5555

@@ -58,7 +58,7 @@ async def test_should_send_cookie_header(
5858
) -> None:
5959
cookie: List[str] = []
6060

61-
def handler(request: HttpRequestWithPostBody) -> None:
61+
def handler(request: TestServerRequest) -> None:
6262
cookie.extend(must(request.requestHeaders.getRawHeaders("cookie")))
6363
request.finish()
6464

@@ -154,7 +154,7 @@ async def test_should_isolate_send_cookie_header(
154154
) -> None:
155155
cookie: List[str] = []
156156

157-
def handler(request: HttpRequestWithPostBody) -> None:
157+
def handler(request: TestServerRequest) -> None:
158158
cookie.extend(request.requestHeaders.getRawHeaders("cookie") or [])
159159
request.finish()
160160

tests/async/test_browsercontext_events.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from playwright.async_api import Page
2121
from tests.utils import must
2222

23-
from ..server import HttpRequestWithPostBody, Server
23+
from ..server import Server, TestServerRequest
2424

2525

2626
async def test_console_event_should_work(page: Page) -> None:
@@ -162,7 +162,7 @@ async def test_dialog_event_should_work_in_immdiately_closed_popup(page: Page) -
162162
async def test_dialog_event_should_work_with_inline_script_tag(
163163
page: Page, server: Server
164164
) -> None:
165-
def handle_route(request: HttpRequestWithPostBody) -> None:
165+
def handle_route(request: TestServerRequest) -> None:
166166
request.setHeader("content-type", "text/html")
167167
request.write(b"""<script>window.result = prompt('hey?')</script>""")
168168
request.finish()

tests/async/test_browsercontext_proxy.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from flaky import flaky
2121

2222
from playwright.async_api import Browser, BrowserContext
23-
from tests.server import HttpRequestWithPostBody, Server
23+
from tests.server import Server, TestServerRequest
2424

2525

2626
@pytest.fixture(scope="session")
@@ -89,7 +89,7 @@ async def test_should_work_with_ip_port_notion(
8989
async def test_should_authenticate(
9090
context_factory: "Callable[..., Awaitable[BrowserContext]]", server: Server
9191
) -> None:
92-
def handler(req: HttpRequestWithPostBody) -> None:
92+
def handler(req: TestServerRequest) -> None:
9393
auth = req.getHeader("proxy-authorization")
9494
if not auth:
9595
req.setHeader(
@@ -120,7 +120,7 @@ def handler(req: HttpRequestWithPostBody) -> None:
120120
async def test_should_authenticate_with_empty_password(
121121
context_factory: "Callable[..., Awaitable[BrowserContext]]", server: Server
122122
) -> None:
123-
def handler(req: HttpRequestWithPostBody) -> None:
123+
def handler(req: TestServerRequest) -> None:
124124
auth = req.getHeader("proxy-authorization")
125125
if not auth:
126126
req.setHeader(

tests/async/test_browsertype_connect.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
from playwright.async_api import BrowserType, Error, Playwright, Route
2525
from tests.conftest import RemoteServer
26-
from tests.server import HttpRequestWithPostBody, Server
26+
from tests.server import Server, TestServerRequest
2727
from tests.utils import parse_trace
2828

2929

@@ -168,7 +168,7 @@ async def test_browser_type_connect_should_reject_navigation_when_browser_closes
168168
async def test_should_not_allow_getting_the_path(
169169
browser_type: BrowserType, launch_server: Callable[[], RemoteServer], server: Server
170170
) -> None:
171-
def handle_download(request: HttpRequestWithPostBody) -> None:
171+
def handle_download(request: TestServerRequest) -> None:
172172
request.setHeader("Content-Type", "application/octet-stream")
173173
request.setHeader("Content-Disposition", "attachment")
174174
request.write(b"Hello world")

0 commit comments

Comments
 (0)