メインコンテンツへスキップ

リリースノート

バージョン1.52

ハイライト

  • 要素の個々のクラス名を人間工学的にアサートするための新しいメソッドExpect(Locator).ToContainClassAsync()が追加されました。

      await Expect(Page.GetByRole(AriaRole.Listitem, new() { Name = "Ship v1.52" })).ToContainClassAsync("done");
  • Ariaスナップショットに、厳密なマッチングのための/childrenと、リンクのための/urlという2つの新しいプロパティが追加されました。

    await Expect(locator).ToMatchAriaSnapshotAsync(@"
    - list
    - /children: equal
    - listitem: Feature A
    - listitem:
    - link ""Feature B"":
    - /url: ""https://playwright.dokyumento.jp""
    ");

その他

  • ApiRequest.NewContextAsync()に、リダイレクトの最大数を制御するための新しいオプションMaxRedirectsが追加されました。
  • Locator.AriaSnapshotAsync()に、スナップショット内の各要素の参照を生成し、後で要素を特定するために使用できる新しいオプションRefが追加されました。
  • HTMLレポーターが、!@my-tag!my-file.spec.ts、または!p:my-projectによるNOTフィルタリングをサポートするようになりました。

破壊的変更

  • Page.Frame()ではベースURLのマッチングがサポートされなくなりました。より便利なAPIであるPage.FrameLocator()への移行を推奨します。
  • Page.RouteAsync()などのメソッドにおけるグロブURLパターンは、?[]をサポートしなくなりました。代わりに正規表現を使用することを推奨します。
  • メソッドRoute.ContinueAsync()では、Cookieヘッダーをオーバーライドできなくなりました。Cookieヘッダーが提供された場合、それは無視され、クッキーはブラウザのクッキーストアからロードされます。カスタムクッキーを設定するには、BrowserContext.AddCookiesAsync()を使用してください。
  • macOS 13は現在非推奨であり、WebKitのアップデートはこれ以上受け取れません。最新のWebKitの改善を引き続き利用するためには、より新しいmacOSバージョンにアップグレードしてください。

ブラウザバージョン

  • Chromium 136.0.7103.25
  • Mozilla Firefox 137.0
  • WebKit 18.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 135
  • Microsoft Edge 135

バージョン1.51

ハイライト

  • BrowserContext.StorageStateAsync()の新しいオプションIndexedDBにより、IndexedDBのコンテンツを保存および復元できます。アプリケーションがFirebase認証などの認証トークンを保存するためにIndexedDB APIを使用する場合に便利です。

    認証ガイドに従った例を以下に示します

    // Save storage state into the file. Make sure to include IndexedDB.
    await context.StorageStateAsync(new()
    {
    Path = "../../../playwright/.auth/state.json",
    IndexedDB = true
    });

    // Create a new context with the saved storage state.
    var context = await browser.NewContextAsync(new()
    {
    StorageStatePath = "../../../playwright/.auth/state.json"
    });
  • Locator.Filter()の新しいオプションVisibleにより、表示されている要素のみをマッチングできます。

    // Ignore invisible todo items.
    var todoItems = Page.GetByTestId("todo-item").Filter(new() { Visible = true });
    // Check there are exactly 3 visible ones.
    await Expect(todoItems).ToHaveCountAsync(3);
  • メソッドPage.EmulateMediaAsync()Browser.NewContextAsync()に新しいオプションContrastが追加され、prefers-contrastメディア機能をエミュレートできます。

  • 新しいオプションFailOnStatusCodeにより、APIRequestContextを介して行われるすべてのフェッチリクエストが、2xxおよび3xx以外の応答コードでエラーをスローするようになります。

ブラウザバージョン

  • Chromium 134.0.6998.35
  • Mozilla Firefox 135.0
  • WebKit 18.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 133
  • Microsoft Edge 133

バージョン1.50

Xunitのサポート

その他

UIの更新

  • Codegenに、ariaスナップショットを生成するための要素選択ボタンが追加されました。
  • トレース内のアクションAPI呼び出しに、追加の詳細(押されたキーなど)が表示されるようになりました。
  • トレースにおけるcanvasコンテンツの表示はエラーが発生しやすいため、デフォルトで無効になりました。UI設定の「Display canvas content」で有効にすることができます。
  • 「Call」および「Network」パネルで、追加の時間情報が表示されるようになりました。

破壊的変更

ブラウザバージョン

  • Chromium 133.0.6943.16
  • Mozilla Firefox 134.0
  • WebKit 18.2

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 132
  • Microsoft Edge 132

バージョン1.49

Ariaスナップショット

新しいアサーションExpect(Locator).ToMatchAriaSnapshotAsync()は、YAMLで表現された期待されるアクセシビリティツリーと比較することでページ構造を検証します。

await page.GotoAsync("https://playwright.dokyumento.jp");
await Expect(page.Locator("body")).ToMatchAriaSnapshotAsync(@"
- banner:
- heading /Playwright enables reliable/ [level=1]
- link ""Get started""
- link ""Star microsoft/playwright on GitHub""
- main:
- img ""Browsers (Chromium, Firefox, WebKit)""
- heading ""Any browser • Any platform • One API""
");

このアサーションは、テストジェネレーターを使用するか、Locator.AriaSnapshotAsync()を呼び出すことで生成できます。

詳細については、ariaスナップショットガイドを参照してください。

トレースグループ

新しいメソッドTracing.GroupAsync()により、トレースビューアーでアクションを視覚的にグループ化できます。

// All actions between GroupAsync and GroupEndAsync
// will be shown in the trace viewer as a group.
await Page.Context.Tracing.GroupAsync("Open Playwright.dev > API");
await Page.GotoAsync("https://playwright.dokyumento.jp/");
await Page.GetByRole(AriaRole.Link, new() { Name = "API" }).ClickAsync();
await Page.Context.Tracing.GroupEndAsync();

破壊的変更: chromeおよびmsedgeチャネルが新しいヘッドレスモードに切り替わります

この変更は、playwright.config.tsで以下のいずれかのチャネルを使用している場合に影響します。

  • chromechrome-devchrome-beta、またはchrome-canary
  • msedgemsedge-devmsedge-beta、またはmsedge-canary

Playwright v1.49に更新後、テストスイートを実行してください。引き続きパスする場合は問題ありません。パスしない場合は、スナップショットを更新し、PDFビューアや拡張機能に関するテストコードを一部調整する必要があるかもしれません。詳細については、issue #33566を参照してください。

新しいChromiumヘッドレスを試す

'chromium'チャネルを使用することで、新しいヘッドレスモードをオプトインできます。Chromeの公式ドキュメントによると

一方、新しいヘッドレスは実際のChromeブラウザであり、より本物で信頼性が高く、より多くの機能を提供します。これにより、高精度のエンドツーエンドWebアプリテストやブラウザ拡張機能テストに適しています。

発生しうる破壊的変更のリストとChromiumヘッドレスの詳細については、issue #33566を参照してください。オプトイン後に問題が見つかった場合は、issueを提出してください。

runsettings.xml
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
<LaunchOptions>
<Channel>chromium</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
dotnet test -- Playwright.BrowserName=chromium Playwright.LaunchOptions.Channel=chromium

その他

  • Ubuntu 20.04およびDebian 11でのWebKitのアップデートはこれ以上行われません。OSを新しいバージョンに更新することを推奨します。
  • スナップショット内の<canvas>要素でプレビューが描画されるようになりました。

ブラウザバージョン

  • Chromium 131.0.6778.33
  • Mozilla Firefox 132.0
  • WebKit 18.2

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 130
  • Microsoft Edge 130

バージョン1.48

WebSocketルーティング

新しいメソッドPage.RouteWebSocketAsync()BrowserContext.RouteWebSocketAsync()により、ページ内で開始されたWebSocket接続をインターセプト、変更、モックすることができます。以下は、"request"に対して"response"で応答することでWebSocket通信をモックする簡単な例です。

await page.RouteWebSocketAsync("/ws", ws => {
ws.OnMessage(frame => {
if (frame.Text == "request")
ws.Send("response");
});
});

詳細については、WebSocketRouteを参照してください。

UIの更新

  • HTMLレポートに、アノテーションとテストロケーションの新しい「コピー」ボタンが追加されました。
  • Route.FulfillAsync()のようなルートメソッド呼び出しは、レポートおよびトレースビューアーに表示されなくなりました。代わりにネットワークタブで、どのネットワークリクエストがルーティングされたかを確認できます。
  • ネットワークタブの要求に、新しい「cURLとしてコピー」および「fetchとしてコピー」ボタンが追加されました。

その他

  • 新しいメソッドPage.RequestGCAsync()はメモリリークの検出に役立つ場合があります。
  • APIRequestContextによって行われたリクエストは、HARに詳細なタイミング情報とセキュリティ情報を記録するようになりました。

ブラウザバージョン

  • Chromium 130.0.6723.19
  • Mozilla Firefox 130.0
  • WebKit 18.0

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 129
  • Microsoft Edge 129

バージョン1.47

ネットワークタブの改善

トレースビューアーのネットワークタブにいくつかの素晴らしい改善が加えられました。

  • アセットタイプとURLによるフィルタリング
  • クエリ文字列パラメーターのより良い表示
  • フォントアセットのプレビュー

Network tab now has filters

その他

  • mcr.microsoft.com/playwright/dotnet:v1.47.0は、Ubuntu 24.04 NobleをベースにしたPlaywrightイメージを提供するようになりました。22.04 jammyベースのイメージを使用するには、代わりにmcr.microsoft.com/playwright/dotnet:v1.47.0-jammyを使用してください。
  • Playwright Dockerイメージの:latest/:focal/:jammyタグは公開されなくなりました。安定性と再現性を向上させるために、特定のバージョンにピン留めしてください。
  • TLSクライアント証明書は、ファイルパスの代わりにClientCertificates.CertClientCertificates.Keyをバイト配列として渡すことで、メモリから渡せるようになりました。
  • Locator.SelectOptionAsync()におけるNoWaitAfterは非推奨になりました。
  • GitHub Actions macos-13上でWebKitのWebGLが誤動作するという報告が確認されています。GitHub Actionsをmacos-14にアップグレードすることを推奨します。

ブラウザバージョン

  • Chromium 129.0.6668.29
  • Mozilla Firefox 130.0
  • WebKit 18.0

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 128
  • Microsoft Edge 128

バージョン1.46

TLSクライアント証明書

PlaywrightはTLSクライアント認証によって指定されたとおり、サーバーが検証できるようにクライアントサイド証明書を提供できるようになりました。

Browser.NewContextAsync()ApiRequest.NewContextAsync()のパラメータとしてクライアント証明書を提供できます。以下のスニペットはhttps://example.comのクライアント証明書を設定します

var context = await Browser.NewContextAsync(new() {
ClientCertificates = [
new() {
Origin = "https://example.com",
CertPath = "client-certificates/cert.pem",
KeyPath = "client-certificates/key.pem",
}
]
});

トレースビューアーの更新

  • テキスト添付ファイルの内容が、添付ファイルペインでインライン表示されるようになりました。
  • Route.ContinueAsync()のようなルーティングアクションの表示/非表示を切り替える新しい設定が追加されました。
  • ネットワーク詳細タブに、リクエストメソッドとステータスが表示されるようになりました。
  • ソースファイルの場所をクリップボードにコピーする新しいボタンが追加されました。
  • メタデータペインにBaseURLが表示されるようになりました。

その他

  • ApiRequestContext.FetchAsync()に新しいmaxRetriesオプションが追加され、ECONNRESETネットワークエラー時に再試行します。

ブラウザバージョン

  • Chromium 128.0.6613.18
  • Mozilla Firefox 128.0
  • WebKit 18.0

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 127
  • Microsoft Edge 127

バージョン1.45

クロック

新しいClock APIを利用することで、時間関連の動作を検証するためにテスト内で時間を操作・制御できます。このAPIは、以下を含む多くの一般的なシナリオに対応しています。

  • 事前定義された時間でのテスト;
  • 一貫した時間とタイマーの維持;
  • 非アクティブ状態の監視;
  • 手動での時間経過。
// Initialize clock with some time before the test time and let the page load naturally.
// `Date.now` will progress as the timers fire.
await Page.Clock.InstallAsync(new()
{
TimeDate = new DateTime(2024, 2, 2, 8, 0, 0)
});
await Page.GotoAsync("https://:3333");

// Pretend that the user closed the laptop lid and opened it again at 10am.
// Pause the time once reached that point.
await Page.Clock.PauseAtAsync(new DateTime(2024, 2, 2, 10, 0, 0));

// Assert the page state.
await Expect(Page.GetByTestId("current-time")).ToHaveTextAsync("2/2/2024, 10:00:00 AM");

// Close the laptop lid again and open it at 10:30am.
await Page.Clock.FastForwardAsync("30:00");
await Expect(Page.GetByTestId("current-time")).ToHaveTextAsync("2/2/2024, 10:30:00 AM");

詳細については、クロックガイドを参照してください。

その他

  • メソッドLocator.SetInputFilesAsync()が、<input type=file webkitdirectory>要素のディレクトリアップロードをサポートするようになりました。

    await page.GetByLabel("Upload directory").SetInputFilesAsync("mydir");
  • Locator.ClickAsync()Locator.PressAsync()など、複数のメソッドがControlOrMeta修飾キーをサポートするようになりました。このキーはmacOSではMetaに、WindowsとLinuxではControlにマッピングされます。

    // Press the common keyboard shortcut Control+S or Meta+S to trigger a "Save" operation.
    await page.Keyboard.PressAsync("ControlOrMeta+S");
  • ApiRequest.NewContextAsync()に新しいプロパティhttpCredentials.sendが追加され、Authorizationヘッダーを常に送信するか、401 Unauthorizedに応答してのみ送信するかを選択できるようになりました。

  • PlaywrightがUbuntu 24.04でChromium、Firefox、WebKitをサポートするようになりました。

  • v1.45はmacOS 12 MontereyのWebKitアップデートを受け取る最後のリリースです。最新のWebKitを使い続けるためにmacOSを更新してください。

ブラウザバージョン

  • Chromium 127.0.6533.5
  • Mozilla Firefox 127.0
  • WebKit 17.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 126
  • Microsoft Edge 126

バージョン1.44

新しいAPI

アクセシビリティアサーション

  • Expect(Locator).ToHaveAccessibleNameAsync()は、要素が指定されたアクセシブルネームを持っているかチェックします。

    var locator = Page.GetByRole(AriaRole.Button);
    await Expect(locator).ToHaveAccessibleNameAsync("Submit");
  • Expect(Locator).ToHaveAccessibleDescriptionAsync()は、要素が指定されたアクセシブルディスクリプションを持っているかチェックします。

    var locator = Page.GetByRole(AriaRole.Button);
    await Expect(locator).ToHaveAccessibleDescriptionAsync("Upload a photo");
  • Expect(Locator).ToHaveRoleAsync()は、要素が指定されたARIAロールを持っているかチェックします。

    var locator = Page.GetByTestId("save-button");
    await Expect(locator).ToHaveRoleAsync(AriaRole.Button);

ロケーターハンドラー

  • Page.AddLocatorHandlerAsync()で追加されたハンドラーを実行した後、Playwrightはハンドラーをトリガーしたオーバーレイがもはや表示されなくなるまで待機するようになりました。この動作は、新しいNoWaitAfterオプションでオプトアウトできます。
  • Page.AddLocatorHandlerAsync()で新しいTimesオプションを使用して、ハンドラーが実行される最大回数を指定できるようになりました。
  • Page.AddLocatorHandlerAsync()のハンドラーが、引数としてロケーターを受け入れるようになりました。
  • 以前追加されたロケーターハンドラーを削除するための新しいPage.RemoveLocatorHandlerAsync()メソッド。
var locator = Page.GetByText("This interstitial covers the button");
await Page.AddLocatorHandlerAsync(locator, async (overlay) =>
{
await overlay.Locator("#close").ClickAsync();
}, new() { Times = 3, NoWaitAfter = true });
// Run your tests that can be interrupted by the overlay.
// ...
await Page.RemoveLocatorHandlerAsync(locator);

その他のオプション

  • 新しいメソッドFormData.Append()は、APIRequestContext.FetchAsync()Multipartオプションで同じ名前の繰り返しフィールドを指定できます。

    var formData = Context.APIRequest.CreateFormData();
    formData.Append("file", new FilePayload()
    {
    Name = "f1.js",
    MimeType = "text/javascript",
    Buffer = System.Text.Encoding.UTF8.GetBytes("var x = 2024;")
    });
    formData.Append("file", new FilePayload()
    {
    Name = "f2.txt",
    MimeType = "text/plain",
    Buffer = System.Text.Encoding.UTF8.GetBytes("hello")
    });
    var response = await Context.APIRequest.PostAsync("https://example.com/uploadFiles", new() { Multipart = formData });
  • Expect(Page).ToHaveURLAsync()IgnoreCaseオプションをサポートするようになりました。

ブラウザバージョン

  • Chromium 125.0.6422.14
  • Mozilla Firefox 125.0.1
  • WebKit 17.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 124
  • Microsoft Edge 124

バージョン1.43

新しいAPI

  • メソッドBrowserContext.ClearCookiesAsync()が、一部のクッキーのみを削除するためのフィルターをサポートするようになりました。

    // Clear all cookies.
    await Context.ClearCookiesAsync();
    // New: clear cookies with a particular name.
    await Context.ClearCookiesAsync(new() { Name = "session-id" });
    // New: clear cookies for a particular domain.
    await Context.ClearCookiesAsync(new() { Domain = "my-origin.com" });
  • 新しいプロパティLocator.ContentFrameは、LocatorオブジェクトをFrameLocatorに変換します。これは、どこかで取得したLocatorオブジェクトがあり、後でフレーム内のコンテンツと対話したい場合に便利です。

    var locator = Page.Locator("iframe[name='embedded']");
    // ...
    var frameLocator = locator.ContentFrame;
    await frameLocator.GetByRole(AriaRole.Button).ClickAsync();
  • 新しいプロパティFrameLocator.Ownerは、FrameLocatorオブジェクトをLocatorに変換します。これは、どこかで取得したFrameLocatorオブジェクトがあり、後でiframe要素と対話したい場合に便利です。

    var frameLocator = page.FrameLocator("iframe[name='embedded']");
    // ...
    var locator = frameLocator.Owner;
    await Expect(locator).ToBeVisibleAsync();

ブラウザバージョン

  • Chromium 124.0.6367.8
  • Mozilla Firefox 124.0
  • WebKit 17.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 123
  • Microsoft Edge 123

バージョン1.42

新しいロケーターハンドラー

新しいメソッドPage.AddLocatorHandlerAsync()は、指定された要素が表示され、Playwrightアクションをブロックする可能性がある場合に呼び出されるコールバックを登録します。このコールバックはオーバーレイを削除できます。以下は、クッキーダイアログが表示されたときにそれを閉じる例です。

// Setup the handler.
await Page.AddLocatorHandlerAsync(
Page.GetByRole(AriaRole.Heading, new() { Name = "Hej! You are in control of your cookies." }),
async () =>
{
await Page.GetByRole(AriaRole.Button, new() { Name = "Accept all" }).ClickAsync();
});
// Write the test as usual.
await Page.GotoAsync("https://www.ikea.com/");
await Page.GetByRole(AriaRole.Link, new() { Name = "Collection of blue and white" }).ClickAsync();
await Expect(Page.GetByRole(AriaRole.Heading, new() { Name = "Light and easy" })).ToBeVisibleAsync();

新しいAPI

アナウンス

  • ⚠️ Ubuntu 18はサポートされなくなりました。

ブラウザバージョン

  • Chromium 123.0.6312.4
  • Mozilla Firefox 123.0
  • WebKit 17.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 122
  • Microsoft Edge 123

バージョン1.41

新しいAPI

ブラウザバージョン

  • Chromium 121.0.6167.57
  • Mozilla Firefox 121.0
  • WebKit 17.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 120
  • Microsoft Edge 120

バージョン1.40

テストジェネレーターの更新

Playwright Test Generator

アサーションを生成するための新しいツール

アサーションを含む生成されたテストの例を以下に示します

await Page.GotoAsync("https://playwright.dokyumento.jp/");
await Page.GetByRole(AriaRole.Link, new() { Name = "Get started" }).ClickAsync();
await Expect(Page.GetByLabel("Breadcrumbs").GetByRole(AriaRole.List)).ToContainTextAsync("Installation");
await Expect(Page.GetByLabel("Search")).ToBeVisibleAsync();
await Page.GetByLabel("Search").ClickAsync();
await Page.GetByPlaceholder("Search docs").FillAsync("locator");
await Expect(Page.GetByPlaceholder("Search docs")).ToHaveValueAsync("locator");

新しいAPI

その他の変更

ブラウザバージョン

  • Chromium 120.0.6099.28
  • Mozilla Firefox 119.0
  • WebKit 17.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 119
  • Microsoft Edge 119

バージョン1.39

常緑ブラウザのアップデート。

ブラウザバージョン

  • Chromium 119.0.6045.9
  • Mozilla Firefox 118.0.1
  • WebKit 17.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 118
  • Microsoft Edge 118

バージョン1.38

トレースビューアーの更新

Playwright Trace Viewer

  1. 時間範囲のズーム。
  2. ネットワークパネルの再設計。

新しいAPI

非推奨

ブラウザバージョン

  • Chromium 117.0.5938.62
  • Mozilla Firefox 117.0
  • WebKit 17.0

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 116
  • Microsoft Edge 116

バージョン1.37

📚 Debian 12 Bookwormのサポート

PlaywrightはChromium、Firefox、WebKitにおいて、x86_64とarm64の両方でDebian 12 Bookwormをサポートするようになりました。何か問題が発生した場合はお知らせください!

Linuxのサポート状況は以下の通りです

Ubuntu 20.04Ubuntu 22.04Debian 11Debian 12
Chromium
WebKit
Firefox

ブラウザバージョン

  • Chromium 116.0.5845.82
  • Mozilla Firefox 115.0
  • WebKit 17.0

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 115
  • Microsoft Edge 115

バージョン1.36

🏝️ 夏季メンテナンスリリース。

ブラウザバージョン

  • Chromium 115.0.5790.75
  • Mozilla Firefox 115.0
  • WebKit 17.0

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 114
  • Microsoft Edge 114

バージョン1.35

ハイライト

  • メソッドPage.ScreenshotAsync()Locator.ScreenshotAsync()に、デフォルトのマスキング色を変更するための新しいオプションMaskColorが追加されました。

  • ブラウザバイナリをアンインストールするための新しいuninstall CLIコマンド

    $ pwsh bin/Debug/netX/playwright.ps1 uninstall # remove browsers installed by this installation
    $ pwsh bin/Debug/netX/playwright.ps1 uninstall --all # remove all ever-install Playwright browsers

ブラウザバージョン

  • Chromium 115.0.5790.13
  • Mozilla Firefox 113.0
  • WebKit 16.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 114
  • Microsoft Edge 114

バージョン1.34

ハイライト

  • 両方のロケーターに一致するロケーターを作成するための新しいLocator.And()

    var button = page.GetByRole(AriaRole.BUTTON).And(page.GetByTitle("Subscribe"));
  • 指定されたブラウザコンテキストからのすべてのダイアログとコンソールメッセージを購読するための新しいイベントBrowserContext.ConsoleBrowserContext.Dialog。イベントソースを特定するには、新しいメソッドConsoleMessage.PageDialog.Pageを使用してください。

ブラウザバージョン

  • Chromium 114.0.5735.26
  • Mozilla Firefox 113.0
  • WebKit 16.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 113
  • Microsoft Edge 113

バージョン1.33

ロケーターの更新

  • 2つのロケーターのいずれかに一致するロケーターを作成するには、Locator.Or()を使用します。「新しいメール」ボタンをクリックしたいが、セキュリティ設定ダイアログが代わりに表示されることがあるというシナリオを考えてみてください。この場合、「新しいメール」ボタンまたはダイアログのいずれかを待ち、それに応じて行動することができます。

    var newEmail = Page.GetByRole(AriaRole.Button, new() { Name = "New email" });
    var dialog = Page.GetByText("Confirm security settings");
    await Expect(newEmail.Or(dialog)).ToBeVisibleAsync();
    if (await dialog.IsVisibleAsync())
    await Page.GetByRole(AriaRole.Button, new() { Name = "Dismiss" }).ClickAsync();
    await newEmail.ClickAsync();
  • Locator.Filter()で新しいオプションHasNotHasNotText|HasNotTextRegexを使用して、特定の条件に**一致しない**要素を検索できます。

    var rowLocator = Page.Locator("tr");
    await rowLocator
    .Filter(new() { HasNotText = "text in column 1" })
    .Filter(new() { HasNot = Page.GetByRole(AriaRole.Button, new() { Name = "column 2 button" })})
    .ScreenshotAsync();
  • 新しいWebファーストアサーションExpect(Locator).ToBeAttachedAsync()を使用して、要素がページのDOMに存在することを確認します。Expect(Locator).ToBeVisibleAsync()とは混同しないでください。後者は要素が添付されていてかつ表示されていることを確認します。

新しいAPI

⚠️ 破壊的変更

  • mcr.microsoft.com/playwright/dotnet:v1.33.0は、Ubuntu JammyをベースにしたPlaywrightイメージを提供するようになりました。focalベースのイメージを使用するには、代わりにmcr.microsoft.com/playwright/dotnet:v1.33.0-focalを使用してください。

ブラウザバージョン

  • Chromium 113.0.5672.53
  • Mozilla Firefox 112.0
  • WebKit 16.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 112
  • Microsoft Edge 112

バージョン1.32

新しいAPI

ブラウザバージョン

  • Chromium 112.0.5615.29
  • Mozilla Firefox 111.0
  • WebKit 16.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 111
  • Microsoft Edge 111

バージョン1.31

新しいAPI

  • 新しいアサーションExpect(Locator).ToBeInViewportAsync()は、ロケーターがIntersection Observer APIに従ってビューポートと交差する要素を指していることを保証します。

    var locator = Page.GetByRole(AriaRole.Button);

    // Make sure at least some part of element intersects viewport.
    await Expect(locator).ToBeInViewportAsync();

    // Make sure element is fully outside of viewport.
    await Expect(locator).Not.ToBeInViewportAsync();

    // Make sure that at least half of the element intersects viewport.
    await Expect(locator).ToBeInViewportAsync(new() { Ratio = 0.5 });
  • 新しいメソッドBrowserContext.NewCDPSessionAsync()Browser.NewBrowserCDPSessionAsync()は、それぞれページとブラウザのChrome DevTools Protocolセッションを作成します。

その他

  • トレースビューアーのDOMスナップショットが、別のウィンドウで開けるようになりました。
  • メソッドRoute.FetchAsync()に新しいオプションMaxRedirectsが追加されました。
  • PlaywrightがDebian 11 arm64をサポートするようになりました。
  • 公式のdockerイメージにNode 16の代わりにNode 18が含まれるようになりました。

ブラウザバージョン

  • Chromium 111.0.5563.19
  • Mozilla Firefox 109.0
  • WebKit 16.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 110
  • Microsoft Edge 110

バージョン1.30

ブラウザバージョン

  • Chromium 110.0.5481.38
  • Mozilla Firefox 108.0.2
  • WebKit 16.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 109
  • Microsoft Edge 109

バージョン1.29

新しいAPI

  • 新しいメソッドRoute.FetchAsync()と、Route.FulfillAsync()の新しいオプションJson

    await Page.RouteAsync("**/api/settings", async route => {
    // Fetch original settings.
    var response = await route.FetchAsync();

    // Force settings theme to a predefined value.
    var json = await response.JsonAsync<MyDataType>();
    json.Theme = "Solarized";

    // Fulfill with modified data.
    await route.FulfillAsync(new() {
    Json = json
    });
    });
  • すべてのマッチング要素を反復処理するための新しいメソッドLocator.AllAsync()

    // Check all checkboxes!
    var checkboxes = Page.GetByRole(AriaRole.Checkbox);
    foreach (var checkbox in await checkboxes.AllAsync())
    await checkbox.CheckAsync();
  • Locator.SelectOptionAsync()が値またはラベルでマッチングするようになりました。

    <select multiple>
    <option value="red">Red</option>
    <option value="green">Green</option>
    <option value="blue">Blue</option>
    </select>
    await element.SelectOptionAsync("Red");

ブラウザバージョン

  • Chromium 109.0.5414.46
  • Mozilla Firefox 107.0
  • WebKit 16.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 108
  • Microsoft Edge 108

バージョン1.28

Playwrightツール

  • CodeGenでのライブロケーター。「Explore」ツールを使用して、ページ上の任意の要素のロケーターを生成します。

Locator Explorer

新しいAPI

ブラウザバージョン

  • Chromium 108.0.5359.29
  • Mozilla Firefox 106.0
  • WebKit 16.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 107
  • Microsoft Edge 107

バージョン1.27

ロケーター

これらの新しいAPIにより、ロケーターの記述が楽しくなりました。

await page.GetByLabel("User Name").FillAsync("John");

await page.GetByLabel("Password").FillAsync("secret-password");

await page.GetByRole(AriaRole.Button, new() { NameString = "Sign in" }).ClickAsync();

await Expect(Page.GetByText("Welcome, John!")).ToBeVisibleAsync();

同じメソッドは、LocatorFrameLocatorFrameクラスでも利用できます。

その他のハイライト

  • v1.25で発表されたとおり、Ubuntu 18は2022年12月以降サポートされません。それに加えて、次期PlaywrightリリースからUbuntu 18でのWebKitアップデートは提供されません。

動作の変更

  • 空の値を持つExpect(Locator).ToHaveAttributeAsync()は、属性の欠落と一致しなくなりました。例えば、以下のスニペットは、buttondisabled属性を**持たない**場合に成功します。

    await Expect(Page.GetByRole(AriaRole.Button)).ToHaveAttributeAsync("disabled", "");

ブラウザバージョン

  • Chromium 107.0.5304.18
  • Mozilla Firefox 105.0.1
  • WebKit 16.0

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 106
  • Microsoft Edge 106

バージョン1.26

アサーション

その他のハイライト

  • ApiRequestContext.GetAsync()などに、リダイレクト回数を制限するための新しいオプションMaxRedirectsが追加されました。
  • CodegenがMSTestとNUnitフレームワークをサポートするようになりました。
  • ASP .NETがサポートされるようになりました。

動作変更

Playwrightの多くのAPIはすでにWaitUntil: WaitUntilState.DOMContentLoadedオプションをサポートしています。例えば

await Page.GotoAsync("https://playwright.dokyumento.jp", new() { WaitUntil = WaitUntilState.DOMContentLoaded });

1.26以前は、これはすべてのiframeがDOMContentLoadedイベントを発火するのを待機していました。

Web仕様に合わせるため、WaitUntilState.DOMContentLoaded値はターゲットフレームが'DOMContentLoaded'イベントを発火するのを待つだけになりました。すべてのiframeを待つにはWaitUntil: WaitUntilState.Loadを使用してください。

ブラウザバージョン

  • Chromium 106.0.5249.30
  • Mozilla Firefox 104.0
  • WebKit 16.0

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 105
  • Microsoft Edge 105

バージョン1.25

新しい.runsettingsファイルのサポート

Microsoft.Playwright.NUnitMicrosoft.Playwright.MSTestは、エンドツーエンドテストの実行時に.runsettingsファイルとCLI経由で渡された設定を考慮するようになりました。サポートされる設定の完全なリストについては、ドキュメントを参照してください。

以下が機能するようになりました

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Playwright -->
<Playwright>
<BrowserName>chromium</BrowserName>
<ExpectTimeout>5000</ExpectTimeout>
<LaunchOptions>
<Headless>true</Headless>
<Channel>msedge</Channel>
</LaunchOptions>
</Playwright>
<!-- General run configuration -->
<RunConfiguration>
<EnvironmentVariables>
<!-- For debugging selectors, it's recommend to set the following environment variable -->
<DEBUG>pw:api</DEBUG>
</EnvironmentVariables>
</RunConfiguration>
</RunSettings>

アナウンス

  • 🪦 これはmacOS 10.15サポート(1.21で非推奨)を含む最後のリリースです。
  • ⚠️ Ubuntu 18は現在非推奨であり、2022年12月以降はサポートされません。

ブラウザバージョン

  • Chromium 105.0.5195.19
  • Mozilla Firefox 103.0
  • WebKit 16.0

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 104
  • Microsoft Edge 104

バージョン1.24

🐂 Debian 11 Bullseyeのサポート

PlaywrightはChromium、Firefox、WebKitにおいてx86_64のDebian 11 Bullseyeをサポートするようになりました。何か問題が発生した場合はお知らせください!

Linuxのサポート状況は以下の通りです

| | Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | :--- | :---: | :---: | :---: | :---: | | Chromium | ✅ | ✅ | ✅ | | WebKit | ✅ | ✅ | ✅ | | Firefox | ✅ | ✅ | ✅ |

新しい導入ドキュメント

「はじめに」ドキュメントをエンドツーエンドテストに焦点を当てるように書き直しました。playwright.devで確認してください。

バージョン1.23

APIテスト

Playwright for .NET 1.23は、.NETから直接サーバーにリクエストを送信できる新しいAPIテストを導入しました!これで、以下のことが可能になります。

  • サーバーAPIのテスト
  • テストでウェブアプリケーションにアクセスする前にサーバーサイドの状態を準備
  • ブラウザでいくつかのアクションを実行した後、サーバーサイドの事後条件を検証

PlaywrightのPageを介してリクエストを行うには、**新しいPage.APIRequest API**を使用してください。

// Do a GET request on behalf of page
var response = await Page.APIRequest.GetAsync("http://example.com/foo.json");
Console.WriteLine(response.Status);
Console.WriteLine(response.StatusText);
Console.WriteLine(response.Ok);
Console.WriteLine(response.Headers["Content-Type"]);
Console.WriteLine(await response.TextAsync());
Console.WriteLine((await response.JsonAsync())?.GetProperty("foo").GetString());

詳細については、APIテストガイドをご覧ください。

ネットワークリプレイ

これで、ネットワークトラフィックをHARファイルに記録し、そのトラフィックをテストで再利用できるようになりました。

HARファイルにネットワークを記録するには

pwsh bin/Debug/netX/playwright.ps1 open --save-har=example.har --save-har-glob="**/api/**" https://example.com

あるいは、HARをプログラムで記録することもできます。

var context = await browser.NewContextAsync(new()
{
RecordHarPath = harPath,
RecordHarUrlFilterString = "**/api/**",
});

// ... Perform actions ...

// Close context to ensure HAR is saved to disk.
context.CloseAsync();

新しいメソッドPage.RouteFromHARAsync()またはBrowserContext.RouteFromHARAsync()を使用して、HARファイルから一致する応答を提供します。

await context.RouteFromHARAsync("example.har");

詳細については、ドキュメントを参照してください。

高度なルーティング

これで、Route.FallbackAsync()を使用して、ルーティングを他のハンドラーに委ねることができるようになりました。

次の例を考えてみましょう

// Remove a header from all requests.
await page.RouteAsync("**/*", async route =>
{
var headers = route.Request.Headers;
headers.Remove("X-Secret");
await route.ContinueAsync(new() { Headers = headers });
});

// Abort all images.
await page.RouteAsync("**/*", async route =>
{
if (route.Request.ResourceType == "image")
{
await route.AbortAsync();
}
else
{
await route.FallbackAsync();
}
});

新しいメソッドPage.RouteFromHARAsync()BrowserContext.RouteFromHARAsync()もルーティングに参加し、処理を委譲できることに注意してください。

Webファーストアサーションの更新

その他

  • 邪魔になるサービスワーカーがある場合、新しいコンテキストオプションserviceWorkersを使用して簡単に無効にできます。

    var context = await Browser.NewContextAsync(new()
    {
    ServiceWorkers = ServiceWorkerPolicy.Block
    });
  • recordHarコンテキストオプションに.zipパスを使用すると、結果のHARが自動的にzip圧縮されます。

    var context = await Browser.NewContextAsync(new() { RecordHarPath = "example.har.zip" });
  • 手動でHARを編集する予定がある場合は、リプレイに不可欠な情報のみを記録する"minimal" HAR記録モードの使用を検討してください。

    var context = await Browser.NewContextAsync(new() { RecordHarPath = "example.har", RecordHarMode = HarMode.Minimal });
  • PlaywrightがUbuntu 22 amd64とUbuntu 22 arm64で動作するようになりました。

  • Playwright for .NETは**linux-arm64**をサポートし、そのための**arm64 Ubuntu 20.04 Dockerイメージ**を提供します。

バージョン1.22

ハイライト

  • ARIAロールARIA属性、およびアクセシブルネームで要素を選択できるロールセレクター。

    // Click a button with accessible name "log in"
    await page.Locator("role=button[name='log in']").ClickAsync();

    詳細については、ドキュメントを参照してください。

  • 既存のロケーターをフィルターするための新しいLocator.Filter() API。

    var buttons = page.Locator("role=button");
    // ...
    var submitLocator = buttons.Filter(new() { HasText = "Sign up" });
    await submitLocator.ClickAsync();

バージョン1.21

ハイライト

  • ARIAロールARIA属性、およびアクセシブルネームで要素を選択できる新しいロールセレクター。

    // Click a button with accessible name "log in"
    await page.Locator("role=button[name='log in']").ClickAsync();

    詳細については、ドキュメントを参照してください。

  • より小さなサイズのスクリーンショットを撮るためのPage.ScreenshotAsync()の新しいscaleオプション。

  • Page.ScreenshotAsync()に、テキストカーソルを制御するための新しいcaretオプションが追加されました。デフォルトは"hide"です。

  • 指定された.NET Dockerイメージmcr.microsoft.com/playwright/dotnetをリリースしました。詳細については、ドキュメントを参照してください。

動作の変更

  • PlaywrightはLocator.SetInputFilesAsync() API経由で大容量ファイル(数百MB)のアップロードをサポートするようになりました。

ブラウザバージョン

  • Chromium 101.0.4951.26
  • Mozilla Firefox 98.0.2
  • WebKit 15.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 100
  • Microsoft Edge 100

バージョン1.20

Webファーストアサーション

Playwright for .NET 1.20はWebファーストアサーションを導入します。

次の例を考えてみましょう

using System.Threading.Tasks;
using Microsoft.Playwright.NUnit;
using NUnit.Framework;

namespace PlaywrightTests;

[TestFixture]
public class ExampleTests : PageTest
{
[Test]
public async Task StatusBecomesSubmitted()
{
await Expect(Page.Locator(".status")).ToHaveTextAsync("Submitted");
}
}

Playwrightは、取得したNodeが"Submitted"テキストを持つまで、セレクター.statusを持つノードを再テストし続けます。条件が満たされるか、タイムアウトに達するまで、ノードを繰り返し取得してチェックします。このタイムアウトはオプションとして渡すことができます。

詳細については、ドキュメントを参照してください。

その他の更新

  • メソッドPage.ScreenshotAsync()Locator.ScreenshotAsync()、およびElementHandle.ScreenshotAsync()の新しいオプション
    • オプションScreenshotAnimations.Disabledは、すべてのCSSアニメーションとトランジションを一貫した状態に巻き戻します。
    • オプションmask: Locator[]は、指定された要素をピンク色(#FF00FF)のボックスで覆い隠します。
  • Locator.HighlightAsync()は、デバッグを容易にするために要素を視覚的に強調表示します。

アナウンス

  • v1.20はmacOS 10.15 CatalinaのWebKitアップデートを受け取る最後のリリースです。最新かつ最高のWebKitを使い続けるためにmacOSを更新してください!

ブラウザバージョン

  • Chromium 101.0.4921.0
  • Mozilla Firefox 97.0.1
  • WebKit 15.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 99
  • Microsoft Edge 99

バージョン1.19

ハイライト

  • Locatorが、別のロケーターを内部に含むことを確認するhasオプションをサポートするようになりました。

    await Page.Locator("article", new() { Has = Page.Locator(".highlight") }).ClickAsync();

    詳細については、ロケーターのドキュメントを参照してください。

  • 新しいLocator.Page

  • Page.ScreenshotAsync()Locator.ScreenshotAsync()が自動的に点滅するキャレットを隠すようになりました。

  • Playwright Codegenがロケーターとフレームロケーターを生成するようになりました。

ブラウザバージョン

  • Chromium 100.0.4863.0
  • Mozilla Firefox 96.0.1
  • WebKit 15.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 98
  • Microsoft Edge 98

バージョン1.18

ロケーターの改善

  • Locator.DragToAsync()

  • 各ロケーターは、含まれるテキストによってオプションでフィルターできるようになりました。

    await Page.Locator("li", new() { HasTextString = "My Item" })
    .Locator("button").click();

    詳細については、ロケーターのドキュメントを参照してください。

新しいAPIと変更

  • AcceptDownloadsオプションのデフォルト値がtrueになりました。
  • ソースをトレースに埋め込むためのSourcesオプション。

ブラウザバージョン

  • Chromium 99.0.4812.0
  • Mozilla Firefox 95.0
  • WebKit 15.4

このバージョンは以下の安定版チャネルでもテストされました

  • Google Chrome 97
  • Microsoft Edge 97

バージョン1.17

フレームロケーター

Playwright 1.17はフレームロケーターを導入しました。これはページ上のiframeを特定するためのロケーターです。フレームロケーターは、iframeを取得し、そのiframe内の要素を特定するのに十分なロジックをキャプチャします。フレームロケーターはデフォルトで厳密であり、iframeの出現を待ち、Webファーストアサーションで使用できます。

Graphics

フレームロケーターはPage.FrameLocator()またはLocator.FrameLocator()メソッドで作成できます。

var locator = page.FrameLocator("#my-frame").Locator("text=Submit");
await locator.ClickAsync();

詳細については、ドキュメントを参照してください。

トレースビューアーの更新

Playwrightトレースビューアーが、https://trace.playwright.devで**オンラインで利用可能**になりました!trace.zipファイルをドラッグ&ドロップするだけで、その内容を検査できます。

**注**: トレースファイルはどこにもアップロードされません。trace.playwright.devは、トレースをローカルで処理するプログレッシブウェブアプリケーションです。

  • Playwright Testトレースにデフォルトでソースが含まれるようになりました(トレースオプションで無効にすることもできます)。
  • トレースビューアーにテスト名が表示されるようになりました。
  • ブラウザの詳細を含む新しいトレースメタデータタブ。
  • スナップショットにURLバーが追加されました。

image

HTMLレポートの更新

  • HTMLレポートが動的フィルタリングをサポートするようになりました。
  • レポートが**単一の静的HTMLファイル**になり、メールやSlackの添付ファイルとして送信できるようになりました。

image

Ubuntu ARM64のサポートなど

  • Playwrightが**Ubuntu 20.04 ARM64**をサポートするようになりました。Apple M1およびRaspberry Pi上のDocker内でPlaywrightテストを実行できるようになりました。

  • Linux上でEdgeの安定版をインストールするためにPlaywrightを使用できるようになりました。

    pwsh bin/Debug/netX/playwright.ps1 install msedge

新しいAPI

  • Tracingが'title'オプションをサポートするようになりました。
  • ページナビゲーションが新しい'commit'待機オプションをサポートするようになりました。

バージョン1.16

🎭 Playwrightライブラリ

Locator.WaitForAsync

指定された状態を持つ単一の要素にロケーターが解決されるのを待ちます。デフォルトはstate: 'visible'です。

var orderSent = page.Locator("#order-sent");
orderSent.WaitForAsync();

Locator.WaitForAsync()の詳細はこちら。

🎭 Playwrightトレースビューアー

  • pwsh bin/Debug/netX/playwright.ps1 show-traceでトレースビューアーを実行し、トレースファイルをトレースビューアーPWAにドラッグ&ドロップします。
  • アクションターゲットの視覚的な属性表示の改善

トレースビューアーの詳細はこちら。

ブラウザバージョン

  • Chromium 97.0.4666.0
  • Mozilla Firefox 93.0
  • WebKit 15.4

このバージョンのPlaywrightは、以下の安定版チャネルでもテストされました。

  • Google Chrome 94
  • Microsoft Edge 94

バージョン1.15

🖱️ マウスホイール

Mouse.WheelAsync() を使用することで、垂直方向または水平方向にスクロールできるようになりました。

📜 新しいHeaders API

これまではレスポンスの複数のヘッダー値を取得することはできませんでしたが、これが可能になり、追加のヘルパー関数が利用できるようになりました。

🌈 強制カラーエミュレーション

Browser.NewContextAsync() に渡すか、Page.EmulateMediaAsync() を呼び出すことで、forced-colors CSSメディア機能をエミュレートできるようになりました。

新しいAPI

重要 ⚠

  • ⬆ .NET Core Apps 2.1 は、当社のCLIツールではサポートされなくなりました。2021年8月31日現在、.NET Core 2.1 はサポートが終了しており、セキュリティ更新プログラムも提供されません。CLIを前進させ、最小要件を.NET Core 3.1とすることに決定しました。

ブラウザバージョン

  • Chromium 96.0.4641.0
  • Mozilla Firefox 92.0
  • WebKit 15.0

バージョン 1.14

⚡️ 新しい「strict」モード

セレクターの曖昧さは、自動化テストでよくある問題です。「strict」モードは、セレクターが単一の要素を指すことを保証し、そうでない場合はエラーをスローします。

オプトインするには、アクション呼び出しで setStrict(true) を設定します。

// This will throw if you have more than one button!
await page.Locator("button", new() { Strict = true });

📍 新しいLocators API

Locatorは、ページ上の要素へのビューを表します。特定の瞬間に要素を取得するのに十分なロジックをカプセル化します。

LocatorElementHandle の違いは、後者が特定の要素を指すのに対し、前者はその要素を取得する方法のロジックをカプセル化することです。

また、ロケーターはデフォルトで「strict」です!

var locator = page.Locator("button");
await locator.ClickAsync();

詳細についてはドキュメントをご覧ください。

🧩 実験的なReactおよびVueセレクターエンジン

ReactおよびVueセレクターは、コンポーネント名やプロパティ値で要素を選択できます。構文は属性セレクターと非常によく似ており、すべての属性セレクター演算子をサポートします。

await page.Locator("_react=SubmitButton[enabled=true]").ClickAsync();
await page.Locator("_vue=submit-button[enabled=true]").ClickAsync();

詳細については、ReactセレクターのドキュメントおよびVueセレクターのドキュメントをご覧ください。

✨ 新しいnthおよびvisibleセレクターエンジン

  • nth セレクターエンジンは :nth-match 擬似クラスと同等ですが、他のセレクターエンジンと組み合わせることができます。
  • visible セレクターエンジンは :visible 擬似クラスと同等ですが、他のセレクターエンジンと組み合わせることができます。
// select the first button among all buttons
await button.ClickAsync("button >> nth=0");
// or if you are using locators, you can use First, Nth() and Last
await page.Locator("button").First.ClickAsync();

// click a visible button
await button.ClickAsync("button >> visible=true");

ブラウザバージョン

  • Chromium 94.0.4595.0
  • Mozilla Firefox 91.0
  • WebKit 15.0

バージョン 1.13

Playwright

  • Page.DragAndDropAsync() APIによる🖖 プログラムでのドラッグ&ドロップサポート
  • リクエストとレスポンスのボディサイズを含む🔎 拡張されたHARBrowser.NewContextAsync()recordHar オプションを使用して利用できます。

ツール

  • Playwright Trace Viewerは、パラメータ、戻り値、および console.log() の呼び出しを表示するようになりました。

新しく刷新されたガイド

ブラウザバージョン

  • Chromium 93.0.4576.0
  • Mozilla Firefox 90.0
  • WebKit 14.2

新しいPlaywright API

バージョン 1.12

ハイライト

  • .NET v1.12 用 Playwright が安定版になりました!
  • codegen および trace viewer ツールが標準で付属します。

ブラウザバージョン

  • Chromium 93.0.4530.0
  • Mozilla Firefox 89.0
  • WebKit 14.2

このバージョンのPlaywrightは、以下の安定版チャネルでもテストされました。

  • Google Chrome 91
  • Microsoft Edge 91