目次
第1章 Playwrightハンズオン
1.1 Playwrightのセットアップ方法
- 1.1.1 インストールと初期設定
 - 1.1.2 Playwrightのディレクトリ構成
 
1.2 テスト用Webアプリケーションの作成
- 1.2.1 Playwrightの導入
 
1.3 表示のテストとテストの実行方法
- 1.3.1 新規ページの作成
 - 1.3.2 最初のテスト
 - 1.3.3 テストの実行
 
1.4 ページ遷移のテストとテスト生成機能
- 1.4.1 フォーム入力のテストを生成する
 
1.5 フォーム操作のテスト
1.6 まとめ
第2章 E2Eテストツールの紹介
2.1 E2Eテストツールの歴史
2.2 ブラウザベースのE2Eテストツール
- 2.2.1 Cypress
 - 2.2.2 Puppeteer
 - 2.2.3 Playwright
 - 2.2.4 E2Eテストツールの比較
 
2.3 WebフロントエンドフレームワークとE2Eテストツール
- 2.3.1 Svelte
 - 2.3.2 Vue.js
 - 2.3.3 React
 - 2.3.4 Angular
 - 2.3.5 Electron
 
2.4 まとめ
第3章 Playwrightのテスト用ツールセット(1)ロケーター
3.1 テストツールのカテゴリ
- [column]アサーションとPlaywright
 
3.2 ロケーター
- 3.2.1 getByRole()
 - 3.2.2 getByLabel()
 - 3.2.3 getByPlaceholder()
 - 3.2.4 getByText()
 - 3.2.5 getByAltText()
 - 3.2.6 getByTitle()
 - 3.2.7 getByTestId()
 - [column]data-testidはいつ使うべきか?
 - 3.2.8 その他のロケーター
 
3.3 壊れにくいテスト
- 3.3.1 ラベルやプレースホルダーのみによる要素取得
 - 3.3.2 適切なラベルの付け方
 
3.4 getByRole()で指定可能なロール
- 3.4.1 テストで頻繁に利用するロール
 - 3.4.2 テストでの利用頻度が低いと思われるロール
 
3.5 高度なロケーター
- 3.5.1 フィルター
 - 3.5.2 一度絞り込んだ要素の中からさらに検索
 - 3.5.3 複数の要素の絞り込み
 - 3.5.4 その他のロケーター
 - 3.5.5 複数要素のあるリストやテーブルからの情報取得
 
3.6 まとめ
第4章 Playwrightのテスト用ツールセット(2)ナビゲーション,アクション,マッチャー
4.1 ナビゲーション
- 4.1.1 goto()
 - 4.1.2 waitForURL()
 - 4.1.3 toHaveTitle()とtoHaveURL()
 
4.2 アクション
- 4.2.1 アクション可能性
 - 4.2.2 キーボード操作:fill()/clear()/press()/pressSequentially()
 - 4.2.3 チェックボックスやラジオボタンのチェック:check()/uncheck()
 - 4.2.4 セレクトボックスの選択:selectOption()
 - 4.2.5 マウス操作:click()/dblclick()/hover()/dragTo()
 - 4.2.6 フォーカス:focus()
 - 4.2.7 ファイルのアップロード:setInputFiles()
 
4.3 マッチャー
- 4.3.1 toContainText()/toHaveText()/toBeVisible()/toBeAttached()
 - 4.3.2 not
 - 4.3.3 toBeChecked()
 - 4.3.4 toBeDisabled()とtoBeEnabled()
 - 4.3.5 toBeEmpty()とtoBeHidden()
 - 4.3.6 toBeFocused()
 - 4.3.7 toHaveCount()
 - 4.3.8 toHaveValue()とtoHaveValues()
 - 4.3.9 その他のマッチャー
 
4.4 リトライの挙動
- 4.4.1 リトライのタイムアウト
 - 4.4.2 固定時間を待つコードはやめよう
 
4.5 まとめ
第5章 テストコードの組み立て方
5.1 何をテストとするか?
- 5.1.1 テストの分類とPlaywrightができること
 - 5.1.2 テストのボリュームのパターン
 - 5.1.3 最初の一歩:一筆書き
 
5.2 テストコードを書く
- 5.2.1 test()
 - 5.2.2 テストのグループ化
 - [column]ビヘイビア駆動開発(BDD)の用語
 - 5.2.3 準備・片付けコードを共有する
 - 5.2.4 すばやく繰り返す
 
5.3 テストのコメントを書くべきか
5.4 テストファイルの命名
5.5 ビジュアルリグレッションテスト
5.6 まとめ
第6章 実践的なテクニック
6.1 スクリーンショットとビデオ
- 6.1.1 スクリーンショットの撮影
 - 6.1.2 ビデオの撮影
 
6.2 認証を伴うテスト
- 6.2.1 認証を使わないモードを実装する
 - 6.2.2 セッション情報を共有する
 
6.3 ネットワークの監視とハンドリング
- 6.3.1 ネットワークの監視
 - 6.3.2 ネットワークのハンドリング
 
6.4 複数ブラウザでの動作確認
- 6.4.1 ブラウザの基礎知識
 - 6.4.2 Playwrightのサポートブラウザ
 - 6.4.3 ブラウザのインストール
 - 6.4.4 ブラウザの設定
 - 6.4.5 複数ブラウザのテストを実行
 - 6.4.6 ブラウザのエミュレーション
 - [column]Playwright Test for VSCodeで実行するブラウザを指定するには
 - [column]設定のスコープ
 
6.5 まとめ
第7章 ソフトウェアテストに向き合う心構え
7.1 テストの7原則
7.2 ソフトウェアテストの構成要素
- 7.2.1 テストレベル
 - 7.2.2 テストタイプ
 - [column]確認テストとリグレッションテスト
 - 7.2.3 テスト技法
 - [column]テスト技法を理解すると設計力も上がる
 
7.3 コード品質とは何か?
7.4 E2Eテストとユニットテストの効率の良い棲み分け
- [column]パラメータ化テスト
 
7.5 テストコードの設計方針とリファクタリング
- 7.5.1 テストは単独で実行できるようにする
 - 7.5.2 テストは単独で読めるようにする
 - 7.5.3 壊れにくいテストにする
 
7.6 モックとの付き合い方
7.7 E2Eテストの投資対効果を上げる
- [column]テスト自動化の8原則
 
7.8 まとめ
第8章 E2Eの枠を超えたPlaywrightの応用例
8.1 ランダムテスト
- 8.1.1 ランダムにリンクをクリックするテスト
 
8.2 コンポーネントのテスト
- 8.2.1 インストール
 - 8.2.2 コンポーネントに対するテストのメリット/デメリット
 - 8.2.3 コンポーネントに対するテストのサンプル
 - 8.2.4 コンポーネントに対するビジュアルリグレッションテスト
 
8.3 再利用可能性
- 8.3.1 テストの流れを把握しやすくする
 - 8.3.2 テストを書きにくい画面に気づいたとき
 
8.4 テストの並列実行
- 8.4.1 並列実行におけるPlaywrightの仕様
 - 8.4.2 並列にテストを実行しないようにする
 - 8.4.3 並列にテストを実行する際の注意
 
8.5 まとめ
第9章 Web APIのテスト
9.1 PlaywrightにおけるWeb APIテスト
9.2 テストの実行例
9.3 タイムトラベルデバッグ
9.4 より詳細なテスト方法
- 9.4.1 メソッド
 - 9.4.2 ヘッダとクエリの送信
 - 9.4.3 ボディの送信
 
9.5 通常のE2Eテストの中からWeb APIを呼び出す
9.6 まとめ
第10章 E2Eテストの実戦投入
10.1 どのテストから書き始めるか
- 10.1.1 人力テストからE2Eテストへ移行する
 - 10.1.2 テストシナリオを洗い出してからE2Eテストを書く
 - 10.1.3 ユニットテストから書き始める
 
10.2 E2Eテストをどのリポジトリに置くか
- 10.2.1 E2Eテスト専用リポジトリ
 - 10.2.2 フロントエンドのリポジトリとの相乗り
 
10.3 CIでのE2Eテスト実行
- 10.3.1 GitHub ActionsでPlaywrightのE2Eテストを実行
 - 10.3.2 CI実行結果のレポートを確認
 - 10.3.3 CI実行時間の短縮
 
10.4 プロジェクト管理との統合
- 10.4.1 テストのプロジェクト管理
 - 10.4.2 自動テストとの統合
 
10.5 まとめ
第11章 Playwrightの内部構造
11.1 Playwrightのアーキテクチャ
11.2 他のE2Eテストツールのアーキテクチャ
- 11.2.1 Cypressのアーキテクチャ
 - 11.2.2 Seleniumのアーキテクチャ
 
11.3 クライアント/サーバ構成でのテスト実行
- 11.3.1 サーバの起動
 - 11.3.2 接続先サーバの指定
 - 11.3.3 テストの実行
 - 11.3.4 使いどころ
 
11.4 まとめ
付録
付録A 生成AIによるテストコードの自動生成
- A.1 テストの作成
 - A.2 テストデータの作成
 - A.3 テストケースの作成
 
付録B VSCode Dev Containersを利用した環境構築
- B.1 VSCode Dev Containersとは
 - B.2 セットアップ手順
 - B.3 PlaywrightのUIモード実行
 
付録C ユニットテストフレームワークとの共存
- C.1 Jestとの共存
 - C.2 Vitestとの共存
 
付録D Playwrightを使ったスクレイピング
- D.1 スクレイピングを行う際の注意
 - D.2 プロジェクトの作成とひな形のコード生成
 - D.3 構造の修正とコマンドライン引数のパース
 - D.4 都道府県情報のパース
 - D.5 週間天気のパース
 
付録E Microsoft Playwright Testing
- E.1 Microsoft Playwright Testingを試す
 - E.2 ワークスペースを作成する
 - E.3 テスト環境を設定する
 - E.4 テストを実行する