Skip to content

Commit

Permalink
fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
mxschmitt committed Jun 17, 2024
1 parent b4dcbd9 commit 4c808c6
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 53 deletions.
5 changes: 5 additions & 0 deletions tests/async/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,11 @@ async def browser(
await browser.close()


@pytest.fixture(scope="session")
async def browser_version(browser: Browser) -> str:
return browser.version


@pytest.fixture
async def context_factory(
browser: Browser,
Expand Down
14 changes: 12 additions & 2 deletions tests/async/test_browsertype_connect.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
from playwright.async_api import BrowserType, Error, Playwright, Route
from tests.conftest import RemoteServer
from tests.server import Server, TestServerRequest, WebSocketProtocol
from tests.utils import parse_trace
from tests.utils import chromium_version_less_than, parse_trace


async def test_should_print_custom_ws_close_error(
Expand Down Expand Up @@ -412,6 +412,9 @@ async def test_should_upload_a_folder(
launch_server: Callable[[], RemoteServer],
server: Server,
tmp_path: Path,
browser_name: str,
browser_version: str,
headless: bool,
) -> None:
remote = launch_server()

Expand All @@ -434,7 +437,14 @@ async def test_should_upload_a_folder(
[
"file-upload-test/file1.txt",
"file-upload-test/file2",
"file-upload-test/sub-dir/really.txt",
# https://issues.chromium.org/issues/345393164
*(
[]
if browser_name == "chromium"
and headless
and chromium_version_less_than(browser_version, "127.0.6533.0")
else []
),
]
)
webkit_relative_paths = await input.evaluate(
Expand Down
18 changes: 15 additions & 3 deletions tests/async/test_input.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
from playwright._impl._path_utils import get_file_dirname
from playwright.async_api import Error, FilePayload, Page
from tests.server import Server
from tests.utils import must
from tests.utils import chromium_version_less_than, must

_dirname = get_file_dirname()
FILE_TO_UPLOAD = _dirname / ".." / "assets/file-to-upload.txt"
Expand Down Expand Up @@ -415,7 +415,12 @@ async def test_should_upload_multiple_large_file(


async def test_should_upload_a_folder(
page: Page, server: Server, tmp_path: Path
page: Page,
server: Server,
tmp_path: Path,
browser_name: str,
browser_version: str,
headless: bool,
) -> None:
await page.goto(server.PREFIX + "/input/folderupload.html")
input = await page.query_selector("input")
Expand All @@ -433,7 +438,14 @@ async def test_should_upload_a_folder(
[
"file-upload-test/file1.txt",
"file-upload-test/file2",
"file-upload-test/sub-dir/really.txt",
# https://issues.chromium.org/issues/345393164
*(
[]
if browser_name == "chromium"
and headless
and chromium_version_less_than(browser_version, "127.0.6533.0")
else []
),
]
)
webkit_relative_paths = await input.evaluate(
Expand Down
48 changes: 0 additions & 48 deletions tests/async/test_request_continue.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,50 +147,6 @@ async def test_should_amend_binary_post_data(page: Page, server: Server) -> None
assert server_request.post_body == b"\x00\x01\x02\x03\x04"


# it('continue should not change multipart/form-data body', async ({ page, server, browserName }) => {
# it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/19158' });
# await page.goto(server.EMPTY_PAGE);
# server.setRoute('/upload', (request, response) => {
# response.writeHead(200, { 'Content-Type': 'text/plain' });
# response.end('done');
# });
# async function sendFormData() {
# const reqPromise = server.waitForRequest('/upload');
# const status = await page.evaluate(async () => {
# const newFile = new File(['file content'], 'file.txt');
# const formData = new FormData();
# formData.append('file', newFile);
# const response = await fetch('/upload', {
# method: 'POST',
# credentials: 'include',
# body: formData,
# });
# return response.status;
# });
# const req = await reqPromise;
# expect(status).toBe(200);
# return req;
# }
# const reqBefore = await sendFormData();
# await page.route('**/*', async route => {
# await route.continue();
# });
# const reqAfter = await sendFormData();
# const fileContent = [
# 'Content-Disposition: form-data; name=\"file\"; filename=\"file.txt\"',
# 'Content-Type: application/octet-stream',
# '',
# 'file content',
# '------'].join('\r\n');
# expect.soft((await reqBefore.postBody).toString('utf8')).toContain(fileContent);
# expect.soft((await reqAfter.postBody).toString('utf8')).toContain(fileContent);
# // Firefox sends a bit longer boundary.
# const expectedLength = browserName === 'firefox' ? '246' : '208';
# expect.soft(reqBefore.headers['content-length']).toBe(expectedLength);
# expect.soft(reqAfter.headers['content-length']).toBe(expectedLength);
# });


async def test_continue_should_not_change_multipart_form_data_body(
page: Page, server: Server, browser_name: str
) -> None:
Expand Down Expand Up @@ -238,7 +194,3 @@ async def send_form_data() -> TestServerRequest:
assert req_after.post_body
assert file_content in req_before.post_body.decode()
assert file_content in req_after.post_body.decode()
# Firefox sends a bit longer boundary.
expected_length = "246" if browser_name == "firefox" else "208"
assert req_before.getHeader("content-length") == expected_length
assert req_after.getHeader("content-length") == expected_length
11 changes: 11 additions & 0 deletions tests/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,14 @@ def get_trace_actions(events: List[Any]) -> List[str]:
def must(value: Optional[MustType]) -> MustType:
assert value
return value


def chromium_version_less_than(a: str, b: str) -> bool:
left = list(map(int, a.split(".")))
right = list(map(int, b.split(".")))
for i in range(4):
if left[i] > right[i]:
return False
if left[i] < right[i]:
return True
return False

0 comments on commit 4c808c6

Please sign in to comment.