test(connections): the reopened dismissed-dialog spec fails intermittently

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

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

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

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
55/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
nextjs, playwright, react, typescript
領域
frontend, testing

調査の方向性

Run safe-e2e.sh <worktree> <port> -c playwright.config.ts e2e/connections.spec.ts:485 --repeat-each 20 first to see the flake and pull the trace. Then read the #367 tests around e2e/connections.spec.ts:485-531 alongside src/app/w/[workspace]/connections/[connectionId]/page.tsx and its not-found handling, checking whether the route refresh after the released action re-renders for a connection deleteConnectionRow already removed. Done means 20 guarded runs pass with the assertion unloosened, and a recorded verdict on whether the test or the page is wrong; the "workspace" wording in the not-found copy is a separate note.

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

説明

area: connections bug priority: P3 size: S

Context

e2e/connections.spec.ts:485 "shows a failure beside the opener when its dialog was dismissed and reopened while working (#367)" failed once and passed on the next run, on branch 442-e2e-failures (#446), whose diff does not touch this test or the page it covers. It passed in the two runs before that too, so it is intermittent. Found while verifying #442.

Failure: locator.click: Test timeout of 30000ms exceeded at line 531 (await opener.click(), "Opening the dialog again starts fresh"), waiting for getByRole('main').getByRole('button', { name: 'Disconnect', exact: true }). The page snapshot at the timeout shows the connection page replaced by the not-found state:

- main:
    - paragraph: Not found
    - heading "We could not find that workspace" [level=1]
    - paragraph: The link may be mistyped, or you may not be a member of this workspace. ...

The test deletes the connection row (deleteConnectionRow) while the held server action is pending, then releases it. Hypothesis, not yet checked: once the action settles, the route refresh re-renders the page for a connection that no longer exists, so the opener goes away before the second opener.click(), depending on timing. The not-found copy also says "workspace" for what is a missing connection, which may be a separate copy bug.

The failure screenshot was overwritten by the passing rerun; the page snapshot above is from error-context.md of the failed run.

Plan

  1. Reproduce with repeated runs of this one test through safe-e2e.sh (--repeat-each), and capture the trace.
  2. Decide whether the test is wrong (it expects the page to stay after its connection is deleted) or the UI is (the page should keep the opener and show the failure, per #367), and record which on this issue.
  3. Fix accordingly, without loosening the assertion.

Acceptance criteria

  • The test passes on 20 repeated runs through the guarded runner
  • Playwright e2e: this spec is the coverage

Files and areas

e2e/connections.spec.ts (the #367 tests), src/app/w/[workspace]/connections/[connectionId]/page.tsx and its not-found handling. Non-goals: other connection specs.

Verification

safe-e2e.sh <worktree> <port> -c playwright.config.ts e2e/connections.spec.ts:485 --repeat-each 20 -> 0 failures.

Model: anthropic/claude-opus-5-5 | Reasoning effort: not reported by the harness

主要言語
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 を短くまとめたダイジェスト。