microsoft / microsoft/Webwright

persistent_local_browser broken on Windows: signal.SIGTERM and start_new_session are POSIX-only

Open
#58 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
6k
Forks
385
PR merge metrics
No merged PRs in 30d

Description

Description

persistent_local_browser.py has two Windows incompatibilities that prevent the tool from working on Windows:

  1. signal.SIGTERM not available on Windows (line 187): os.kill(pid, signal.SIGTERM) raises AttributeError because signal.SIGTERM is a Unix-only constant. The release command crashes.

  2. start_new_session is POSIX-only (line 141-142): The process detach logic only applies on POSIX. On Windows, the Chromium subprocess is not detached from the parent, so it gets killed when the parent exits - making the "persistent" browser feature non-functional.

Impact

  • The entire persistent_local_browser tool is broken on Windows
  • _cmd_release crashes with AttributeError when trying to terminate a browser
  • Persistent browser sessions cannot outlive the creating script on Windows
  • Error message is a cryptic Python traceback, not a helpful diagnostic

Suggested Fix

Add Windows code paths:

  • For process detach: use creationflags=subprocess.CREATE_NEW_PROCESS_GROUP on Windows
  • For termination: use taskkill /F /T /PID on Windows as an alternative to os.kill(pid, signal.SIGTERM)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in persistent_local_browser.py at the process creation logic around lines 141-142 and the release termination logic around line 187. Check the Windows subprocess behavior and the existing release command, then verify that a Chromium session survives the parent exit and that release terminates it without an AttributeError.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.