Skip to content

fix(deps): update playwright monorepo to v1.64.1 - #4131

Merged
KATO-Hiro merged 1 commit into
stagingfrom
renovate/playwright-monorepo
Oct 18, 2026
Merged

KATO-Hiro merged 1 commit into
stagingfrom
renovate/playwright-monorepo

Conversation

@renovate

@renovate renovate Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
@playwright/test (source) 1.63.0 → 1.64.1 age confidence
playwright (source) 1.63.0 → 1.64.1 age confidence

Release Notes

microsoft/playwright (@​playwright/test)

v1.64.1

Compare Source

Bug Fixes
  • #​43247 [Bug]: _electron.launch intermittently loses a packaged app's first window since 1.64.0
  • #​43242 [Regression]: Chromium 155+ aborts a preflighted cross-origin redirect whenever any route is registered (net::ERR_ABORTED)

v1.64.0

Compare Source

🧰 WebMCP

New page.webmcp and frame.webmcp 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:

const browser = await chromium.launch({ args: ['--enable-features=WebMCP'] });
const page = await browser.newPage();
await page.goto('https://example.com');

for (const tool of await page.webmcp.tools())
  console.log(tool.name, tool.description);

const result = await page.webmcp.callTool('add', { a: 2, b: 40 });
console.log(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:

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:

// playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    video: {
      mode: 'on',
      size: { width: 1920, height: 1080 },
      fps: 60,
      show: {
        actions: {
          style: {
            point: 'width: 20px; height: 20px; border-radius: 50%; background: red',
            highlight: 'outline: 2px solid #&#8203;333; background: rgba(0, 128, 255, .15)',
            title: 'font-size: 16px',
          },
        },
      },
    },
  },
});
  • New fps option in testOptions.video, recordVideo and
    screencast.start(). 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 fontSize 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.

🎯 Test runner

  • New testProject.default option keeps a project in the config without running it by default. You can configure every browser you care about, and let a plain npx playwright test run just your favourite one:

    // playwright.config.ts
    import { defineConfig, devices } from '@playwright/test';
    
    export default defineConfig({
      projects: [
        { name: 'chromium', use: devices['Desktop Chrome'] },
        { name: 'firefox', use: devices['Desktop Firefox'], default: false },
        { name: 'webkit', use: devices['Desktop Safari'], default: false },
      ],
    });
    npx playwright test                     # runs chromium only
    npx playwright test --project=firefox   # runs firefox
    npx playwright test --project="*"       # runs all three, for example on CI
  • New --shuffle command line option schedules tests in a random order, which helps to find tests that accidentally depend on each other.

    npx playwright test --shuffle
    # Running 42 tests using 4 workers, shuffle seed 271828182
    # ...
    
    # Pass the seed to reproduce the same order.
    npx playwright test --shuffle 271828182
  • New lock option in test.describe.configure() adds test locks to all tests in a file or a group:

    test.describe.configure({ lock: 'user-settings' });
  • New type option of toHaveScreenshot in testConfig.expect stores all unnamed screenshots as WebP:

    // playwright.config.ts
    export default defineConfig({
      expect: {
        toHaveScreenshot: { type: 'webp' },
      },
    });

🪆 Locator.within()

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

const saveButton = page.getByRole('button', { name: 'Save' });
const dialog = page.getByTestId('settings-dialog');

await saveButton.within(dialog).click();

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

// The third cell of every row, not the third cell in the table.
const thirdColumn = page.getByRole('cell').nth(2).within(page.getByRole('row'));
await expect(thirdColumn).toHaveText(['Apple', 'Banana', 'Cherry']);

New APIs

Breaking changes ⚠️

  • screen property is now forwarded from the device descriptors. If you use ...devices['Desktop Chrome'] and alike, window.screen and media queries now see the emulated screen size. You can opt-out by explicitly setting screen to undefined:

    // playwright.config.ts
    export default defineConfig({
      use: {
        ...devices['Desktop Chrome'],
        screen: undefined,
      },
    });
  • JSX in your test files now follows your tsconfig.json. Playwright compiles JSX in test files according to the jsx, jsxFactory, jsxFragmentFactory and jsxImportSource tsconfig options, and defaults to the automatic runtime from react/jsx-runtime.

  • --update-snapshots=missing now passes the test run. Tests that only create missing snapshots now pass in the 'missing' mode of testConfig.updateSnapshots, so that CI can generate new snapshots and verify the existing ones in a single run. The mode used when the option is not specified is now called 'default' and behaves as before: missing snapshots are written and the test fails.

  • Elements inside hidden iframes are considered hidden. Elements inside an iframe that is not visible, for example with visibility: hidden, are now considered hidden by actions, locator.isVisible() and expect(locator).toBeVisible().

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

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@coderabbitai

coderabbitai Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: AtCoder-NoviSteps/AtCoderNoviSteps/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 065369fc-8e3f-47b9-8e16-4bc76fde862a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@renovate
renovate Bot deployed to preview October 8, 2026 21:47 Active
@renovate
renovate Bot force-pushed the renovate/playwright-monorepo branch from ef51547 to 40aef1a Compare October 10, 2026 11:03
@renovate
renovate Bot deployed to preview October 10, 2026 11:04 Active
@renovate
renovate Bot force-pushed the renovate/playwright-monorepo branch from 40aef1a to 9475cc2 Compare October 12, 2026 22:00
@renovate
renovate Bot deployed to preview October 12, 2026 22:01 Active
@renovate
renovate Bot force-pushed the renovate/playwright-monorepo branch from 9475cc2 to 5cb7782 Compare October 12, 2026 22:05
@renovate
renovate Bot deployed to preview October 12, 2026 22:06 Active
@renovate
renovate Bot force-pushed the renovate/playwright-monorepo branch from 5cb7782 to ba0a167 Compare October 13, 2026 13:02
@renovate
renovate Bot deployed to preview October 13, 2026 13:03 Active
@renovate
renovate Bot force-pushed the renovate/playwright-monorepo branch from ba0a167 to 72739ca Compare October 14, 2026 12:20
@renovate
renovate Bot deployed to preview October 14, 2026 12:21 Active
@renovate
renovate Bot force-pushed the renovate/playwright-monorepo branch from 72739ca to 5021d7b Compare October 15, 2026 16:58
@renovate renovate Bot changed the title fix(deps): update playwright monorepo to v1.64.0 fix(deps): update playwright monorepo to v1.64.1 Oct 15, 2026
@renovate
renovate Bot deployed to preview October 15, 2026 16:59 Active
@renovate
renovate Bot force-pushed the renovate/playwright-monorepo branch from 5021d7b to 0dfffb4 Compare October 18, 2026 08:31
@renovate
renovate Bot deployed to preview October 18, 2026 08:33 Active
@KATO-Hiro
KATO-Hiro merged commit 395a542 into staging Oct 18, 2026
4 checks passed
@KATO-Hiro
KATO-Hiro deleted the renovate/playwright-monorepo branch October 18, 2026 08:49
@KATO-Hiro

Copy link
Copy Markdown
Collaborator

結論

#4131(Playwright 1.63.0 → 1.64.1)は 1.64.x 起因の E2E 失敗がないと確認し、2026-10-18 にマージした(395a5424)。
台帳の記録は ledger.md の 2026-10-18 の節を参照する。

手元で検証した理由

  • CI の E2E ジョブは .github/workflows/ci.yml でコメントアウトされており、CI の成功は E2E の成功を意味しない。
  • 1.64.0 は device descriptor の screen を context に反映するよう変わり、descriptor を browser.newContext へ渡す e2e/dark_mode.spec.ts(iPhone 12・Desktop Chrome)に該当した。
  • 1.64.1 の route 修正(#43242)は、唯一 page.route を使う e2e/robots.spec.ts で確かめた。
  • 同梱ブラウザーも更新されるため、旧バイナリでの実行は新版の検証にならない。

意思決定

  • 更新前のベースラインを先に取る: CI で E2E が動いていないため、既存の失敗と更新による失敗を区別できるようにした。
  • Renovate に rebase させてから検証する: マージ後と同じ依存の組み合わせを確かめるため。
  • devcontainer で実行する: ホスト実行は Node・pnpm の版合わせが必要で、普段の隔離環境と条件が変わるため採用しなかった。
  • 互換設定(screen: undefined など)や新しいテストは事前に入れない: 既存の dark_mode.spec.ts が該当経路を通るため、失敗が出た場合にだけ検討する方針とした。
  • CI の E2E ジョブの有効化は範囲外: DB・secret の準備が必要なため。

devcontainer での注意点

  • ブラウザーは Dockerfile で PLAYWRIGHT_BROWSERS_PATH=/ms-playwright にビルド時に入る。/ms-playwright は root 所有で、コンテナ内の sudo はファイアウォール専用のため、pnpm exec playwright install は実行できない。版を変えるには、ブランチを切り替えてから Rebuild する。
  • Rebuild 後は pnpm exec playwright install --dry-run chromium の Install location で、ブラウザーが入れ替わったことを確かめる(今回は chromium-1243 → chromium-1248)。
  • Rebuild で /tmp(scratchpad を含む)は消える。比較に使うログは Rebuild 前に別の場所へ退避する。
  • ログインする spec は seed の admin・guest を使うため、pnpm db:seed が必要。

結果

環境 結果
staging 6d343992・1.63.0・chromium-1243 105件中103成功・1失敗・1スキップ
PR 0dfffb4b・1.64.1・chromium-1248 同上(失敗・スキップは同じテスト)
  • dark_mode.spec.ts・robots.spec.ts は両版とも全件成功した。
  • スキップの workbooks_list.spec.ts「動的計画法」は、該当する問題集がない場合の条件付き skip で想定どおり。
  • 失敗の user_edit.spec.ts「基本情報 tab is active by default」は 1.63.0 でも毎回失敗する既存の失敗。6696b604(2026-09-19)で seed の guest を AtCoder 認証済みにしたため、/users/edit が AtCoder タブを開く。テストが seed に追従していない。Playwright とは無関係で、upstream-pr-review/plan.md の宿題12として残した(Issue 未起票)。
  • CI の結果は gh 未認証で取得できず、PR の Checks タブを人が確認した。

This branch was successfully deployed

1 active deployment
preview — 0dfffb4b Deployed Oct 18, 2026 by renovate[bot] via preview #9007
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.

1 participant