テストジェネレーター
はじめに
Playwrightは、ブラウザでアクションを実行する際にテストを自動生成する機能を備えており、テストを素早く開始するのに最適です。Playwrightは、ページを分析して最適なロケーターを特定し、役割、テキスト、テストIDロケーターを優先します。ジェネレーターがロケーターに一致する複数の要素を見つけた場合、ターゲット要素を一意に識別するためにロケーターを改善し、堅牢にします。
VS Codeでテストを生成
VS Code拡張機能をインストールし、VS Codeから直接テストを生成します。この拡張機能はVS Code Marketplaceで入手できます。「VS Codeではじめに」ガイドをご覧ください。
新しいテストを記録
テストを記録するには、テストサイドバーから「Record new」ボタンをクリックします。これにより、test-1.spec.ts
ファイルが作成され、ブラウザウィンドウが開きます。

ブラウザでテストしたいURLに移動し、クリック操作を開始してユーザーアクションを記録します。
Playwrightは、ユーザーのアクションを記録し、VS Codeに直接テストコードを生成します。ツールバーのアイコンのいずれかを選択し、ページ上の要素をクリックしてアサーションを生成することもできます。以下のアサーションを生成できます。
'assert visibility'
要素が表示されていることをアサートする'assert text'
要素が特定のテキストを含んでいることをアサートする'assert value'
要素が特定の値を持っていることをアサートする
記録が完了したら、「cancel」ボタンをクリックするか、ブラウザウィンドウを閉じます。その後、test-1.spec.ts
ファイルを検査し、必要に応じて手動で改善できます。
カーソル位置で記録
テストの特定のポイントから記録するには、さらにアクションを記録したい場所にカーソルを移動し、テストサイドバーの「Record at cursor」ボタンをクリックします。ブラウザウィンドウがまだ開いていない場合は、まず「Show browser」にチェックを入れてテストを実行し、その後「Record at cursor」ボタンをクリックします。
ブラウザウィンドウで、記録したいアクションを実行し始めます。

VS Codeのテストファイルで、新しく生成されたアクションがカーソル位置にテストに追加されているのがわかります。
ロケーターの生成
テストジェネレーターでロケーターを生成できます。
- テストサイドバーから「Pick locator」ボタンをクリックし、ブラウザウィンドウ内の要素にカーソルを合わせると、各要素の下にハイライト表示されたロケーターが表示されます。
- 必要な要素をクリックすると、VS Codeの「Pick locator」ボックスに表示されます。
- キーボードのEnterを押すとロケーターがクリップボードにコピーされ、コードのどこにでも貼り付けられます。キャンセルしたい場合は「Escape」を押してください。

Playwright Inspectorでテストを生成
codegen
コマンドを実行すると、2つのウィンドウが開きます。1つはテストしたいウェブサイトと対話するブラウザウィンドウ、もう1つはテストを記録し、エディタにコピーできるPlaywright Inspectorウィンドウです。
Codegenの実行
codegen
コマンドを使用してテストジェネレーターを実行し、その後にテストを生成したいウェブサイトのURLを指定します。URLはオプションであり、コマンドをURLなしで実行し、後でブラウザウィンドウにURLを直接追加することもできます。
npx playwright codegen demo.playwright.dev/todomvc
テストの記録
codegen
コマンドを実行し、ブラウザウィンドウでアクションを実行します。Playwrightはユーザーインタラクションのコードを生成し、Playwright Inspectorウィンドウで確認できます。テストの記録が完了したら、記録を停止し、「copy」ボタンを押して生成されたテストをエディタにコピーします。
テストジェネレーターを使用すると、以下を記録できます
- ページを操作するだけでクリックや入力などのアクション
- ツールバーのアイコンの1つをクリックし、次にページ上の要素をクリックしてアサートすることでアサーションを生成できます。以下を選択できます
'assert visibility'
要素が表示されていることをアサートする'assert text'
要素が特定のテキストを含んでいることをアサートする'assert value'
要素が特定の値を持っていることをアサートする
ページとの対話が終了したら、「record」ボタンを押して記録を停止し、「copy」ボタンを使用して生成されたコードをエディタにコピーします。
「clear」ボタンを使用してコードをクリアし、再度記録を開始します。完了したら、Playwright Inspectorウィンドウを閉じるか、ターミナルコマンドを停止します。
ロケーターの生成
テストジェネレーターでロケーターを生成できます。
- 「
'Record'
」ボタンを押して記録を停止すると、「'Pick Locator'
」ボタンが表示されます。 - 「
'Pick Locator'
」ボタンをクリックし、ブラウザウィンドウ内の要素にカーソルを合わせると、各要素の下にハイライト表示されたロケーターが表示されます。 - ロケーターを選択するには、特定したい要素をクリックすると、そのロケーターのコードが「Pick Locator」ボタンの隣のフィールドに表示されます。
- その後、このフィールドでロケーターを編集して微調整したり、「copy」ボタンを使用してコピーし、コードに貼り付けたりできます。
エミュレーション
テストジェネレーターを使用して、エミュレーションを利用したテストを生成できます。特定のビューポート、デバイス、カラースキームのテストを生成したり、地理位置情報、言語、タイムゾーンをエミュレートしたりできます。また、認証状態を維持したままテストを生成することも可能です。
ビューポートサイズのエミュレート
Playwrightは、ビューポートが特定の幅と高さに設定されたブラウザウィンドウを開きます。テストは同じ条件下で実行する必要があるため、レスポンシブではありません。異なるビューポートサイズでテストを生成するには、--viewport
オプションを使用します。
npx playwright codegen --viewport-size="800,600" playwright.dev

デバイスのエミュレート
--device
オプションを使用して、ビューポートサイズやユーザーエージェントなどを設定し、モバイルデバイスをエミュレートしながらスクリプトとテストを記録します。
npx playwright codegen --device="iPhone 13" playwright.dev

カラースキームのエミュレート
--color-scheme
オプションを使用して、カラースキームをエミュレートしながらスクリプトとテストを記録します。
npx playwright codegen --color-scheme=dark playwright.dev

地理位置情報、言語、タイムゾーンのエミュレート
--timezone
、--geolocation
、--lang
オプションを使用して、タイムゾーン、言語、場所をエミュレートしながらスクリプトとテストを記録します。ページが開いたら
- クッキーを承認する
- 右上にある「locate me」ボタンをクリックして、地理位置情報が動作していることを確認します。
npx playwright codegen --timezone="Europe/Rome" --geolocation="41.890221,12.492348" --lang="it-IT" bing.com/maps

認証状態を保持する
codegen
を--save-storage
オプション付きで実行すると、セッションの最後にクッキー、localStorage、およびIndexedDBのデータを保存できます。これは、認証ステップを個別に記録し、後で他のテストを記録する際に再利用するのに役立ちます。
npx playwright codegen github.com/microsoft/playwright --save-storage=auth.json

ログイン
認証を実行しブラウザを閉じると、auth.json
にストレージ状態が含まれ、これをテストで再利用できます。

auth.json
は機密情報が含まれているため、ローカルでのみ使用するようにしてください。auth.json
を.gitignore
に追加するか、テストの生成が完了したら削除してください。
認証状態のロード
--load-storage
オプション付きで実行すると、以前にauth.json
からロードされたストレージが使用されます。これにより、すべてのクッキー、localStorage、およびIndexedDBデータが復元され、ほとんどのウェブアプリを再度ログインすることなく認証状態に移行できます。これは、ログイン状態からテストの生成を続行できることを意味します。
npx playwright codegen --load-storage=auth.json github.com/microsoft/playwright

カスタムセットアップを使用した記録
非標準のセットアップ(例: browserContext.route()
を使用する場合)でcodegenを使用したい場合は、page.pause()
を呼び出すことで、codegenコントロールを備えた別のウィンドウを開くことができます。
const { chromium } = require('@playwright/test');
(async () => {
// Make sure to run headed.
const browser = await chromium.launch({ headless: false });
// Setup context however you like.
const context = await browser.newContext({ /* pass any options */ });
await context.route('**/*', route => route.continue());
// Pause the page, and start recording manually.
const page = await context.newPage();
await page.pause();
})();