Skip to content

Commit 25fb05d

Browse files
authored
test: migrate flaky plugin to rerunfailures (#2772)
1 parent 1b95464 commit 25fb05d

11 files changed

+8
-24
lines changed

.github/workflows/test_docker.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,5 @@ jobs:
4949
docker exec "${CONTAINER_ID}" pip install -r requirements.txt
5050
docker exec "${CONTAINER_ID}" pip install -e .
5151
docker exec "${CONTAINER_ID}" python -m build --wheel
52-
docker exec "${CONTAINER_ID}" xvfb-run pytest -vv tests/sync/
53-
docker exec "${CONTAINER_ID}" xvfb-run pytest -vv tests/async/
52+
docker exec "${CONTAINER_ID}" xvfb-run pytest tests/sync/
53+
docker exec "${CONTAINER_ID}" xvfb-run pytest tests/async/

local-requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ autobahn==23.1.2
22
black==25.1.0
33
build==1.2.2.post1
44
flake8==7.1.2
5-
flaky==3.8.1
65
mypy==1.15.0
76
objgraph==3.6.2
87
Pillow==11.1.0
@@ -13,6 +12,7 @@ pytest==8.3.5
1312
pytest-asyncio==0.25.3
1413
pytest-cov==6.0.0
1514
pytest-repeat==0.9.3
15+
pytest-rerunfailures==15.0
1616
pytest-timeout==2.3.1
1717
pytest-xdist==3.6.1
1818
requests==2.32.3

tests/async/test_browsercontext_proxy.py

-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
from typing import AsyncGenerator, Awaitable, Callable
1818

1919
import pytest
20-
from flaky import flaky
2120

2221
from playwright.async_api import Browser, BrowserContext
2322
from tests.server import Server, TestServerRequest
@@ -108,7 +107,6 @@ async def test_should_work_with_ip_port_notion(
108107
assert await page.title() == "Served by the proxy"
109108

110109

111-
@flaky # Upstream flaky
112110
async def test_should_authenticate(
113111
context_factory: "Callable[..., Awaitable[BrowserContext]]", server: Server
114112
) -> None:
@@ -139,7 +137,6 @@ def handler(req: TestServerRequest) -> None:
139137
)
140138

141139

142-
@flaky # Upstream flaky
143140
async def test_should_authenticate_with_empty_password(
144141
context_factory: "Callable[..., Awaitable[BrowserContext]]", server: Server
145142
) -> None:

tests/async/test_browsertype_connect.py

-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from typing import Callable
2020

2121
import pytest
22-
from flaky import flaky
2322

2423
from playwright.async_api import BrowserType, Error, Playwright, Route
2524
from tests.conftest import RemoteServer
@@ -266,7 +265,6 @@ async def handle_request(route: Route) -> None:
266265
remote.kill()
267266

268267

269-
@flaky
270268
async def test_should_upload_large_file(
271269
browser_type: BrowserType,
272270
launch_server: Callable[[], RemoteServer],

tests/async/test_input.py

-3
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
from typing import Any
2222

2323
import pytest
24-
from flaky import flaky
2524

2625
from playwright._impl._path_utils import get_file_dirname
2726
from playwright.async_api import Error, FilePayload, Page
@@ -316,7 +315,6 @@ async def _listen_for_wheel_events(page: Page, selector: str) -> None:
316315
)
317316

318317

319-
@flaky
320318
async def test_should_upload_large_file(
321319
page: Page, server: Server, tmp_path: Path
322320
) -> None:
@@ -383,7 +381,6 @@ async def test_set_input_files_should_preserve_last_modified_timestamp(
383381
assert abs(timestamps[i] - expected_timestamps[i]) < 1000
384382

385383

386-
@flaky
387384
async def test_should_upload_multiple_large_file(
388385
page: Page, server: Server, tmp_path: Path
389386
) -> None:

tests/async/test_network.py

-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from typing import Dict, List, Optional, Union
2020

2121
import pytest
22-
from flaky import flaky
2322
from twisted.web import http
2423

2524
from playwright.async_api import Browser, Error, Page, Request, Response, Route
@@ -819,7 +818,6 @@ async def test_set_extra_http_headers_should_work_with_extra_headers_from_browse
819818
assert request.getHeader("foo") == "bar"
820819

821820

822-
@flaky # Flaky upstream https://devops.aslushnikov.com/flakiness2.html#filter_spec=should+override+extra+headers+from+browser+context&test_parameter_filters=%5B%5B%22browserName%22%2C%5B%5B%22webkit%22%2C%22include%22%5D%5D%5D%2C%5B%22video%22%2C%5B%5Btrue%2C%22exclude%22%5D%5D%5D%2C%5B%22platform%22%2C%5B%5B%22Windows%22%2C%22include%22%5D%5D%5D%5D
823821
async def test_set_extra_http_headers_should_override_extra_headers_from_browser_context(
824822
browser: Browser, server: Server
825823
) -> None:

tests/async/test_resource_timing.py

-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from typing import Dict
1616

1717
import pytest
18-
from flaky import flaky
1918

2019
from playwright.async_api import Browser, Page
2120
from tests.server import Server
@@ -33,7 +32,6 @@ async def test_should_work(page: Page, server: Server) -> None:
3332
assert timing["responseEnd"] < 10000
3433

3534

36-
@flaky
3735
async def test_should_work_for_subresource(
3836
page: Page, server: Server, is_win: bool, is_mac: bool, is_webkit: bool
3937
) -> None:
@@ -51,7 +49,6 @@ async def test_should_work_for_subresource(
5149
assert timing["responseEnd"] < 10000
5250

5351

54-
@flaky # Upstream flaky
5552
async def test_should_work_for_ssl(browser: Browser, https_server: Server) -> None:
5653
page = await browser.new_page(ignore_https_errors=True)
5754
async with page.expect_event("requestfinished") as request_info:

tests/async/test_websocket.py

-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
from typing import Union
1717

1818
import pytest
19-
from flaky import flaky
2019

2120
from playwright.async_api import Error, Page, WebSocket
2221
from tests.server import Server, WebSocketProtocol
@@ -151,7 +150,6 @@ def on_web_socket(ws: WebSocket) -> None:
151150
assert received == ["incoming", b"\x04\x02"]
152151

153152

154-
@flaky
155153
async def test_should_reject_wait_for_event_on_close_and_error(
156154
page: Page, server: Server
157155
) -> None:

tests/async/test_worker.py

-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
from asyncio.futures import Future
1717

1818
import pytest
19-
from flaky import flaky
2019

2120
from playwright.async_api import Browser, ConsoleMessage, Error, Page, Worker
2221
from tests.server import Server
@@ -107,7 +106,6 @@ async def test_workers_should_report_errors(page: Page) -> None:
107106
assert "this is my error" in error_log.message
108107

109108

110-
@flaky # Upstream flaky
111109
async def test_workers_should_clear_upon_navigation(server: Server, page: Page) -> None:
112110
await page.goto(server.EMPTY_PAGE)
113111
async with page.expect_event("worker") as event_info:
@@ -123,7 +121,6 @@ async def test_workers_should_clear_upon_navigation(server: Server, page: Page)
123121
assert len(page.workers) == 0
124122

125123

126-
@flaky # Upstream flaky
127124
async def test_workers_should_clear_upon_cross_process_navigation(
128125
server: Server, page: Page
129126
) -> None:

tests/conftest.py

+5
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@
3434
_dirname = get_file_dirname()
3535

3636

37+
def pytest_configure(config: pytest.Config) -> None:
38+
if os.environ.get("CI"):
39+
config.option.reruns = 3
40+
41+
3742
def pytest_generate_tests(metafunc: pytest.Metafunc) -> None:
3843
if "browser_name" in metafunc.fixturenames:
3944
browsers = metafunc.config.option.browser or ["chromium", "firefox", "webkit"]

tests/sync/test_resource_timing.py

-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from typing import Dict
1616

1717
import pytest
18-
from flaky import flaky
1918

2019
from playwright.sync_api import Browser, Page
2120
from tests.server import Server
@@ -33,7 +32,6 @@ def test_should_work(page: Page, server: Server) -> None:
3332
assert timing["responseEnd"] < 10000
3433

3534

36-
@flaky
3735
def test_should_work_for_subresource(
3836
page: Page, server: Server, is_win: bool, is_mac: bool, is_webkit: bool
3937
) -> None:
@@ -51,7 +49,6 @@ def test_should_work_for_subresource(
5149
assert timing["responseEnd"] < 10000
5250

5351

54-
@flaky # Upstream flaky
5552
def test_should_work_for_ssl(
5653
browser: Browser, https_server: Server, is_mac: bool, is_webkit: bool
5754
) -> None:

0 commit comments

Comments
 (0)