Skip to content

Unique test id per GraphSelector mount (fix strict-mode collision)#139

Merged
mvalancy merged 1 commit into
devfrom
fix/graph-selector-unique-testid
Jun 19, 2026
Merged

Unique test id per GraphSelector mount (fix strict-mode collision)#139
mvalancy merged 1 commit into
devfrom
fix/graph-selector-unique-testid

Conversation

@mvalancy

Copy link
Copy Markdown
Member

GraphSelector mounts in up to 3 responsive slots at once (sidebar, phone top-bar, workspace top-bar), each hard-coding data-testid="graph-selector" → duplicate test id in the DOM → strict-mode selector violations (broke the shared navigateToWorkspace E2E helper). Adds a testId prop (default graph-selector = canonical workspace mount); sidebar/phone get graph-selector-sidebar/graph-selector-mobile.

Surfaced by a dogfood session driving the live dev stack. Verified: web typecheck; THE GATE 5/5; getByTestId('graph-selector') resolves to exactly 1; 0 page/GraphQL errors in session.

🤖 Generated with Claude Code

GraphSelector is mounted in up to three responsive slots at once (sidebar,
phone top-bar, workspace top-bar) and every instance hard-coded
data-testid="graph-selector". On desktop workspace that put 2+ elements with the
same test id in the DOM, so any strict-mode selector (e.g. the shared E2E
navigateToWorkspace helper's isVisible/getByTestId) errored with a strict-mode
violation. Add a `testId` prop (default 'graph-selector' = the canonical
workspace mount); the sidebar/phone mounts now use graph-selector-sidebar /
graph-selector-mobile. getByTestId('graph-selector') is unique again.

Found by a dogfood session against the live dev stack. Verified: typecheck;
THE GATE 5/5; canonical count == 1, 0 page/GraphQL errors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mvalancy mvalancy merged commit 486848f into dev Jun 19, 2026
@mvalancy mvalancy deleted the fix/graph-selector-unique-testid branch June 19, 2026 15:31
@github-actions

Copy link
Copy Markdown

🧪 Comprehensive Test Suite

  • Unit suites (Node 18.x & 20.x) — core, web, server, mcp-server: ✅ passed
  • Installer & deploy config: ✅ passed

Full-stack smoke gate runs in the CI workflow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant