fix(web): six e2e tests fail since the header live indicator lists connections
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 半日
- 初心者へのやさしさ
- 72/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- nextjs, playwright, react, typescript
- 領域
- testing
調査の方向性
Start by reading the header indicator in src/components/app/arrivals.tsx (around lines 290 and 359) and the badge in src/components/connections/connection-status-badge.tsx:43 to see why the hidden tooltip duplicates page text. Then fix each lookup at e2e/connections.spec.ts:123,254,539, e2e/digitalocean.spec.ts:17 and e2e/posthog.spec.ts:14, scoping them to main content or role/name so they still fail if the page text disappears; the infinite .live-ready animation in src/app/globals.css:430 is what stalls the helper at e2e/year-in-review.spec.ts:16. Run the four specs through safe-e2e.sh, then the full PW_PROJECT=instance-wide suite; done means all six pass and no instance-wide specs are skipped.
索引モデルが issue の本文から書いたものです。
説明
Context
Since #395 (1ec5fdd, Closes #392) put the connected connections in the header live indicator, six Chromium end-to-end tests fail on main. Because they are in the chromium project, Playwright then skips the four instance-wide specs (simulated-providers, alert-email, simulated-sentry, demo-event), so a full run on main covers 292 of 302 tests.
Found while running the full local gate for the #377 epic pull request. Each failure was rerun on its own with the guarded runner (safe-e2e.sh <dir> 3197 -c <throwaway config> <spec:line>...) on main at 1ec5fdd and on 377-timeline-polish at 373203e (which contains 1ec5fdd). All six fail the same way on both:
[chromium] e2e/connections.spec.ts:123 getByText('No connections yet') strict mode violation: resolved to 2 elements:
1) <p>No connections yet. Add one on the Connections pa…</p>
2) <h2 ...>No connections yet</h2>
[chromium] e2e/connections.spec.ts:254 getByText('Status: Needs attention').first() Expected: visible Received: hidden
[chromium] e2e/connections.spec.ts:539 getByText('Status: Active').first() Expected: visible Received: hidden
[chromium] e2e/digitalocean.spec.ts:17 getByText('Example team').first() Expected: visible Received: hidden
[chromium] e2e/posthog.spec.ts:14 getByText('Example organization').first() Expected: visible Received: hidden
[chromium] e2e/year-in-review.spec.ts:22 Test timeout of 30000ms exceeded.
> 16 | await page.evaluate(() => Promise.all(document.getAnimations().map((animation) => animation.finished)));
Causes, from the code on main:
src/components/app/arrivals.tsxrendersLiveConnectionsListinside the header indicator's tooltip on every workspace page. It printsNo connections yet. Add one on the Connections page.(line 359) and each connection with its status badge, whose screen reader text isStatus: <label>(src/components/connections/connection-status-badge.tsx:43), plus the connection and account names. The tooltip is in the DOM but hidden, and it comes before the page content, sogetByText(...)is ambiguous andgetByText(...).first()picks the hidden copy.src/app/globals.css:430gives.live-ready(the live dot,arrivals.tsx:290)animation: live-ready 2.4s ease-out infinite. An infinite animation'sfinishedpromise never resolves, so the year in review spec's "wait for every animation" helper (e2e/year-in-review.spec.ts:16) waits until the test times out. The spec does not use reduced motion, which is the only state that stops the animation.
GitHub Actions has produced no run since 2026-11-06, so CI did not catch this on #395.
Plan
- Scope the five text lookups to the page content rather than the whole document (for example
page.getByRole("main")), or select the elements by role and accessible name, so the header tooltip cannot match. Do not change the tooltip copy to dodge the selectors. - Make the year in review helper wait only for animations that can finish (skip those whose effect timing has
iterations: Infinity), or scope it to the slide element it scans. - Run the six tests, then the full suite, so the
instance-widespecs run again.
Acceptance criteria
- The six tests above pass on a local run with the header live indicator showing connections and showing none.
- A full run of
playwright test --project=instance-wide(chromium as its dependency) reports no skippedinstance-widespecs. - No assertion is loosened: each lookup still fails if the page itself stops showing the text.
Files and areas
e2e/connections.spec.ts,e2e/digitalocean.spec.ts,e2e/posthog.spec.ts,e2e/year-in-review.spec.ts.- Non-goals: changing the live indicator's behavior or copy (#392), and the GitHub Actions outage.
Verification
/Users/eddie/Downloads/brain/scripts/safe-e2e.sh <worktree> <port> -c <config> e2e/connections.spec.ts e2e/digitalocean.spec.ts e2e/posthog.spec.ts e2e/year-in-review.spec.ts passes, then the full suite with PW_PROJECT=instance-wide.
Model: anthropic/claude-opus-5-5 | Reasoning effort: not exposed by harness
- 主要言語
- TypeScript
- スター
- 1
- フォーク
- 1
- 平均マージ
- 6時間 56分
- マージ済み PR(30日)
- 136
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
eddiejaoude/StackDash のほかの issue
-
area: docs documentation priority: P3 size: S
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
eddiejaoude/StackDash#462 ·
メンテナーはふだん 1 日以内に返信
-
area: web bug priority: P3 size: XS
難易度 1/5 1〜3時間 初心者へのやさしさ 85/100
eddiejaoude/StackDash#432 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
area: database bug priority: P3 size: S
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
eddiejaoude/StackDash#419 ·
メンテナーはふだん 1 日以内に返信
-
area: docs bug priority: P2 size: XS
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
eddiejaoude/StackDash#418 ·
メンテナーはふだん 1 日以内に返信
-
accessibility area: timeline bug priority: P3 size: XS
難易度 2/5 1〜3時間 初心者へのやさしさ 80/100
eddiejaoude/StackDash#389 ·
メンテナーはふだん 1 日以内に返信
eddiejaoude/StackDash の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
open-webui/tether#52 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
voidzero-dev/void#835 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
AykutSarac/jsoncrack.com#616 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
melgarafael/DeskcommCRM#4679 ·
メンテナーはふだん 1 日以内に返信