🎭

【Playwright】Test GeneratorでAssertion(一部)のコードを自動生成できるようになった

2023/12/17に公開

はじめに

先日、Playwright v1.40.0 がリリースされました🎉
https://github.com/microsoft/playwright/releases/tag/v1.40.0

中でも Test Generator のアップデートが便利そうだったので試してみました。

Test Generator とは

ブラウザ上での操作をもとにテストコードを自動生成してくれる機能です。
https://playwright.dev/docs/codegen

下記のキャプチャでは『Record』を有効にした後、いくつかのリンクをクリックしています。
画面右側を見てみると、対応する操作のコードが自動生成されていることが分かります。

他にもボタンクリック、テキスト入力など一通りの操作に対応するテストコードも自動生成が可能です。

今回のアップデートで何が変わった?

これまでも操作系のコードは自動生成できていたものの、意図した状態になっているかの検証(Assertion)は手動で書く必要がありました。ですが、v1.40.0 から Assertion (一部)も自動生成できるようになりました🙌

提案された issue への反応を見る限り、待ち望んでいた人は多そうですね。
https://github.com/microsoft/playwright/issues/14913

今回の Test Generator のアップデートでサポートされた Assertion は次の通りです。

実際に試してみる

v1.40.0 から『Record』をクリックすると、下記のようなメニューバーが表示されるようになりました。このメニューバーに Assetion が追加されています。

以降、追加された Assertion を1つずつ試していきます。

なお、今回は Playwright の公式ドキュメントを対象にテストを書いていきます。
https://playwright.dev/

toBeVisible

toBeVisible を使用することで 特定の要素が表示されているか 検証できます。
今回は 公式ドキュメントの右上にある検索窓が表示されているか 検証するコードを生成してみます。

生成されたコードがこちらです。

await expect(page.getByLabel('Search')).toBeVisible();

toContainText

toContainText を使用することで 特定の要素のtextが意図した値になっているか 検証できます。
今回は 公式ドキュメントのトップページに「Playwright enables reliable end-to-end testing for modern web apps.」 が表示されているか 検証するコードを生成してみます。

生成されたコードがこちらです。

await expect(page.locator('h1')).toContainText('Playwright enables reliable end-to-end testing for modern web apps.');

toHaveValue

toHaveValue を使用することで input要素のvalue属性が指定した値になっているか 検証できます。
今回は 公式ドキュメントの検索窓に意図した値が設定されているか 検証するコードを生成してみます。なお、検証できる状態にするため、事前にテキストを入力します。(あまり良い例ではありませんが...)

生成されたコードがこちらです。

await expect(page.getByPlaceholder('Search docs')).toHaveValue('Assertions');

おわりに

今回は Test Generatorを使って Assertion のコードを自動生成してみました。
試してみてけっこう便利そうと感じたので、実務でも積極的に活用していきたいです💪
この流れで他の Assertion もサポートされると嬉しい...!

参考

Discussion