リリースノート
バージョン 1.52
ハイライト
-
要素の個々のクラス名を人間工学的にアサートするための新しいメソッド
expect(locator).to_contain_class()
。expect(page.get_by_role('listitem', name='Ship v1.52')).to_contain_class('done')
-
Aria Snapshotsに2つの新しいプロパティが追加されました。厳密なマッチングのための
/children
と、リンクのための/url
です。expect(locator).to_match_aria_snapshot("""
- list
- /children: equal
- listitem: Feature A
- listitem:
- link "Feature B":
- /url: "https://playwright.dokyumento.jp"
""")
その他
api_request.new_context()
に、最大リダイレクト数を制御する新しいオプションmax_redirects
が追加されました。locator.aria_snapshot()
に新しいオプションref
が追加されました。これはスナップショット内の各要素の参照を生成し、後で要素を特定するために使用できます。- HTMLレポーターが、
!@my-tag
、!my-file.spec.ts
、または!p:my-project
によるNOTフィルタリングをサポートするようになりました。
破壊的変更
page.frame()
でのベースURLマッチングはサポートされなくなりました。より便利なAPIのために、代わりにpage.frame_locator()
への移行をお勧めします。page.route()
のようなメソッドでのグロブURLパターンは、?
と[]
をサポートしなくなりました。代わりに正規表現を使用することをお勧めします。- メソッド
route.continue_()
は、Cookie
ヘッダーのオーバーライドを許可しなくなりました。Cookie
ヘッダーが提供された場合、それは無視され、クッキーはブラウザのクッキーストアからロードされます。カスタムクッキーを設定するには、browser_context.add_cookies()
を使用してください。 - 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
ハイライト
-
browser_context.storage_state()
に新しいオプションindexed_db
が追加され、IndexedDBの内容を保存・復元できるようになりました。これは、アプリケーションが認証トークン(Firebase Authenticationなど)を保存するためにIndexedDB APIを使用している場合に便利です。以下は認証ガイドに従った例です
# Save storage state into the file. Make sure to include IndexedDB.
storage = await context.storage_state(path="state.json", indexed_db=True)
# Create a new context with the saved storage state.
context = await browser.new_context(storage_state="state.json") -
locator.filter()
に新しいオプションvisible
が追加され、表示されている要素のみをマッチングできるようになりました。# Ignore invisible todo items.
todo_items = page.get_by_test_id("todo-item").filter(visible=True)
# Check there are exactly 3 visible ones.
await expect(todo_items).to_have_count(3) -
page.emulate_media()
およびbrowser.new_context()
メソッドに新しいオプションcontrast
が追加され、prefers-contrast
メディア機能をエミュレートできるようになりました。 -
新しいオプション
fail_on_status_code
により、APIRequestContext
を介して行われるすべてのフェッチリクエストが、2xxおよび3xx以外のレスポンスコードで例外をスローするようになります。
ブラウザバージョン
- Chromium 134.0.6998.35
- Mozilla Firefox 135.0
- WebKit 18.4
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 133
- Microsoft Edge 133
バージョン 1.50
非同期Pytestプラグイン
- PlaywrightのPytestプラグインが非同期フィクスチャをサポートするようになりました。
その他
- Locatorが指定されたaria errormessageを持つ要素を指していることをアサートするためのメソッド
expect(locator).to_have_accessible_error_message()
が追加されました。
UIの更新
- Codegenに、ariaスナップショットを生成するために要素を選択する新しいボタンが追加されました。
- アクションAPI呼び出しに加えて、追加の詳細(押されたキーなど)がトレースに表示されるようになりました。
- トレースにおける
canvas
コンテンツの表示はエラーが発生しやすいです。表示はデフォルトで無効になり、Display canvas content
UI設定を介して有効にできます。 Call
およびNetwork
パネルが、追加の時間情報を表示するようになりました。
破壊的変更
expect(locator).to_be_editable()
およびlocator.is_editable()
は、ターゲット要素が<input>
、<select>
、またはその他のいくつかの編集可能な要素でない場合に、例外をスローするようになりました。
ブラウザバージョン
- Chromium 133.0.6943.16
- Mozilla Firefox 134.0
- WebKit 18.2
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 132
- Microsoft Edge 132
バージョン 1.49
Ariaスナップショット
新しいアサーションexpect(locator).to_match_aria_snapshot()
は、期待されるアクセシビリティツリー(YAMLで表現)と比較することで、ページ構造を検証します。
page.goto("https://playwright.dokyumento.jp")
expect(page.locator('body')).to_match_aria_snapshot('''
- 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.aria_snapshot()
を呼び出すことで生成できます。
詳細はariaスナップショットガイドをご覧ください。
トレースグループ
新しいメソッドtracing.group()
により、トレースビューアーでアクションを視覚的にグループ化できます。
# All actions between group and group_end
# will be shown in the trace viewer as a group.
page.context.tracing.group("Open Playwright.dev > API")
page.goto("https://playwright.dokyumento.jp/")
page.get_by_role("link", name="API").click()
page.context.tracing.group_end()
破壊的変更: chrome
およびmsedge
チャンネルが新しいヘッドレスモードに切り替わります
この変更は、playwright.config.ts
で以下のいずれかのチャンネルを使用している場合に影響します
chrome
,chrome-dev
,chrome-beta
, またはchrome-canary
msedge
,msedge-dev
,msedge-beta
, またはmsedge-canary
Playwright v1.49に更新後、テストスイートを実行してください。まだパスする場合は問題ありません。パスしない場合は、スナップショットを更新し、PDFビューアーや拡張機能に関する一部のテストコードを適応させる必要があるでしょう。詳細については、issue #33566を参照してください。
新しいChromiumヘッドレスをお試しください
新しいヘッドレスモードは、'chromium'
チャンネルを使用することでオプトインできます。公式Chromeドキュメントに記載されているように
一方、新しいヘッドレスは実際のChromeブラウザであり、そのためより信頼性が高く、多くの機能を提供します。これにより、高精度なエンドツーエンドのウェブアプリテストやブラウザ拡張機能のテストに適しています。
発生する可能性のある破壊的変更のリストとChromiumヘッドレスに関する詳細については、issue #33566を参照してください。オプトイン後に問題が見つかった場合は、課題を提出してください。
pytest test_login.py --browser-channel chromium
その他
- Ubuntu 20.04およびDebian 11でのWebKitのアップデートはこれ以上ありません。OSを新しいバージョンに更新することをお勧めします。
- スナップショット内の
<canvas>
要素がプレビューを描画するようになりました。 - Python 3.8はサポートされなくなりました。
ブラウザバージョン
- Chromium 131.0.6778.33
- Mozilla Firefox 132.0
- WebKit 18.2
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 130
- Microsoft Edge 130
バージョン 1.48
WebSocketルーティング
新しいメソッドpage.route_web_socket()
およびbrowser_context.route_web_socket()
により、ページで開始されたWebSocket接続を傍受、変更、モックできるようになりました。以下は、"request"
に"response"
で応答することでWebSocket通信をモックする簡単な例です。
def message_handler(ws: WebSocketRoute, message: Union[str, bytes]):
if message == "request":
ws.send("response")
page.route_web_socket("/ws", lambda ws: ws.on_message(
lambda message: message_handler(ws, message)
))
詳細はWebSocketRoute
を参照してください。
UIの更新
- HTMLレポートに、アノテーションとテスト場所の新しい「コピー」ボタンが追加されました。
route.fulfill()
のようなルートメソッドの呼び出しは、レポートやトレースビューアーに表示されなくなりました。代わりに、ネットワークタブでどのネットワークリクエストがルーティングされたかを確認できます。- ネットワークタブのリクエストに、新しい「cURLとしてコピー」および「fetchとしてコピー」ボタンが追加されました。
その他
- 新しいメソッド
page.request_gc()
は、メモリリークの検出に役立つ場合があります。 APIRequestContext
によって行われたリクエストは、HARに詳細なタイミングとセキュリティ情報を記録するようになりました。
ブラウザバージョン
- Chromium 130.0.6723.19
- Mozilla Firefox 130.0
- WebKit 18.0
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 129
- Microsoft Edge 129
バージョン 1.47
ネットワークタブの改善
トレースビューアーのネットワークタブには、いくつかの優れた改善点があります
- アセットタイプとURLによるフィルタリング
- クエリ文字列パラメータのより良い表示
- フォントアセットのプレビュー
その他
mcr.microsoft.com/playwright/python:v1.47.0
は、Ubuntu 24.04 NobleをベースとしたPlaywrightイメージを提供するようになりました。22.04 jammyをベースとしたイメージを使用するには、代わりにmcr.microsoft.com/playwright/python:v1.47.0-jammy
を使用してください。- Playwright Dockerイメージの
:latest
/:focal
/:jammy
タグは公開されなくなりました。より良い安定性と再現性のために、特定のバージョンに固定してください。 - TLSクライアント証明書は、ファイルパスではなくバイトとして
client_certificates.cert
とclient_certificates.key
を渡すことで、メモリから渡せるようになりました。 locator.select_option()
内のno_wait_after
は非推奨になりました。- 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.new_context()
およびapi_request.new_context()
のパラメータとして提供できます。以下のスニペットはhttps://example.com
のクライアント証明書を設定します
context = browser.new_context(
client_certificates=[
{
"origin": "https://example.com",
"certPath": "client-certificates/cert.pem",
"keyPath": "client-certificates/key.pem",
}
],
)
トレースビューアーの更新
- テキスト添付ファイルの内容が、添付ファイルペインでインラインでレンダリングされるようになりました。
route.continue_()
のようなルーティングアクションを表示/非表示にする新しい設定。- リクエストメソッドとステータスがネットワーク詳細タブに表示されます。
- ソースファイルの場所をクリップボードにコピーする新しいボタン。
- メタデータペインに
base_url
が表示されるようになりました。
その他
api_request_context.fetch()
に新しいオプション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.
page.clock.install(time=datetime.datetime(2024, 2, 2, 8, 0, 0))
page.goto("https://:3333")
# Pretend that the user closed the laptop lid and opened it again at 10am.
# Pause the time once reached that point.
page.clock.pause_at(datetime.datetime(2024, 2, 2, 10, 0, 0))
# Assert the page state.
expect(page.get_by_test_id("current-time")).to_have_text("2/2/2024, 10:00:00 AM")
# Close the laptop lid again and open it at 10:30am.
page.clock.fast_forward("30:00")
expect(page.get_by_test_id("current-time")).to_have_text("2/2/2024, 10:30:00 AM")
詳細はクロックガイドを参照してください。
その他
-
メソッド
locator.set_input_files()
が、<input type=file webkitdirectory>
要素のディレクトリアップロードをサポートするようになりました。page.get_by_label("Upload directory").set_input_files('mydir')
-
locator.click()
やlocator.press()
などの複数のメソッドが、ControlOrMeta
修飾キーをサポートするようになりました。このキーはmacOSではMeta
に、WindowsおよびLinuxではControl
にマッピングされます。# Press the common keyboard shortcut Control+S or Meta+S to trigger a "Save" operation.
page.keyboard.press("ControlOrMeta+S") -
api_request.new_context()
に新しいプロパティ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).to_have_accessible_name()
は、要素が指定されたアクセシブルネームを持っているかチェックしますlocator = page.get_by_role("button")
expect(locator).to_have_accessible_name("Submit") -
expect(locator).to_have_accessible_description()
は、要素が指定されたアクセシブルディスクリプションを持っているかチェックしますlocator = page.get_by_role("button")
expect(locator).to_have_accessible_description("Upload a photo") -
expect(locator).to_have_role()
は、要素が指定されたARIAロールを持っているかチェックしますlocator = page.get_by_test_id("save-button")
expect(locator).to_have_role("button")
ロケーターハンドラー
page.add_locator_handler()
で追加されたハンドラーの実行後、Playwrightはハンドラーをトリガーしたオーバーレイがもう表示されなくなるまで待機するようになりました。新しいオプションno_wait_after
を使用してこの動作をオプトアウトできます。page.add_locator_handler()
の新しいオプションtimes
を使用して、ハンドラーが実行される最大回数を指定できます。page.add_locator_handler()
のハンドラーが、ロケーターを引数として受け入れるようになりました。- 以前追加されたロケーターハンドラーを削除するための新しいメソッド
page.remove_locator_handler()
。
locator = page.get_by_text("This interstitial covers the button")
page.add_locator_handler(locator, lambda overlay: overlay.locator("#close").click(), times=3, no_wait_after=True)
# Run your tests that can be interrupted by the overlay.
# ...
page.remove_locator_handler(locator)
その他のオプション
expect(page).to_have_url()
が、ignore_case
オプションをサポートするようになりました。
ブラウザバージョン
- Chromium 125.0.6422.14
- Mozilla Firefox 125.0.1
- WebKit 17.4
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 124
- Microsoft Edge 124
バージョン 1.43
新しいAPI
-
メソッド
browser_context.clear_cookies()
が、特定のクッキーのみを削除するフィルタリングをサポートするようになりました。# Clear all cookies.
context.clear_cookies()
# New: clear cookies with a particular name.
context.clear_cookies(name="session-id")
# New: clear cookies for a particular domain.
context.clear_cookies(domain="my-origin.com") -
新しいメソッド
locator.content_frame
は、Locator
オブジェクトをFrameLocator
に変換します。これは、どこかで取得したLocator
オブジェクトがあり、後でフレーム内のコンテンツとやり取りしたい場合に便利です。locator = page.locator("iframe[name='embedded']")
# ...
frame_locator = locator.content_frame
frame_locator.getByRole("button").click() -
新しいメソッド
frame_locator.owner
は、FrameLocator
オブジェクトをLocator
に変換します。これは、どこかで取得したFrameLocator
オブジェクトがあり、後でiframe
要素とやり取りしたい場合に便利です。frame_locator = page.frame_locator("iframe[name='embedded']")
# ...
locator = frame_locator.owner
expect(locator).to_be_visible() -
CondaビルドがmacOS-arm64とLinux-arm64向けに公開されるようになりました。
ブラウザバージョン
- Chromium 124.0.6367.8
- Mozilla Firefox 124.0
- WebKit 17.4
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 123
- Microsoft Edge 123
バージョン 1.42
新しいロケーターハンドラー
新しいメソッドpage.add_locator_handler()
は、指定された要素が表示され、Playwrightのアクションをブロックする可能性がある場合に呼び出されるコールバックを登録します。コールバックはオーバーレイを非表示にすることができます。以下は、クッキーダイアログが表示されたときに閉じる例です。
# Setup the handler.
page.add_locator_handler(
page.get_by_role("heading", name="Hej! You are in control of your cookies."),
lambda: page.get_by_role("button", name="Accept all").click(),
)
# Write the test as usual.
page.goto("https://www.ikea.com/")
page.get_by_role("link", name="Collection of blue and white").click()
expect(page.get_by_role("heading", name="Light and easy")).to_be_visible()
新しいAPI
page.pdf()
は、新しい2つのオプションtagged
とoutline
を受け入れるようになりました。
お知らせ
- ⚠️ Ubuntu 18はサポートされなくなりました。
ブラウザバージョン
- Chromium 123.0.6312.4
- Mozilla Firefox 123.0
- WebKit 17.4
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 122
- Microsoft Edge 123
バージョン 1.41
新しいAPI
- 新しいメソッド
page.unroute_all()
は、page.route()
およびpage.route_from_har()
で登録されたすべてのルートを削除します。オプションで、進行中のルートが完了するまで待機したり、それらからのエラーを無視したりすることができます。 - 新しいメソッド
browser_context.unroute_all()
は、browser_context.route()
およびbrowser_context.route_from_har()
で登録されたすべてのルートを削除します。オプションで、進行中のルートが完了するまで待機したり、それらからのエラーを無視したりすることができます。 page.screenshot()
に新しいオプションstyle
、およびlocator.screenshot()
にstyle
が追加され、スクリーンショットを撮る前にページにカスタムCSSを追加できるようになりました。
ブラウザバージョン
- Chromium 121.0.6167.57
- Mozilla Firefox 121.0
- WebKit 17.4
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 120
- Microsoft Edge 120
バージョン 1.40
テストジェネレーターの更新
アサーションを生成する新しいツール
- 「表示をアサート」ツールは
expect(locator).to_be_visible()
を生成します。 - 「値をアサート」ツールは
expect(locator).to_have_value()
を生成します。 - 「テキストをアサート」ツールは
expect(locator).to_contain_text()
を生成します。
以下はアサーション付きで生成されたテストの例です
from playwright.sync_api import Page, expect
def test_example(page: Page) -> None:
page.goto("https://playwright.dokyumento.jp/")
page.get_by_role("link", name="Get started").click()
expect(page.get_by_label("Breadcrumbs").get_by_role("list")).to_contain_text("Installation")
expect(page.get_by_label("Search")).to_be_visible()
page.get_by_label("Search").click()
page.get_by_placeholder("Search docs").fill("locator")
expect(page.get_by_placeholder("Search docs")).to_have_value("locator");
新しいAPI
page.close()
のオプションreason
、browser_context.close()
のreason
、およびbrowser.close()
のreason
。閉鎖によって中断されたすべての操作について、閉鎖理由が報告されます。browser_type.launch_persistent_context()
のオプションfirefox_user_prefs
。
その他の変更
- メソッド
download.path()
は、失敗およびキャンセルされたダウンロードに対してエラーをスローするようになりました。
ブラウザバージョン
- 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
トレースビューアーの更新
- 時間範囲へのズーム。
- ネットワークパネルの再設計。
新しいAPI
非推奨
- 以下のメソッドは非推奨になりました:
page.type()
、frame.type()
、locator.type()
、およびelement_handle.type()
。代わりに、はるかに高速なlocator.fill()
を使用してください。ページに特別なキーボード処理があり、キーを1つずつ押す必要がある場合にのみlocator.press_sequentially()
を使用してください。
ブラウザバージョン
- Chromium 117.0.5938.62
- Mozilla Firefox 117.0
- WebKit 17.0
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 116
- Microsoft Edge 116
バージョン 1.37
ハイライト
- 新しいコマンドラインフラグ
--full-page-screenshot
により、失敗時にフルページスクリーンショットを撮ることができます。 browser_context_args
マーカーを使用することで、単一のテストのコンテキストオプションをオーバーライドできるようになりました。pytest-playwright
もAnacondaで公開されるようになりました。
📚 Debian 12 Bookwormのサポート
Playwrightは、Chromium、Firefox、WebKitにおいて、x86_64とarm64の両方でDebian 12 Bookwormをサポートするようになりました。何か問題が発生した場合はお知らせください!
Linuxのサポート状況は以下の通りです
Ubuntu 20.04 | Ubuntu 22.04 | Debian 11 | Debian 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.screenshot()
およびlocator.screenshot()
メソッドに新しいオプションmask_color
が追加され、デフォルトのマスク色を変更できるようになりました。 -
ブラウザのバイナリをアンインストールするための新しい
uninstall
CLIコマンド$ playwright uninstall # remove browsers installed by this installation
$ playwright 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_()
。button = page.get_by_role("button").and_(page.get_by_title("Subscribe"))
-
与えられたブラウザコンテキストの任意のページからのダイアログやコンソールメッセージを購読するための新しいイベント
browser_context.on("console")
とbrowser_context.on("dialog")
。イベントソースを特定するには、新しいメソッドconsole_message.page
とdialog.page
を使用してください。
ブラウザバージョン
- Chromium 114.0.5735.26
- Mozilla Firefox 113.0
- WebKit 16.4
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 113
- Microsoft Edge 113
バージョン 1.33
ロケーターの更新
-
2つのロケーターのいずれかにマッチするロケーターを作成するには、
locator.or_()
を使用します。「新しいメール」ボタンをクリックしたいが、代わりにセキュリティ設定ダイアログが表示されることがあるシナリオを考えてみてください。この場合、「新しいメール」ボタンまたはダイアログのいずれかを待機し、それに応じて動作させることができます。new_email = page.get_by_role("button", name="New email")
dialog = page.get_by_text("Confirm security settings")
expect(new_email.or_(dialog)).is_visible()
if (dialog.is_visible()):
page.get_by_role("button", name="Dismiss").click()
new_email.click() -
locator.filter()
の新しいオプションhas_not
とhas_not_text
を使用して、特定の条件に一致しない要素を見つけます。row_locator = page.locator("tr")
row_locator.filter(has_not_text="text in column 1").filter(
has_not=page.get_by_role("button", name="column 2 button")
).screenshot() -
新しいウェブファーストアサーション
expect(locator).to_be_attached()
を使用して、要素がページのDOMに存在することを確認します。要素がアタッチされ、かつ可視であることを保証するexpect(locator).to_be_visible()
と混同しないでください。
新しいAPI
locator.or_()
locator.filter()
の新しいオプションhas_not
locator.filter()
の新しいオプションhas_not_text
expect(locator).to_be_attached()
route.fetch()
の新しいオプションtimeout
⚠️ 破壊的変更
mcr.microsoft.com/playwright/python:v1.33.0
は、Ubuntu JammyをベースとしたPlaywrightイメージを提供するようになりました。focalをベースとしたイメージを使用するには、代わりにmcr.microsoft.com/playwright/python: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
- カスタムexpectメッセージについては、テストアサーションのドキュメントを参照してください。
page.route_from_har()
およびbrowser_context.route_from_har()
に新しいオプションupdate_mode
とupdate_content
が追加されました。- 既存のロケーターオブジェクトのチェイニング。詳細はロケーターのドキュメントを参照してください。
- メソッド
tracing.start_chunk()
に新しいオプションname
が追加されました。
ブラウザバージョン
- Chromium 112.0.5615.29
- Mozilla Firefox 111.0
- WebKit 16.4
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 111
- Microsoft Edge 111
バージョン 1.31
新しいAPI
-
新しいアサーション
expect(locator).to_be_in_viewport()
は、Intersection Observer APIに従って、ロケーターがビューポートと交差する要素を指していることを保証します。from playwright.sync_api import expect
locator = page.get_by_role("button")
# Make sure at least some part of element intersects viewport.
expect(locator).to_be_in_viewport()
# Make sure element is fully outside of viewport.
expect(locator).not_to_be_in_viewport()
# Make sure that at least half of the element intersects viewport.
expect(locator).to_be_in_viewport(ratio=0.5)
その他
- トレースビューアーのDOMスナップショットは、別のウィンドウで開けるようになりました。
- メソッド
route.fetch()
に新しいオプションmax_redirects
が追加されました。 - 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.fetch()
と、route.fulfill()
の新しいオプションjson
def handle_route(route: Route):
# Fetch original settings.
response = route.fetch()
# Force settings theme to a predefined value.
json = response.json()
json["theme"] = "Solorized"
# Fulfill with modified data.
route.fulfill(json=json)
page.route("**/api/settings", handle_route) -
すべてのマッチする要素をイテレートするための新しいメソッド
locator.all()
# Check all checkboxes!
checkboxes = page.get_by_role("checkbox")
for checkbox in checkboxes.all():
checkbox.check() -
locator.select_option()
が値またはラベルでマッチングするようになりました。<select multiple>
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
</select>element.select_option("Red")
その他
- メソッド
route.continue_()
のオプションpostData
が、シリアライズ可能な値をサポートするようになりました。
ブラウザバージョン
- Chromium 109.0.5414.46
- Mozilla Firefox 107.0
- WebKit 16.4
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 108
- Microsoft Edge 108
バージョン 1.28
Playwrightツール
- CodeGenのライブロケーター。 「Explore」ツールを使用して、ページの任意の要素のロケーターを生成します。
新しいAPI
ブラウザバージョン
- Chromium 108.0.5359.29
- Mozilla Firefox 106.0
- WebKit 16.4
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 107
- Microsoft Edge 107
バージョン 1.27
ロケーター
これらの新しいAPIにより、ロケーターの記述が快適になります
- テキストコンテンツで要素を特定する
page.get_by_text()
。 - ARIAロール、ARIA属性、アクセシブルネームで要素を特定する
page.get_by_role()
。 - 関連付けられたラベルのテキストでフォームコントロールを特定する
page.get_by_label()
。 data-testid
属性に基づいて要素を特定するpage.get_by_test_id()
(他の属性も設定可能)。- プレースホルダーによって入力を特定する
page.get_by_placeholder()
。 - テキスト代替によって要素(通常は画像)を特定する
page.get_by_alt_text()
。 - タイトルによって要素を特定する
page.get_by_title()
。
page.get_by_label("User Name").fill("John")
page.get_by_label("Password").fill("secret-password")
page.get_by_role("button", name="Sign in").click()
expect(page.get_by_text("Welcome, John!")).to_be_visible()
これらすべてのメソッドは、Locator
、FrameLocator
、およびFrame
クラスでも利用できます。
その他のハイライト
- v1.25で発表された通り、Ubuntu 18は2022年12月以降サポートされなくなります。それに加えて、次回のPlaywrightリリース以降、Ubuntu 18でのWebKitのアップデートは行われません。
動作の変更
-
空の値を持つ
expect(locator).to_have_attribute()
は、属性が欠落している場合にマッチしなくなりました。たとえば、以下のスニペットはbutton
にdisabled
属性がない場合に成功します。expect(page.get_by_role("button")).to_have_attribute("disabled", "")
ブラウザバージョン
- Chromium 107.0.5304.18
- Mozilla Firefox 105.0.1
- WebKit 16.0
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 106
- Microsoft Edge 106
バージョン 1.26
アサーション
expect(locator).to_be_enabled()
に新しいオプションenabled
。expect(locator).to_have_text()
がオープンシャドウルートを透過するようになりました。expect(locator).to_be_editable()
に新しいオプションeditable
。expect(locator).to_be_visible()
に新しいオプションvisible
。
その他のハイライト
api_request_context.get()
などでリダイレクト数を制限するための新しいオプションmax_redirects
。- Python 3.11がサポートされるようになりました。
動作の変更
Playwright APIの多くは、すでにwait_until: "domcontentloaded"
オプションをサポートしています。例えば
page.goto("https://playwright.dokyumento.jp", wait_until="domcontentloaded")
1.26より前は、これはすべてのiframeがDOMContentLoaded
イベントを発火するまで待機していました。
Web仕様に合わせるため、'domcontentloaded'
の値はターゲットフレームが'DOMContentLoaded'
イベントを発火するのを待つだけになりました。すべてのiframeを待機するにはwait_until="load"
を使用してください。
ブラウザのバージョン
- Chromium 106.0.5249.30
- Mozilla Firefox 104.0
- WebKit 16.0
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 105
- Microsoft Edge 105
バージョン 1.25
お知らせ
- 🎁 Ubuntu 22.04 Jammy Jellyfish の Docker イメージが出荷されるようになりました:
mcr.microsoft.com/playwright/python:v1.34.0-jammy
。 - 🪦 これは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 の「はじめに」ドキュメントを、よりエンドツーエンドテストに焦点を当てるように書き直しました。playwright.devでご確認ください。
バージョン 1.23
ネットワークリプレイ
ネットワークトラフィックをHARファイルに記録し、そのトラフィックをテストで再利用できるようになりました。
ネットワークをHARファイルに記録するには
npx playwright open --save-har=github.har.zip https://github.com/microsoft
または、HARをプログラムで記録することもできます。
- 同期
- 非同期
context = browser.new_context(record_har_path="github.har.zip")
# ... do stuff ...
context.close()
context = await browser.new_context(record_har_path="github.har.zip")
# ... do stuff ...
await context.close()
新しいメソッド page.route_from_har() または browser_context.route_from_har() を使用して、HARファイルから一致するレスポンスを提供します。
- 同期
- 非同期
context.route_from_har("github.har.zip")
await context.route_from_har("github.har.zip")
ドキュメントで詳細をご覧ください。
高度なルーティング
route.fallback() を使用して、ルーティングを他のハンドラに委譲できるようになりました。
次の例を考慮してください
- 同期
- 非同期
# Remove a header from all requests
def remove_header_handler(route: Route) -> None:
headers = route.request.all_headers()
if "if-none-match" in headers:
del headers["if-none-match"]
route.fallback(headers=headers)
page.route("**/*", remove_header_handler)
# Abort all images
def abort_images_handler(route: Route) -> None:
if route.request.resource_type == "image":
route.abort()
else:
route.fallback()
page.route("**/*", abort_images_handler)
# Remove a header from all requests
async def remove_header_handler(route: Route) -> None:
headers = await route.request.all_headers()
if "if-none-match" in headers:
del headers["if-none-match"]
await route.fallback(headers=headers)
await page.route("**/*", remove_header_handler)
# Abort all images
async def abort_images_handler(route: Route) -> None:
if route.request.resource_type == "image":
await route.abort()
else:
await route.fallback()
await page.route("**/*", abort_images_handler)
新しいメソッド page.route_from_har() と browser_context.route_from_har() もルーティングに参加し、委譲できることに注意してください。
Web-First アサーションの更新
<select multiple>
要素のすべての選択された値をアサートする新しいメソッド expect(locator).to_have_values() が追加されました。- メソッド expect(locator).to_contain_text() と expect(locator).to_have_text() が
ignore_case
オプションを受け入れるようになりました。
その他
-
邪魔になるサービスワーカーがある場合、新しいコンテキストオプション
service_workers
を使って簡単に無効化できるようになりました。- 同期
- 非同期
context = browser.new_context(service_workers="block")
page = context.new_page()context = await browser.new_context(service_workers="block")
page = await context.new_page() -
recordHar
コンテキストオプションに.zip
パスを使用すると、結果のHARが自動的にzip圧縮されます。- 同期
- 非同期
context = browser.new_context(record_har_path="github.har.zip")
context = await browser.new_context(record_har_path="github.har.zip")
-
HARを手動で編集する予定がある場合は、リプレイに不可欠な情報のみを記録する
"minimal"
HAR記録モードの使用を検討してください。- 同期
- 非同期
context = browser.new_context(record_har_mode="minimal", record_har_path="har.har")
context = await browser.new_context(record_har_mode="minimal", record_har_path="har.har")
-
Playwright は Ubuntu 22 amd64 および Ubuntu 22 arm64 で動作するようになりました。
バージョン 1.22
ハイライト
-
ARIAロール、ARIA属性、アクセシブルネームで要素を選択できるロールセレクタ。
# Click a button with accessible name "log in"
page.locator("role=button[name='log in']").click()ドキュメントで詳細をご覧ください。
-
既存のロケーターをフィルターするための新しい locator.filter() API。
buttons = page.locator("role=button")
# ...
submit_button = buttons.filter(has_text="Submit")
submit_button.click() -
Codegen が Pytest テストの生成をサポートするようになりました。
バージョン 1.21
ハイライト
-
ARIAロール、ARIA属性、アクセシブルネームで要素を選択できる新しいロールセレクタ。
- 同期
- 非同期
# Click a button with accessible name "log in"
page.locator("role=button[name='log in']").click()# Click a button with accessible name "log in"
await page.locator("role=button[name='log in']").click()ドキュメントで詳細をご覧ください。
-
より小さなサイズのスクリーンショットのための page.screenshot() に新しい
scale
オプションが追加されました。 -
テキストカーソルを制御するための page.screenshot() に新しい
caret
オプションが追加されました。デフォルトは"hide"
です。
動作の変更点
mcr.microsoft.com/playwright
docker イメージには Python が含まれなくなりました。Python がプリインストールされた Playwright 対応 docker イメージとしてmcr.microsoft.com/playwright/python
を使用してください。- Playwright は locator.set_input_files() API を介して大容量ファイル(数百MB)のアップロードをサポートするようになりました。
ブラウザのバージョン
- Chromium 101.0.4951.26
- Mozilla Firefox 98.0.2
- WebKit 15.4
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 100
- Microsoft Edge 100
バージョン 1.20
ハイライト
- メソッド page.screenshot()、locator.screenshot()、および element_handle.screenshot() の新しいオプション。
- オプション
animations: "disabled"
は、すべてのCSSアニメーションとトランジションを一貫した状態に巻き戻します。 - オプション
mask: Locator[]
は指定された要素をマスクし、ピンク色の#FF00FF
ボックスでオーバーレイします。
- オプション
- トレースビューアでAPIテストリクエストが表示されるようになりました。
- locator.highlight() は要素を視覚的に表示し、デバッグを容易にします。
お知らせ
- 指定されたPython Dockerイメージ
mcr.microsoft.com/playwright/python
の提供を開始しました。Python を使用している場合は、こちらに切り替えてください。これは、JavaScriptのmcr.microsoft.com/playwright
Dockerイメージに Python が含まれる最後のリリースです。 - 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
ハイライト
-
ロケーターが、別のロケーターを内部に含むことを確認する
has
オプションをサポートするようになりました。- 同期
- 非同期
page.locator("article", has=page.locator(".highlight")).click()
await page.locator("article", has=page.locator(".highlight")).click()
ロケーターのドキュメントで詳細をご覧ください。
-
新しい locator.page
-
page.screenshot() および locator.screenshot() が点滅するキャレットを自動的に非表示にするようになりました。
-
Playwright Codegen がロケーターとフレームロケーターを生成するようになりました。
ブラウザのバージョン
- Chromium 100.0.4863.0
- Mozilla Firefox 96.0.1
- WebKit 15.4
このバージョンは以下の安定版チャンネルでもテストされました
- Google Chrome 98
- Microsoft Edge 98
バージョン 1.18
APIテスト
Playwright for Python 1.18 では、新しいAPIテストが導入され、Python から直接サーバーにリクエストを送信できるようになりました!これで、次のことが可能になります。
- サーバーAPIをテストする
- テストでウェブアプリケーションにアクセスする前に、サーバー側の状態を準備する
- ブラウザで何らかのアクションを実行した後、サーバー側の事後条件を検証する
Playwrightのページに代わってリクエストを行うには、新しいpage.request APIを使用します。
- 同期
- 非同期
# Do a GET request on behalf of page
res = page.request.get("http://example.com/foo.json")
# Do a GET request on behalf of page
res = await page.request.get("http://example.com/foo.json")
ドキュメントで詳細をご覧ください。
Web-First アサーション
Playwright for Python 1.18 では、Web-First アサーションが導入されています。
次の例を考慮してください
- 同期
- 非同期
from playwright.sync_api import Page, expect
def test_status_becomes_submitted(page: Page) -> None:
# ..
page.locator("#submit-button").click()
expect(page.locator(".status")).to_have_text("Submitted")
from playwright.async_api import Page, expect
async def test_status_becomes_submitted(page: Page) -> None:
# ..
await page.locator("#submit-button").click()
await expect(page.locator(".status")).to_have_text("Submitted")
Playwright は、取得されたノードが "Submitted"
テキストを持つまで、セレクター .status
を持つノードを再テストし続けます。条件が満たされるかタイムアウトに達するまで、ノードを繰り返し取得し、確認します。このタイムアウトはオプションとして渡すことができます。
ドキュメントで詳細をご覧ください。
ロケーターの改善
-
各ロケーターは、含まれるテキストによってオプションでフィルタリングできるようになりました。
- 同期
- 非同期
page.locator("li", has_text="my item").locator("button").click()
await page.locator("li", has_text="my item").locator("button").click()
ロケーターのドキュメントで詳細をご覧ください。
新しいAPIと変更点
accept_downloads
オプションがデフォルトで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-First アサーションで使用できます。
フレームロケーターは、page.frame_locator() または locator.frame_locator() メソッドで作成できます。
locator = page.frame_locator("my-frame").locator("text=Submit")
locator.click()
ドキュメントで詳細をご覧ください。
トレースビューアの更新
Playwright Trace Viewer が https://trace.playwright.dev でオンラインで利用可能になりました!trace.zip
ファイルをドラッグアンドドロップするだけで、その内容を検査できます。
注: トレースファイルはどこにもアップロードされません。trace.playwright.dev は、トレースをローカルで処理するプログレッシブウェブアプリケーションです。
- Playwright テストトレースにデフォルトでソースが含まれるようになりました(トレースオプションでオフにできます)。
- トレースビューアでテスト名が表示されるようになりました。
- ブラウザの詳細を含む新しいトレースメタデータタブ
- スナップショットにURLバーが追加されました。
HTMLレポートの更新
- HTMLレポートが動的フィルタリングをサポートするようになりました。
- レポートは単一の静的HTMLファイルとなり、EメールやSlackの添付ファイルとして送信できるようになりました。
Ubuntu ARM64 サポートなど
-
Playwright は現在、Ubuntu 20.04 ARM64 をサポートしています。これにより、Apple M1 および Raspberry Pi の Docker 内で Playwright テストを実行できるようになりました。
-
Playwright を使用して Linux に Edge の安定版をインストールできるようになりました。
npx playwright install msedge
新しいAPI
バージョン 1.16
🎭 Playwright ライブラリ
locator.wait_for
ロケーターが指定された状態の単一の要素に解決されるのを待ちます。デフォルトは state: 'visible'
です。
リストを扱う際に特に便利です。
order_sent = page.locator("#order-sent")
order_sent.wait_for()
locator.wait_for() の詳細をご覧ください。
Arm64 用の Docker サポート
Playwright Docker イメージが Arm64 向けに公開され、Apple Silicon で使用できるようになりました。
Docker統合の詳細をご覧ください。
🎭 Playwright トレースビューア
npx playwright 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.wheel() を使用することで、垂直または水平にスクロールできるようになりました。
📜 新しいHeaders API
これまで、レスポンスの複数のヘッダー値を取得することはできませんでした。これが可能になり、追加のヘルパー関数が利用できるようになりました。
- request.all_headers()
- request.headers_array()
- request.header_value()
- response.all_headers()
- response.headers_array()
- response.header_value()
- response.header_values()
🌈 強制カラーエミュレーション
browser.new_context() に渡すか、page.emulate_media() を呼び出すことで、forced-colors
CSSメディア機能をエミュレートできるようになりました。
新しいAPI
- page.route() が、このルートが何回一致する必要があるかを指定する新しい
times
オプションを受け入れるようになりました。 - page.set_checked() と locator.set_checked() が導入され、チェックボックスのチェック状態を設定できるようになりました。
- request.sizes() 指定されたHTTPリクエストのリソースサイズ情報を返します。
- tracing.start_chunk() - 新しいトレースチャンクを開始します。
- tracing.stop_chunk() - 新しいトレースチャンクを停止します。
ブラウザのバージョン
- Chromium 96.0.4641.0
- Mozilla Firefox 92.0
- WebKit 15.0
バージョン 1.14
⚡️ 新しい「厳密モード」
セレクターの曖昧さは、自動化テストにおける一般的な問題です。「厳密モード」は、セレクターが単一の要素を指していることを保証し、そうでない場合は例外をスローします。
アクション呼び出しに strict=true
を渡して有効にします。
# This will throw if you have more than one button!
page.click("button", strict=True)
📍 新しい ロケーター API
ロケーターは、ページの要素へのビューを表します。それは、任意の時点で要素を取得するのに十分なロジックをカプセル化します。
ロケーターとElementHandleの違いは、後者が特定の要素を指すのに対し、ロケーターはその要素を取得する方法のロジックをカプセル化する点です。
また、ロケーターはデフォルトで「厳密」です!
locator = page.locator("button")
locator.click()
ドキュメントで詳細をご覧ください。
🧩 実験的な React および Vue セレクターエンジン
React および Vue セレクターは、コンポーネント名やプロパティ値で要素を選択できます。構文は属性セレクターと非常に似ており、すべての属性セレクター演算子をサポートしています。
page.locator("_react=SubmitButton[enabled=true]").click()
page.locator("_vue=submit-button[enabled=true]").click()
ReactセレクターのドキュメントとVueセレクターのドキュメントで詳細をご覧ください。
✨ 新しい nth
および visible
セレクターエンジン
nth
セレクターエンジンは:nth-match
疑似クラスと同等ですが、他のセレクターエンジンと組み合わせることができます。visible
セレクターエンジンは:visible
疑似クラスと同等ですが、他のセレクターエンジンと組み合わせることができます。
# select the first button among all buttons
button.click("button >> nth=0")
# or if you are using locators, you can use first, nth() and last
page.locator("button").first.click()
# click a visible button
button.click("button >> visible=true")
ブラウザのバージョン
- Chromium 94.0.4595.0
- Mozilla Firefox 91.0
- WebKit 15.0
バージョン 1.13
Playwright
- 🖖 プログラムによるドラッグアンドドロップのサポート。page.drag_and_drop() API を介して。
- 🔎 拡張されたHAR。リクエストとレスポンスのボディサイズが含まれます。browser.new_context() の
recordHar
オプションを介して使用します。
ツール
- Playwright Trace Viewer が、パラメータ、戻り値、
console.log()
呼び出しを表示するようになりました。
新しいガイドと刷新されたガイド
ブラウザのバージョン
- Chromium 93.0.4576.0
- Mozilla Firefox 90.0
- WebKit 14.2
新しい Playwright API
- browser.new_context() および browser.new_page() に新しい
baseURL
オプション - response.security_details() および response.server_addr()
- page.drag_and_drop() および frame.drag_and_drop()
- download.cancel()
- page.input_value()、frame.input_value() および element_handle.input_value()
- page.fill()、frame.fill()、および element_handle.fill() に新しい
force
オプション - page.select_option()、frame.select_option()、および element_handle.select_option() に新しい
force
オプション
バージョン 1.12
🧟♂️ Playwright Trace Viewer のご紹介
Playwright Trace Viewer は、スクリプト実行後に記録された Playwright トレースを探索するのに役立つ新しいGUIツールです。Playwright トレースを使用すると、以下を調べることができます。
- 各 Playwright アクションの前後のページDOM
- 各 Playwright アクションの前後のページレンダリング
- スクリプト実行中のブラウザネットワーク
トレースは新しい browser_context.tracing API を使用して記録されます。
browser = chromium.launch()
context = browser.new_context()
# Start tracing before creating / navigating a page.
context.tracing.start(screenshots=True, snapshots=True)
page.goto("https://playwright.dokyumento.jp")
# Stop tracing and export it into a zip archive.
context.tracing.stop(path = "trace.zip")
トレースは後で Playwright CLI を使用して検査されます。
playwright show-trace trace.zip
これにより、次のGUIが開きます。
👉 トレースビューアのドキュメントで詳細をご覧ください。
ブラウザのバージョン
- Chromium 93.0.4530.0
- Mozilla Firefox 89.0
- WebKit 14.2
このバージョンのPlaywrightは、以下の安定版チャネルでもテスト済みです。
- Google Chrome 91
- Microsoft Edge 91
新しいAPI
- page.emulate_media()、browser_type.launch_persistent_context()、browser.new_context()、および browser.new_page() の
reducedMotion
オプション - browser_context.on("request")
- browser_context.on("requestfailed")
- browser_context.on("requestfinished")
- browser_context.on("response")
- browser_type.launch() および browser_type.launch_persistent_context() の
tracesDir
オプション - 新しい browser_context.tracing API 名前空間
- 新しい download.page メソッド
バージョン 1.11
🎥 新しい動画: Playwright: A New Test Automation Framework for the Modern Web (スライド)
- Playwrightについて話しました
- 舞台裏のエンジニアリング作業を披露しました。
- 新機能のライブデモを行いました ✨
- イベントのホストと招待をしてくださった applitools に特別に感謝いたします!
ブラウザのバージョン
- Chromium 92.0.4498.0
- Mozilla Firefox 89.0b6
- WebKit 14.2
新しいAPI
- page.expect_request() などのメソッド全体で非同期述語をサポート
- 新しいエミュレーションデバイス: Galaxy S8、Galaxy S9+、Galaxy Tab S4、Pixel 3、Pixel 4
- 新しいメソッド
- URLへのナビゲーションを待機するための page.wait_for_url()
- スクリーン録画を管理するための video.delete() と video.save_as()
- 新しいオプション
- browser.new_context() メソッドでの
window.screen
寸法をエミュレートするscreen
オプション - page.check() および page.uncheck() メソッドでの
position
オプション - page.check()、page.uncheck()、page.click()、page.dblclick()、page.hover()、page.tap() でアクションをドライランするための
trial
オプション
- browser.new_context() メソッドでの
バージョン 1.10
- Playwright for Java v1.10 が安定版になりました!
- 新しいチャネルAPIを使用して、Google Chrome と Microsoft Edge の安定版チャネルに対して Playwright を実行します。
- Chromium のスクリーンショットが Mac と Windows で高速になりました。
バンドルされているブラウザのバージョン
- Chromium 90.0.4430.0
- Mozilla Firefox 87.0b10
- WebKit 14.2
このバージョンのPlaywrightは、以下の安定版チャネルでもテスト済みです。
- Google Chrome 89
- Microsoft Edge 89
新しいAPI
- browser_type.launch() が新しい
'channel'
オプションを受け入れるようになりました。ドキュメントで詳細をご覧ください。
バージョン 1.9
- Playwright Inspector は、テストの作成とデバッグに役立つ新しいGUIツールです。
- Playwright スクリプトの1行ごとのデバッグ。再生、一時停止、ステップ実行が可能です。
- ユーザーアクションを記録して新しいスクリプトを作成します。
- 要素にホバーすることで、スクリプト用の要素セレクターを生成します。
PWDEBUG=1
環境変数を設定してインスペクターを起動します。
- ヘッドモードで page.pause() を使用してスクリプトの実行を一時停止します。ページを一時停止すると、デバッグのために Playwright Inspector が起動します。
- CSSセレクター用の新しいhas-text疑似クラス。
:has-text("example")
は、要素の内部(子要素または子孫要素を含む可能性あり)に"example"
を含む任意の要素に一致します。その他の例を参照してください。 dialog
イベントのリスナーが設定されていない限り、ページダイアログは実行中に自動的に閉じられるようになりました。詳細はこちら。- Playwright for Python は、イディオム的なスネークケースAPIと、CI/CDでテストを実行するためのプリビルドされたDockerイメージを携えて、安定版になりました。
ブラウザのバージョン
- Chromium 90.0.4421.0
- Mozilla Firefox 86.0b10
- WebKit 14.1
新しいAPI
バージョン 1.8
-
:left-of()
,:right-of()
,:above()
,:below()
を使用したレイアウトに基づく要素の選択。 -
Playwright にコマンドラインインターフェース(旧 playwright-cli)が追加されました。
playwright --help
-
page.select_option() が、オプションが存在するまで待機するようになりました。
-
page.is_editable() のような要素の状態をアサートする新しいメソッド。
新しいAPI
- element_handle.is_checked().
- element_handle.is_disabled().
- element_handle.is_editable().
- element_handle.is_enabled().
- element_handle.is_hidden().
- element_handle.is_visible().
- page.is_checked().
- page.is_disabled().
- page.is_editable().
- page.is_enabled().
- page.is_hidden().
- page.is_visible().
- element_handle.wait_for_element_state() に新しいオプション
'editable'
。
ブラウザのバージョン
- Chromium 90.0.4392.0
- Mozilla Firefox 85.0b5
- WebKit 14.1
バージョン 1.7
- 新しいJava SDK: Playwright for Java が、JavaScript、Python、.NETバインディングと同等になりました。
- ブラウザストレージAPI: ブラウザのストレージ状態(クッキー、ローカルストレージ)を保存およびロードするための新しい便利なAPIが追加され、認証を伴う自動化シナリオが簡素化されました。
- 新しいCSSセレクター: より柔軟なセレクターに関するフィードバックを受け、セレクターの実装を刷新しました。Playwright 1.7では新しいCSS拡張が導入され、近日中により多くの機能が追加される予定です。
- 新しいウェブサイト: playwright.dev のドキュメントウェブサイトが更新され、Docusaurusで構築されるようになりました。
- Apple Siliconのサポート: PlaywrightのWebKitおよびChromiumブラウザバイナリがApple Silicon向けにビルドされるようになりました。
新しいAPI
- 後で再利用するために現在の状態を取得する browser_context.storage_state()。
- browser.new_context() および browser.new_page() の
storageState
オプションでブラウザコンテキストの状態を設定します。
ブラウザのバージョン
- Chromium 89.0.4344.0
- Mozilla Firefox 84.0b9
- WebKit 14.1