Playwright: test.describe.serial

参考: https://playwright.dev/docs/api/class-test#test-describe-serial

テストグループ内のテストを常に順番通りに直列実行するためのAPI。グループ内の1つのテストが失敗すると、後続のテストはすべてスキップされる。また、リトライ時はグループ全体がまとめて再実行される。

test.describe.serial('group', () => {
  test('runs first', async ({ page }) => {});
  test('runs second', async ({ page }) => {});
});

注意点

  • serial実行自体が公式では非推奨。テスト同士が依存し合う設計になりやすく、テストの独立性が損なわれるため。可能な限りテストは独立させるべき
  • test.describe.serialというAPI自体もDiscouragedとされている。こちらはAPIの統一性の問題で、test.describe.configure({ mode: 'serial' })の方がmode/retries/timeoutをまとめて設定できて整理されているため
// 推奨されるAPI(挙動は.serialと同じ)
test.describe.configure({ mode: 'serial' });

test('runs first', async ({ page }) => {});
test('runs second', async ({ page }) => {});

ユースケース

  • ログイン → 設定変更 → ログアウトのような、前のテストの状態に依存するフローをまとめてテストしたい場合