テストは通ったのに、trace.zipを公開してはいけない
PlaywrightのテストがCIで失敗したとき、trace.zipや動画、HARを保存すると原因調査が一気に楽になります。私も失敗したテストのスクリーンショットだけでは足りず、traceを開いて「どのリクエストの後に壊れたのか」を確認します。
ただし、ここにはログイン後の画面やネットワーク通信も入ります。テスト用パスワードを入力した画面、Cookie、Authorizationヘッダーが、調査用ファイルに残る可能性があります。
便利な証跡ほど、公開範囲を間違えると秘密情報のコピーになります。今回は、何が残るのかと、CIでどう扱うかを整理します。
traceには画面だけでなく通信も入る
PlaywrightのTrace Viewerでは、アクションごとのスクリーンショット、DOMのスナップショット、コンソール、ネットワーク情報を確認できます。画面の見た目だけを保存する機能ではありません。
そのため、ログイン処理の直後にtraceを保存すると、次のような情報が含まれることがあります。
- 入力欄に入れたメールアドレスやテスト用パスワード
- CookieやLocal Storageなどのログイン状態
- リクエストヘッダーやレスポンス本文
- 画面に表示されたユーザー情報
実際に何が保存されるかはアプリとテストの作り方で変わります。ですので「テスト用アカウントだから安全」と決めつけないでください。テスト用アカウントが本番データに触れられるなら、漏れたときの影響も本番に近づきます。
videoとHARも同じように確認する
動画は画面の記録なので、入力した値やユーザー名が映ります。マスク処理を入れていないフォームなら、パスワード入力の場面も記録対象です。
HARはネットワーク通信を保存する形式です。レスポンスだけでなく、リクエストヘッダーやCookieが含まれることがあります。ネットワーク再現のために便利ですが、ブラウザの開発者ツールから書き出したHARを、そのまま共有するのは危険です。
trace、video、HARのどれか一つだけを危険視すればよいわけではありません。画面を記録するもの、通信を記録するもの、両方を記録するものとして、保存先を同じ基準で管理します。
まずは「いつ記録するか」を絞る
私が最初に見直すのは、保存する頻度です。すべてのテストでtraceと動画を残すと、調査資料が増えるだけでなく、秘密情報を含むファイルも増えます。
use: {
trace: 'on-first-retry',
video: 'retain-on-failure',
}
失敗時だけ保存する設定は、常時保存よりは範囲を狭められます。ただし、失敗したテストがログイン処理を通っているなら、失敗時のtraceにもログイン情報は残り得ます。これは安全対策の完成ではなく、保存量を減らす一手です。
さらに、認証前と認証後でプロジェクトを分ける、秘密情報を入力するテストでは動画を保存しない、といった境界を決めます。設定を一行足すだけで全部解決、とは考えない方がよいです。
CIのアーティファクトを公開場所にしない
テストが失敗すると、CIのアーティファクトにtrace.zipをアップロードしたくなります。ここで確認したいのは、リポジトリが公開かどうかだけではありません。
- アーティファクトを誰がダウンロードできるか
- 保存期間が何日か
- プルリクエストの外部コントリビューターに見えるか
- 失敗ログを別のサービスへ転送していないか
公開リポジトリのCIでは、アーティファクトがソースコードと同じ感覚で広がるとは限りません。アクセス権、保持期間、フォークからの実行条件をCIサービスの仕様で確認してください。
私なら、まず非公開のテスト用リポジトリで保存し、保持期間を短くします。調査が終わった証跡を残し続ける理由がなければ、削除する運用まで決めます。
安全に調査するための最低限のルール
次のルールだけでも、事故の確率は下げられます。
- 本番アカウントではなく、権限を絞ったテストアカウントを使う
- traceやvideoを保存するテストに本番データを入れない
- CIアーティファクトは非公開にし、保持期間を短くする
- 共有前にTrace ViewerとHARを開き、入力値とヘッダーを目視確認する
- 不要になった証跡を削除する
特に4番目を省略しがちです。ファイル名だけ見て「テスト用だから大丈夫」と判断せず、実体を一度開いてください。保存されたものを見ないと、何が残ったのか分かりません。
まとめ
Playwrightのtrace、video、HARは、失敗原因を追うための強い味方です。ですが、ログイン後の画面や通信も記録するため、秘密情報の保管場所にもなります。
常時保存を避ける、テスト用アカウントの権限を絞る、CIアーティファクトを非公開・短期保存にする。この3つから始めてください。
証跡を残すこと自体が悪いのではありません。誰が見られるのか、いつ消すのかを決めないまま残すことが危ないのです。私もテストが落ちたときほど急いでtraceを開きますが、共有ボタンを押す前に中身を見る癖は付けておきたいと思っています。


コメント