
目次
- 自動テストを作りました!!!!
- なんでそんなことをしたのかという話
- 『『『リリース前の手動チェックに時間がかかりすぎるよ~~~😭😭😭』』』
- Playwrightってなにもの?
- Playwrightのここがすごい
- 1. あらゆるブラウザに対応🌐
- 2. どんな環境でもテスト可能 💻
- 私たちが実装した自動テストの詳細
- Playwrightを使えるようにする手順
- 環境構築・設定のやり方(Playwright実装用のリポジトリがある場合)
- 環境変数の設定手順
- フォルダ構成
- テストケース追加方法
- CSVをオブジェクトに変換する
- テスト実施方法
- テスト実施における注意点⚠️
- テストを実施するときのポイント
- 出力されるエビデンス
- Playwrightを触ってわかったこと
- Tailwind CSSとPlaywrightの相性と、変更に強いテストの書き方✒️
- 1.操作の「実行」は、変更に強い😄
- 2.クラス名に依存した「検証」は、変更に弱い😞
- locatorとgetByTextは要素によって使い分ける
- テスト処理の作成中は、デグレに気が付きやすい😲
- さいごに
自動テストを作りました!!!!
なんでそんなことをしたのかという話
とあるプロジェクトのリリース前には、割と莫大な量のテストを行う必要がありました。
しかも週一ペースで、手動で。なんとな~く想像はつくと思いますが、超超超時間がかかった訳です。
チームメンバーに担当か所の割り振りして、画面のスクショとって、エビデンス作って、エビデンスの再鑑して…
『スクリーンショットの画面が足りないからテスト最初からやり直し!!!!!』
『エビデンス、この項目足りてなくない?ちゃんと見た?』
『テストの進みが遅くない?リリース間に合う?』
『エビデンス格納のExcelが超重い😡😡😡😡😡』
『期限までに間に合わない😭😭😭』
みんな人間なので、集中力もいつかは切れます。
私たちの悩みはいつも1つ……
『『『リリース前の手動チェックに時間がかかりすぎるよ~~~😭😭😭』』』
この悩みを解決してくれるのが、Playwrightってわけ。
Playwrightのおかげで、10人規模で約3週間も時間がかかっていたテストが、4人で半日で終わるようになっちゃったんですね~~~!!!
マジで素晴らしい。Playwrightでの開発に関わってくださった人達みんな最強!!!褒めてほしい。
☺️<えらいね~
↑うれしい
Playwrightってなにもの?
一言でいうと、「ユーザーが実際にサイトを操作するのと同じ流れ(エンドツーエンドテスト)を、自動で実行してくれる超強力なツール」です。
Playwrightの公式Documentのリンク貼っておきます。
詳しくはそちらを参考にしてください。
https://playwright.dev/docs/intro
Playwrightのここがすごい
1. あらゆるブラウザに対応🌐
Playwrightは、Google ChromeやMicrosoft Edgeの元になっているChromium、Safariの元になっているWebKit、そしてFirefoxという、世界の主要なブラウザエンジンをすべてサポートしています。これにより、「このブラウザだけで動かない」といった問題を確実に捉えることができます。
2. どんな環境でもテスト可能 💻
あなたのPCがWindowsでも、Macでも、Linuxでも問題なく動作します。さらに、テスト実行中にブラウザ画面を表示させて動きを確認したり(ヘッドフル)、裏側で高速に実行したり(ヘッドレス)することも可能です。開発中のデバッグから、CI/CDツールと連携した自動化まで、あらゆるシーンで活躍します。
私たちが実装した自動テストの詳細
- ブラウザ
- Chromium
- 実装環境
- Windows
- 自動テストの機能
- 画面操作
- スクリーンショットを撮影
- 文字検証
Playwrightを使えるようにする手順
ここからは、Playwrightを使うためのアレコレを簡単に説明していきます。
コマンドに関してですが、コードブロックにするとますます読みにくくなるので太字にしてます。許して。
環境構築・設定のやり方(Playwright実装用のリポジトリがある場合)
- 管理者用でターミナルを開く
- npm install -g yarnを行い、yarnを確認する
→既に入っている場合、file already existsと表示される - git clone(gitのhttpsをコピー)する
- クローンしたリポジトリをVScodeで開く
- ターミナル(GitBash)でyarn installを実行
- yarn playwright installを実行
- yarn playwright install-depsを実行
拡張機能 Playwright Test for VSCodeをインストール
- 拡張機能のインストール後、VSCodeの再起動を行う
VSCodeのサイドバーにフラスコマークの「テスト」が追加されるため、それをクリック
PLAYWRIGHTをクリックし、以下の項目にチェックを入れる
・PROJECTS の chromium
・SETTINGS の Show browser
環境変数の設定手順
- .envという名前のファイルを作成する
.envファイルに環境変数を設定する
テストケースのpath設定はここで行う
フォルダ構成
- tests/ Playwright テストの本体
- テストファイル名.spec.ts playwright によるテストの記述all.spec.tsで全テストケースが網羅されているテストケースごとに実行できる
- constants/ テスト間で使いまわす定数の置き場
- interfaces/ テストで利用するインターフェース
- utils/ テスト間でサブルーチン的に使えるテストフローなどの置き場
- .env/ (Git リポジトリ上にはない) playwright のテスト時の環境変数設定ファイル
- .env.sample/ .env ファイルに書く内容のテンプレ
- playwright.config.ts/ Playwright の設定ファイル
テストケース追加方法
- Excelで空白のブックを開く
- A1セルを左端として、1行目にヘッダー項目を記入する
- A2以下の行は、作成したいテストケースを入力する例:アイスを注文するテストケース
- テストケースを記入し終わったら、拡張子を.csvに変更して保存する
- 保存したテストファイルを環境変数やコード上に設定してテストデータを読み込む
⚠️注意⚠️
上記のテストケースはブログ用に限りなくわかりやすくするための例であり、実際のテストケースはもっとヘッダーの量が多くなります。
CSVをオブジェクトに変換する
今回のテストではCSVを読み込んだ後、interfaceで型付けを行いました。
TypeScriptexport interface OrderInfo{
iceInfo: IceInfo[],
containerType: string,
notes: string
}
TypeScriptexport interface IceInfo{
iceName: string,
size: string,
quantity: int,
}
- 型安全性の向上
- コードの可読性の向上
- リファクタリングの容易さ
CSVは構造が単純なので、IceInfoなどリストの長さを自由には変えることはできません(そのためにはメニュー1、メニュー2、メニュー3と列を増やす必要がある)。ですが、今回はテストケースを量産したかったので、リストの長さは最大2を想定してCSVを作成しました。
テスト実施方法
- サイドバーの「フラスコ」マークの「テスト」をクリック
- 「>テストエクスプローラー」をクリック
「>tests」が表示されるので、それをクリック
「>all.spec.ts」をクリックすると、.envで設定したテストケースが表示される
- 「テストの実行」をクリックすると、青いChromeのようなものが立ち上がりテストが実行される
テスト実施における注意点⚠️

テストを実施するときのポイント
テストが通らない🤔
特定のテストケースだけ実行したい🤔
出力されるエビデンス
playwright-report
テストを実行する度にreportが出力される。
- data
まとめて行ったテストのスクリーンショットやPDFが格納されている - index.html
テストが成功したか、失敗した場合どの部分で落ちたのかが記録されている

その他自動テスト内で出力されるようにしたもの
今回の場合だと、私たちはエビデンスの信憑性を高めるためにスクリーンショットを撮影し、出力する機能を付け足しています。この辺は各プロジェクトによって色々違うと思うので、臨機応変に対応してください。
Playwrightを触ってわかったこと
Tailwind CSSとPlaywrightの相性と、変更に強いテストの書き方✒️
Tailwind CSSは、mr-1(margin-right: 4px)のように、見た目のスタイルをそのままクラス名としてHTMLに記述するライブラリです。この仕組みは、UIを少し変更しただけでクラス名が変わってしまうため、クラス名に依存したPlaywrightのテストは脆くなりがちです。しかし、この課題はテストの書き方次第で克服できます。変更に強いテストを書くには、テストの目的が操作の「実行」なのか「検証」なのかを意識し、アプローチを変えることが重要です。
1.操作の「実行」は、変更に強い😄
ボタンをクリックする、フォームに入力するといった「実行」が目的のテストは、UIの変更に強く作ることができます。Playwrightでは、mr-1のような変わりやすいスタイリング用のクラスではなく、getByRole()などユーザーの操作に紐づく方法で要素を特定することが推奨されます。このアプローチを取れば、UIのデザインが変更されてもテストは安定して動作します。
2.クラス名に依存した「検証」は、変更に弱い😞
locatorとgetByTextは要素によって使い分ける
以下の表は、locatorと getByTextを比較したものです。私たちはlocatorを多用して実装を行いましたが、要素によって適切なメソッドを使用することが大切です。

テスト処理の作成中は、デグレに気が付きやすい😲
画面操作の処理を自動テストに組み込んでいる場合、開発やリリースでデグレがあった場所で処理が止まり、デグレの早期発見、場所の特定が容易になります。
さいごに
おおざっぱな手順紹介でしたが、読んでくださりありがとうございました。
良いPlaywrightLifeをお送りください😎😎😎