GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — chore: roll to 1.59.1 by pavelfeldman · Pull Request #3050 · microsoft/playwright-python

Conversation

@pavelfeldman

@pavelfeldman Pavel Feldman (pavelfeldman) commented Apr 28, 2026

Copy link
Copy Markdown
Member

Bumps the driver to 1.59.1 and ports the public-API changes that landed upstream during the 1.58 → 1.59 cycle.

New public APIs:

  • Request.existing_response (property)
  • Response.http_version()
  • ConsoleMessage.timestamp (property)
  • BrowserContext.is_closed()
  • BrowserContext.set_storage_state(state | path)
  • BrowserContext.debugger (property) + new Debugger class (request_pause, resume, next, run_to, paused_details + pausedstatechanged event)
  • Page.aria_snapshot(timeout=, depth=, mode=)
  • Page.console_messages(filter=) / Page.page_errors(filter=)
  • Page.clear_console_messages() / Page.clear_page_errors()
  • Page.pick_locator() / Page.cancel_pick_locator()
  • Page.screencast (property) + new Screencast class (start/stop with onFrame callback, show_actions/hide_actions, show_overlay, show_chapter, show_overlays/hide_overlays)
  • Locator.normalize()
  • Locator.aria_snapshot(depth=, mode=)
  • Browser.bind(title, ...) / Browser.unbind()
  • BrowserType.launch(artifacts_dir=) / launch_persistent_context(artifacts_dir=)
  • Tracing.start(live=)
  • CDPSession emits 'close' and forwards 'event' for raw CDP events
  • Dialog.dismiss() swallows TargetClosedError

Renames matching upstream:

  • BrowserType.connect(ws_endpoint=) -> connect(endpoint=) (positional; the wire field also renamed to "endpoint")

Generator/codegen:

  • documentation_provider: emit Promise-without-templates as Any, void as None
  • documentation_provider: emit @typing.overload + generic fallback for single-event classes (CDPSession needed this once it gained 'close')
  • New TypedDicts in _api_structures.py: DebuggerLocation, DebuggerPausedDetails, ScreencastFrame, BrowserBindResult
  • Register Debugger in _object_factory; register Debugger and Screencast in scripts/generate_api.py

Tests added (async + sync mirrors where applicable) for every PORT. expected_api_mismatch.txt is now down to legitimate divergences only.

Tooling:

  • New CLAUDE.md with project orientation
  • Expanded .claude/skills/playwright-roll/SKILL.md with the operational playbook learned over this roll (langs-verification, audit loop, common doclint quirks, channel-owner wiring checklist).

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@pavelfeldman
Pavel Feldman (pavelfeldman) force-pushed the roll/1.59.1 branch from d5d17b5 to d63e8c3 Compare April 28, 2026 21:57
yury-s
Yury Semikhatsky (yury-s) approved these changes Apr 28, 2026
View reviewed changes
@pavelfeldman
Pavel Feldman (pavelfeldman) force-pushed the roll/1.59.1 branch 5 times, most recently from 9789e39 to 8202660 Compare April 29, 2026 00:47
@pavelfeldman @claude
chore: roll to 1.59.1
fac6679
Bumps the driver to 1.59.1 and ports the public-API changes that landed
upstream during the 1.58 → 1.59 cycle.

New public APIs:
- Request.existing_response (property)
- Response.http_version()
- ConsoleMessage.timestamp (property)
- BrowserContext.is_closed()
- BrowserContext.set_storage_state(state | path)
- BrowserContext.debugger (property) + new Debugger class
  (request_pause, resume, next, run_to, paused_details + pausedstatechanged event)
- Page.aria_snapshot(timeout=, depth=, mode=)
- Page.console_messages(filter=) / Page.page_errors(filter=)
- Page.clear_console_messages() / Page.clear_page_errors()
- Page.pick_locator() / Page.cancel_pick_locator()
- Page.screencast (property) + new Screencast class
  (start/stop with onFrame callback, show_actions/hide_actions,
  show_overlay, show_chapter, show_overlays/hide_overlays)
- Locator.normalize()
- Locator.aria_snapshot(depth=, mode=)
- Browser.bind(title, ...) / Browser.unbind()
- BrowserType.launch(artifacts_dir=) / launch_persistent_context(artifacts_dir=)
- Tracing.start(live=)
- CDPSession emits 'close' and forwards 'event' for raw CDP events
- Dialog.dismiss() swallows TargetClosedError

Renames matching upstream:
- BrowserType.connect(ws_endpoint=) -> connect(endpoint=)
  (positional; the wire field also renamed to "endpoint")

Generator/codegen:
- documentation_provider: emit Promise-without-templates as Any, void as None
- documentation_provider: emit @typing.overload + generic fallback for
  single-event classes (CDPSession needed this once it gained 'close')
- New TypedDicts in _api_structures.py:
  DebuggerLocation, DebuggerPausedDetails, ScreencastFrame, BrowserBindResult
- Register Debugger in _object_factory; register Debugger and Screencast
  in scripts/generate_api.py

Tests added (async + sync mirrors where applicable) for every PORT.
expected_api_mismatch.txt is now down to legitimate divergences only.

Tooling:
- New CLAUDE.md with project orientation
- Expanded .claude/skills/playwright-roll/SKILL.md with the operational
  playbook learned over this roll (langs-verification, audit loop, common
  doclint quirks, channel-owner wiring checklist).

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@pavelfeldman
Pavel Feldman (pavelfeldman) force-pushed the roll/1.59.1 branch from 8202660 to fac6679 Compare April 29, 2026 00:54
yury-s
Yury Semikhatsky (yury-s) approved these changes Apr 29, 2026
View reviewed changes
@pavelfeldman
Pavel Feldman (pavelfeldman) merged commit 581316c into main Apr 29, 2026
32 of 42 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@pavelfeldman
Pavel Feldman (pavelfeldman) deleted the roll/1.59.1 branch April 29, 2026 01:39
This was referenced Apr 29, 2026
chore: roll to 1.59.1 #3044
Closed
feat: add AsyncContext/Disposable support #3052
Merged
Simon Knott (Skn0tt) added a commit to Skn0tt/playwright-pytest that referenced this pull request May 18, 2026
@Skn0tt
test(connect_options): adapt to Playwright 1.59.1+ connect() API
3084a49
BrowserType.connect() renamed its first parameter from ws_endpoint to
endpoint (positional) in microsoft/playwright-python#3050. The test
also needs to look at stderr from the subprocess pytester run, since
the WebSocket error log lands there.

Co-authored-by: Copilot <[email protected]>
Simon Knott (Skn0tt) added a commit to microsoft/playwright-pytest that referenced this pull request May 18, 2026
@Skn0tt
chore: require playwright>=1.60 in CI and unskip 1.60 tests (#313)
765e6e9
* chore: require playwright>=1.60 in CI and unskip 1.60 tests

Playwright Python 1.60 has been released, so the tests gated on it can
now run. Pin the dev dependency in local-requirements.txt so CI installs
a compatible version; the package's runtime requirement is unchanged.

Co-authored-by: Copilot <[email protected]>

* test(connect_options): adapt to Playwright 1.59.1+ connect() API

BrowserType.connect() renamed its first parameter from ws_endpoint to
endpoint (positional) in microsoft/playwright-python#3050. The test
also needs to look at stderr from the subprocess pytester run, since
the WebSocket error log lands there.

Co-authored-by: Copilot <[email protected]>

* test: set PYTHONIOENCODING=utf-8 for pytester subprocesses

Pytester decodes subprocess stdout as utf-8, but on Windows the default
stdout encoding is cp1252. When Playwright's assertion failure messages
contain non-ASCII characters (e.g. unicode arrows / multiplication
signs), pytester raises UnicodeDecodeError. Force utf-8 in child Python
processes.

Co-authored-by: Copilot <[email protected]>

---------

Co-authored-by: Copilot <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@yury-s Yury Semikhatsky (yury-s) yury-s approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@pavelfeldman @yury-s
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.