Two e2e tests time out on the first request to a cold dev server

オープン
#360 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
62/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
nextjs, playwright, typescript
領域
testing

調査の方向性

Start by reproducing: delete .next and run safe-e2e.sh <worktree> 3207 against e2e/alert-rules.spec.ts and e2e/command-palette.spec.ts alone, so the first request to each route or server action is cold. Read the Playwright config for webServer and any existing warm-up or readiness helper other specs use, then look at how e2e/alert-rules.spec.ts:62 waits for the status message and how e2e/command-palette.spec.ts:201 waits on the dashboard. Done means both wait on an observable readiness signal (no sleeps, no retries) and pass 10 consecutive fresh runs, with the confirmed cause written into the issue.

索引モデルが issue の本文から書いたものです。

説明

area: ci bug impact: low priority: P3 size: S

Summary

Two e2e tests failed once in a local Chromium run of PR #352 (#342) at bf8cfda and passed in the next run at b54b7cb, where nothing they exercise had changed. Both failures were the first request to a route or server action in a freshly started next dev, so the likely cause is on-demand compilation outlasting the assertion timeout. Per the house rules a flaky test is a bug of its own.

Evidence

Run at bf8cfda through the guarded runner (safe-e2e.sh <worktree> 3207 -c <throwaway config> e2e/pr342-evidence.spec.ts e2e/alert-rules.spec.ts e2e/alert-channels.spec.ts e2e/projects.spec.ts e2e/api.spec.ts e2e/connections.spec.ts e2e/command-palette.spec.ts, one worker, no retries, .next deleted first): 60 passed, 3 failed. One failure was a real bug fixed in that branch; these two were not:

  1. e2e/alert-rules.spec.ts:62 ("creates a percent rule from a preset, then pauses, resumes, and deletes it"):

    Error: expect(locator).toBeVisible() failed
    Locator: getByRole('form', { name: 'Add an alert rule' }).getByRole('status').filter({ hasText: 'Alert rule added.' })
    Timeout: 5000ms
    

    The page snapshot at failure shows the submit button still reading "Saving" and disabled after 5 seconds, so the add rule action had not returned yet. It was the first call to that server action in the run.

  2. e2e/command-palette.spec.ts:201 ("opens from the shell button, filters, and opens the chosen result"): Test timeout of 30000ms exceeded. The page snapshot shows the dashboard still at its "Loading the dashboard" status. It was the first visit to /w/<workspace>/dashboard in the run.

Run at b54b7cb with the same runner and the same spec list: 67 passed, including both tests (1.6s and 2.4s).

Acceptance criteria

  • The cause is confirmed and stated here (cold compilation in next dev, or something else).
  • Both tests wait on an observable condition that covers the first, cold request (or the run warms the routes they use first), with no added sleep and no retry, and each passes in 10 consecutive fresh local runs.

Model: anthropic/claude-opus-5-5 | Reasoning effort: low

主要言語
TypeScript
スター
1
フォーク
1
平均マージ
6時間 56分
マージ済み PR(30日)
136

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

eddiejaoude/StackDash のほかの issue

eddiejaoude/StackDash の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。