Skip to content

Commit 0ff53cd

Browse files
committed
unflake and type
1 parent 42418dd commit 0ff53cd

File tree

2 files changed

+31
-19
lines changed

2 files changed

+31
-19
lines changed

tests/async/test_extension.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import asyncio
1616
from pathlib import Path
17-
from typing import Any, Awaitable, Callable, Dict, Generator, Optional
17+
from typing import Any, AsyncGenerator, Awaitable, Callable, Dict, List, Optional
1818

1919
import pytest
2020

@@ -24,20 +24,22 @@
2424

2525

2626
@pytest.fixture()
27-
def launch_persistent_context(
27+
async def launch_persistent_context(
2828
browser_type: BrowserType,
2929
browser_channel: Optional[str],
3030
tmp_path: Path,
3131
launch_arguments: Dict[str, Any],
3232
is_headless_shell: bool,
33-
) -> Generator[Callable[[str], Awaitable[BrowserContext]], None, None]:
33+
) -> AsyncGenerator[Callable[..., Awaitable[BrowserContext]], None]:
3434
if browser_channel and browser_channel.startswith("chrome"):
3535
pytest.skip(
3636
"--load-extension is not supported in Chrome anymore. https://groups.google.com/a/chromium.org/g/chromium-extensions/c/1-g8EFx2BBY/m/S0ET5wPjCAAJ"
3737
)
3838
if is_headless_shell:
3939
pytest.skip("Headless Shell has no support for extensions")
4040

41+
contexts: List[BrowserContext] = []
42+
4143
async def launch(extension_path: str, **kwargs: Any) -> BrowserContext:
4244
context = await browser_type.launch_persistent_context(
4345
str(tmp_path),
@@ -48,23 +50,27 @@ async def launch(extension_path: str, **kwargs: Any) -> BrowserContext:
4850
f"--load-extension={extension_path}",
4951
],
5052
)
53+
contexts.append(context)
5154
return context
5255

5356
yield launch
5457

58+
for context in contexts:
59+
await context.close()
60+
5561

5662
@pytest.mark.only_browser("chromium")
5763
async def test_should_give_access_to_the_service_worker(
58-
launch_persistent_context: Any,
64+
launch_persistent_context: Callable[..., Awaitable[BrowserContext]],
5965
assetdir: Path,
6066
) -> None:
6167
extension_path = str(assetdir / "extension-mv3-simple")
62-
context: BrowserContext = await launch_persistent_context(extension_path)
68+
context = await launch_persistent_context(extension_path)
6369
service_workers = context.service_workers
6470
service_worker = (
6571
service_workers[0]
6672
if len(service_workers)
67-
else await context.wait_for_event("backgroundpage")
73+
else await context.wait_for_event("serviceworker")
6874
)
6975
assert service_worker
7076
assert service_worker in context.service_workers
@@ -76,19 +82,19 @@ async def test_should_give_access_to_the_service_worker(
7682

7783
@pytest.mark.only_browser("chromium")
7884
async def test_should_give_access_to_the_service_worker_when_recording_video(
79-
launch_persistent_context: Any,
85+
launch_persistent_context: Callable[..., Awaitable[BrowserContext]],
8086
tmp_path: Path,
8187
assetdir: Path,
8288
) -> None:
8389
extension_path = str(assetdir / "extension-mv3-simple")
84-
context: BrowserContext = await launch_persistent_context(
90+
context = await launch_persistent_context(
8591
extension_path, record_video_dir=(tmp_path / "videos")
8692
)
8793
service_workers = context.service_workers
8894
service_worker = (
8995
service_workers[0]
9096
if len(service_workers)
91-
else await context.wait_for_event("backgroundpage")
97+
else await context.wait_for_event("serviceworker")
9298
)
9399
assert service_worker
94100
assert service_worker in context.service_workers
@@ -101,12 +107,12 @@ async def test_should_give_access_to_the_service_worker_when_recording_video(
101107
# https://github.com/microsoft/playwright/issues/32762
102108
@pytest.mark.only_browser("chromium")
103109
async def test_should_report_console_messages_from_content_script(
104-
launch_persistent_context: Any,
110+
launch_persistent_context: Callable[..., Awaitable[BrowserContext]],
105111
assetdir: Path,
106112
server: Server,
107113
) -> None:
108114
extension_path = str(assetdir / "extension-mv3-with-logging")
109-
context: BrowserContext = await launch_persistent_context(extension_path)
115+
context = await launch_persistent_context(extension_path)
110116
page = await context.new_page()
111117
[message, _] = await asyncio.gather(
112118
page.context.wait_for_event(

tests/sync/test_extension.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
from pathlib import Path
1616
from time import sleep
17-
from typing import Any, Callable, Dict, Generator, Optional
17+
from typing import Any, Callable, Dict, Generator, List, Optional
1818

1919
import pytest
2020

@@ -28,14 +28,16 @@ def launch_persistent_context(
2828
tmp_path: Path,
2929
launch_arguments: Dict[str, Any],
3030
is_headless_shell: bool,
31-
) -> Generator[Callable[[str], BrowserContext], None, None]:
31+
) -> Generator[Callable[..., BrowserContext], None, None]:
3232
if browser_channel and browser_channel.startswith("chrome"):
3333
pytest.skip(
3434
"--load-extension is not supported in Chrome anymore. https://groups.google.com/a/chromium.org/g/chromium-extensions/c/1-g8EFx2BBY/m/S0ET5wPjCAAJ"
3535
)
3636
if is_headless_shell:
3737
pytest.skip("Headless Shell has no support for extensions")
3838

39+
contexts: List[BrowserContext] = []
40+
3941
def launch(extension_path: str, **kwargs: Any) -> BrowserContext:
4042
context = browser_type.launch_persistent_context(
4143
str(tmp_path),
@@ -46,23 +48,27 @@ def launch(extension_path: str, **kwargs: Any) -> BrowserContext:
4648
f"--load-extension={extension_path}",
4749
],
4850
)
51+
contexts.append(context)
4952
return context
5053

5154
yield launch
5255

56+
for context in contexts:
57+
context.close()
58+
5359

5460
@pytest.mark.only_browser("chromium")
5561
def test_should_give_access_to_the_service_worker(
56-
launch_persistent_context: Any,
62+
launch_persistent_context: Callable[..., BrowserContext],
5763
assetdir: Path,
5864
) -> None:
5965
extension_path = str(assetdir / "extension-mv3-simple")
60-
context: BrowserContext = launch_persistent_context(extension_path)
66+
context = launch_persistent_context(extension_path)
6167
service_workers = context.service_workers
6268
service_worker = (
6369
service_workers[0]
6470
if len(service_workers)
65-
else context.wait_for_event("backgroundpage")
71+
else context.wait_for_event("serviceworker")
6672
)
6773
assert service_worker
6874
assert service_worker in context.service_workers
@@ -74,19 +80,19 @@ def test_should_give_access_to_the_service_worker(
7480

7581
@pytest.mark.only_browser("chromium")
7682
def test_should_give_access_to_the_service_worker_when_recording_video(
77-
launch_persistent_context: Any,
83+
launch_persistent_context: Callable[..., BrowserContext],
7884
tmp_path: Path,
7985
assetdir: Path,
8086
) -> None:
8187
extension_path = str(assetdir / "extension-mv3-simple")
82-
context: BrowserContext = launch_persistent_context(
88+
context = launch_persistent_context(
8389
extension_path, record_video_dir=(tmp_path / "videos")
8490
)
8591
service_workers = context.service_workers
8692
service_worker = (
8793
service_workers[0]
8894
if len(service_workers)
89-
else context.wait_for_event("backgroundpage")
95+
else context.wait_for_event("serviceworker")
9096
)
9197
assert service_worker
9298
assert service_worker in context.service_workers

0 commit comments

Comments
 (0)