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

Aperta
#360 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
62/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
nextjs, playwright, typescript
Ambito
testing

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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

Lingua principale
TypeScript
Stelle
1
Fork
1
Merge medio
6h 56m
PR unite (30g)
136

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di eddiejaoude/StackDash

Tutte le issue di eddiejaoude/StackDash

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.