fix: ensure pw.stop() runs even if browser.close() raises or is cancelled (#60)

This commit is contained in:
dgtlmoon
2026-03-15 17:51:03 +01:00
committed by GitHub
parent 132cafe13c
commit 6550f3ad6c
+10
View File
@@ -120,7 +120,9 @@ def launch(
_original_close = browser.close _original_close = browser.close
def _close_with_cleanup() -> None: def _close_with_cleanup() -> None:
try:
_original_close() _original_close()
finally:
pw.stop() pw.stop()
browser.close = _close_with_cleanup browser.close = _close_with_cleanup
@@ -203,7 +205,9 @@ async def launch_async( # noqa: C901
_original_close = browser.close _original_close = browser.close
async def _close_with_cleanup() -> None: async def _close_with_cleanup() -> None:
try:
await _original_close() await _original_close()
finally:
await pw.stop() await pw.stop()
browser.close = _close_with_cleanup browser.close = _close_with_cleanup
@@ -314,7 +318,9 @@ def launch_persistent_context(
_original_close = context.close _original_close = context.close
def _close_with_cleanup() -> None: def _close_with_cleanup() -> None:
try:
_original_close() _original_close()
finally:
pw.stop() pw.stop()
context.close = _close_with_cleanup context.close = _close_with_cleanup
@@ -427,7 +433,9 @@ async def launch_persistent_context_async(
_original_close = context.close _original_close = context.close
async def _close_with_cleanup() -> None: async def _close_with_cleanup() -> None:
try:
await _original_close() await _original_close()
finally:
await pw.stop() await pw.stop()
context.close = _close_with_cleanup context.close = _close_with_cleanup
@@ -514,7 +522,9 @@ def launch_context(
_original_ctx_close = context.close _original_ctx_close = context.close
def _close_context_with_cleanup() -> None: def _close_context_with_cleanup() -> None:
try:
_original_ctx_close() _original_ctx_close()
finally:
browser.close() browser.close()
context.close = _close_context_with_cleanup context.close = _close_context_with_cleanup