Playwrightのテストが増えると、落ちたテストを探すだけで時間を使います。成功したテストの一覧に埋もれて、flakyなテストや途中で中断したテストを見落とすこともあります。
Playwright 1.65では、失敗だけを見せるレポーターと、レポートに残す結果を絞るオプションが追加されました。共有資源を使うテストを一時的に直列化するテストロックも入っています。
失敗だけを流すfailuresレポーター
新しいfailuresレポーターは、テストの進行状況を大量に表示する代わりに、失敗と成功したリトライをその場で出し、最後に概要を表示します。
npx playwright test --reporter=failures
CIのログをあとから検索する運用では、これは地味に効きます。成功した数百件の行を読み飛ばして、失敗したテストとその原因に集中できます。もちろん、通常の進捗表示が不要になるので、初めて実行する人には向きません。
HTMLやJUnitも失敗中心にする
HTML、JSON、JUnitの各レポーターにはonlyFailuresオプションが追加されました。予期せぬ失敗だけでなく、flakyになったテストと中断されたテストも残ります。
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: [
['failures'],
['html', { onlyFailures: true }],
],
});
「全部のレポートを保存する」から「次に直すべきものだけ保存する」へ変えられます。CIのアーティファクト容量を減らすことが目的というより、レビュー対象を絞るための機能だと考えています。
共有資源だけを-exclusive-にする
すべてのテストを直列化すると遅くなります。Playwright 1.65のテストロックは、特定のテストだけを他のテストと同時に動かさないための仕組みです。
test('restart the server', { lock: '-exclusive-' }, async () => {
// サーバー再起動中は、他のテストを走らせない
});
サーバー再起動、共有データベースの初期化、同じポートを奪い合うテストなどが候補です。テスト全体のworkers: 1で逃げるより、競合する境界だけを明示できます。
1.65へ上げる前に確認すること
新機能だけを見てアップデートするのは危険です。1.65では、TypeScriptのクラスフィールド初期化、inert要素へのアクション、Cookieのマッチング、プロキシ認証などにも挙動変更があります。
まずCIで新しいバージョンを固定して実行し、失敗したテストをfailuresで集めます。そのうえで共有資源の競合が原因のものだけに-exclusive-を付ける。これが安全な導入順です。
詳しい変更点はPlaywright公式リリースノートで確認できます。AIにテストを直させる場合も、最初に渡すのは成功ログ全体ではなく、失敗・flaky・中断のレポートだけでよいはずです。

コメント