Skip to content

chore: roll to 1.59.1#3050

Merged
pavelfeldman merged 1 commit into
mainfrom
roll/1.59.1
Apr 29, 2026
Merged

chore: roll to 1.59.1#3050
pavelfeldman merged 1 commit into
mainfrom
roll/1.59.1

Conversation

@pavelfeldman
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).

@pavelfeldman pavelfeldman force-pushed the roll/1.59.1 branch 5 times, most recently from 9789e39 to 8202660 Compare April 29, 2026 00:47
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) <noreply@anthropic.com>
@pavelfeldman pavelfeldman merged commit 581316c into main Apr 29, 2026
32 of 42 checks passed
@pavelfeldman pavelfeldman deleted the roll/1.59.1 branch April 29, 2026 01:39
Skn0tt added a commit to Skn0tt/playwright-pytest that referenced this pull request May 18, 2026
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 <223556219+Copilot@users.noreply.github.com>
Skn0tt added a commit to microsoft/playwright-pytest that referenced this pull request May 18, 2026
* 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 <223556219+Copilot@users.noreply.github.com>

* 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 <223556219+Copilot@users.noreply.github.com>

* 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 <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants