Playwrightでテストが不安定なときに効果がある設定の紹介です。
テストが不安定というのは、テスト結果がOKになったり、NGになったりして安定しないという意味です。
テストコードの書き方が悪くてテストが不安定になっているのであれば、テストコードを修正すべきです。
しかし、テスト対象のサーバーが不安定であったり、ネットワークが不安定であったり、どんなにコードをトレースしても原因が不明であったりで、不安定になる可能性はあります。
そんなときのplaywright.config.tsの設定です。
設定 | 説明 | 効果 |
---|---|---|
retries | テスト失敗時のテスト再試行回数 | 再試行によりテスト成功する可能性がある |
workers | テスト実行するプロセスの数 | 減らすことによりサーバー負荷が軽減する可能性がある |
reporter | テスト結果のレポート出力 | htmlにしておくとtraceの設定と組み合わせてトレース情報が出力される |
use.trace | トレース情報出力有無・出力タイミング | retain-on-failureにしておくとテスト失敗時にトレース情報出力 |
timeout | 一つのテスト実行のタイムアウト時間 | 長くしておくと、サーバーやネットワーク負荷が高いときでもテストを実行しきれる可能性がある |
expect.timeout | アサーションのタイムアウト時間 | 長くしておくと、サーバーやネットワーク負荷が高いときでもテストを実行しきれる可能性がある |
設定例は以下です。
playwright.config.ts
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
testDir: './tests',
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: 2,
workers: 3,
reporter: 'html',
timeout: 30,
expect: {
timeout: 10
},
use: {
trace: 'retain-on-failure',
},
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
}
]
});
テストに失敗すると、レポートにトレース情報が出力されます。
画面がどういう状態になっていたかなど確認できるため、原因をトレースしやすくなります。