Download Latest Version v1.64.1 source code.zip (1.7 MB) Google Add to Preferred Sources
Home / v1.64.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-10-13 6.4 kB
v1.64.0 source code.tar.gz 2026-10-13 1.5 MB
v1.64.0 source code.zip 2026-10-13 1.7 MB
Totals: 3 Items   3.2 MB 1

🧰 WebMCP

New page.webmcp (playwright.dev) and frame.webmcp (playwright.dev) give access to the tools that a page registers through the experimental WebMCP browser API, so you can test them like any other part of your app:

:::python
browser = chromium.launch(args=["--enable-features=WebMCP"])
page = browser.new_page()
page.goto("https://example.com")

for tool in page.webmcp.tools():
    print(tool["name"], tool["description"])

result = page.webmcp.call_tool("add", {"a": 2, "b": 40})
print(result["content"][0]["text"])  # "42"

Playwright MCP also supports WebMCP by default, with page-defined tools offered to the agent as webmcp_<tool>. Pass --no-webmcp to opt out.

playwright-cli exposes them as well:

:::bash
playwright-cli webmcp-list
playwright-cli webmcp-call search_catalog --params '{"query":"cats"}'

🎬 Better videos

Videos can now be recorded at a custom frame rate, and the decorations for actions are styled with plain CSS:

:::python
page.screencast.start(path="video.webm", size={"width": 1920, "height": 1080}, fps=60)
page.screencast.show_actions(
    style={
        "point": "width: 20px; height: 20px; border-radius: 50%; background: red",
        "highlight": "outline: 2px solid #333; background: rgba(0, 128, 255, .15)",
        "title": "font-size: 16px",
    }
)
  • New record_video_fps option and new fps option in screencast.start() (playwright.dev). Firefox and WebKit currently capture up to 25 frames per second.
  • New style option takes CSS declarations for the point marker, the target highlight and the action title. It replaces the font_size option, which is now deprecated.
  • The cursor stays visible at the last action point, survives navigations and travels along a natural, eased path.
  • Videos are encoded with VP9 instead of VP8, which takes less CPU and produces smaller files of the same or better quality.
  • All video options are also available in Playwright MCP and playwright-cli.

πŸͺ† Locator.within()

New locator.within() (playwright.dev) combines two locators that you already have, reading in the natural order β€” "this button, within that dialog":

:::python
save_button = page.get_by_role("button", name="Save")
dialog = page.get_by_test_id("settings-dialog")

save_button.within(dialog).click()

Relative locators such as locator.nth() (playwright.dev) or locator.first (playwright.dev) are resolved inside each parent separately, which makes column-like queries straightforward:

:::python
# The third cell of every row, not the third cell in the table.
third_column = page.get_by_role("cell").nth(2).within(page.get_by_role("row"))
expect(third_column).to_have_text(["Apple", "Banana", "Cherry"])

New APIs

python request.add_cookies( [{"name": "session-id", "value": "42", "url": "https://example.com"}] ) print(request.cookies("https://example.com")) request.clear_cookies(name="session-id")

Breaking Changes ⚠️

Browser Versions

  • Chromium 156.0.8078.4
  • Mozilla Firefox 157.0
  • WebKit 27.2

This version was also tested against the following stable channels:

  • Google Chrome 155
  • Microsoft Edge 155
Source: README.md, updated 2026-10-13