とほほのPlaywright入門

目次

Playwrightとは

本書の対象バージョン

OS : Windows 11
Node : 22.19.0
Playwright : 1.55.1 (2025年10月)

インストール

下記から [Windowsインストーラー(.msi)] をダウンロードして Node.js をインストールしてください。

[コマンドプロンプト] を起動し、下記を実行してください。問い合わせにはすべて Enter でかまいません。

C:\Users\xxxx> mkdir PlaywrightTest
C:\Users\xxxx> cd PlaywrightTest
C:\Users\xxxx\PlaywrightTest> npm init playwright@latest

下記のファイルがインストールされます。

 node_modules                # Node.jsのモジュール群
 package-lock.json           # パッケージの固定化情報
 package.json                # プロジェクトの基本情報
 playwright.config.ts        # テストコンフィグレーション
 tests                       # テスト対象フォルダ(最小限のテストサンプル)
│ └ example.spec.ts
 tests-examples              # リッチなテストサンプル
 demo-todo-app.spec.ts

チュートリアル

簡易テストを実行する

[コマンドプロンプト] から下記を実行してください。playwright.config.ts ファイルの testDir で指定されたフォルダ(tests)内のテストを実行します。テストはヘッドレスモード(ブラウザを画面に表示しないモード)で実行されます。

npx playwright test

テストレポートを見る

[コマンドプロンプト] から下記を実行してください。

npx playwright show-report

chromium, firefox, webkit で合計6個のテストに ✓(チェック) がついていれば成功です。

UIからテストする

[コマンドプロンプト] から下記を実行してください。

npx playwright test --ui

画面が開きます。[F5] キーを押すか ▷ ボタンを押すとテストを実行します。

使用方法

ブラウザ表示モードでテストする

--headed を指定するとブラウザをヘッドレスではなくブラウザ画面を表示するモードでテストを実行します。

npx playwright test --headed

ブラウザを指定する

--project はプロジェクト(ブラウザ) を指定します。chromiumfirefoxwebkit を指定可能です。

npx playwright test --project=chromium

テストするファイルを指定する

ファイル名を指定すると、testDir で指定したディレクトリではなく、引数で指定したファイルのみを実行します。Windows でもパスの区切り文字はスラッシュ(/)で指定してください。

npx playwright test tests/example.spec.ts

テストUIを起動する

--ui を指定するとテストUIを開きます。

npx playwright test --ui

テストスクリプト

基本サンプル

簡単な実行例 (test.ts) を下記に示します。ブラウザを起動し、https://example.com を開き、そのスクリーンショットを取って閉じます。chromium の代わりに firefoxwebkit を指定することもできます。

const { chromium } = require('playwright');
(async() => {
  const browser = await chromium.launch();
  const context = await browser.newContext();
  const page = await context.newPage();
  await page.goto('https://example.com');
  // ここに様々な操作を記述します  
  await page.screenshot({ path: 'screenshot.png' });  
  await browser.close();
})();

test() を用いていないので npx playwright test ではなく node コマンドで実行します。

node test.ts

スクリーンショットファイル screenshot.png ファイルが作成されていれば成功です。

ブラウザ

非ヘッドレスモードで開く

browserType.launch() のオプション指定により、非ヘッドレスモード(ブラウザを画面に表示するモード)で実行します。

const browser = await chromium.launch({ headless: false });

ウィンドウサイズを指定する

browser.newContext() のオプションで指定できます。

const context = await browser.newContext({ viewport: { width: 800, height: 600 } });

ページ

指定したページを開く

page.goto()url で指定したページ(URL)を開きます。

await page.goto(url);

ページがロードされるのを待つ

page.waitForLoadState() はページが完全にロードされるのを待ちます。

await page.waitForLoadState();

要素操作

要素を参照する(CSSセレクタ)

page.locator()selector で示す要素を返します。selector には '#btn1''input[name=q]' など CSS のセレクタを指定できます。

Locator btn1 = page.locator(selector);
btn1.click();

要素を参照する(ロール)

page.getByRole() は "送信" ボタン、"住所" 入力欄など、CSSセレクタよりも直感的な方法で要素を特定します。

const btn1 = page.getByRole('button', { name: '送信' });
const txt1 = page.getByRole('textbox', { name: '住所' });

入力欄に文字列を入力する

page.fill()selector で示す要素に文字列 text を入力します。

await page.fill(selector, text)

要素をクリックする

page.click()selector で示す要素をクリックします。

await page.click(selector);