Skip to main content

Shared test ids

76 of the 177 unique test ids appear on more than one surface. That is 43 percent.

This is the most actionable finding in the audit. A data-testid alone is not a sufficient selector in Coral.

76 of 76 shared test ids
data-testidSurfaces ↓OccurrencesAppears onInteractiveSample label
agent-command-bar1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainnoAgent toolbar
agent-command-bar.feedback1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesSend feedback
agent-command-bar.overflow-trigger1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesMore options
agent-command-bar.publish-button1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesPublish
agent-command-bar.publish-split-chevron1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesCustomize publish channels
agent-command-bar.save-button1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesSave
agent-command-bar.share-button1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesShare
agent-command-bar.tabs1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainnoDesigner sections
agent-command-bar.title1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesRename agent
agent-preview-chat1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainnoNew chatEnd user preview
appshell-skip-link1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesSkip to main content
conversational-agent-authoring-page1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainnoRaybotRaybotBuildPreviewEvaluateMonitorPublishRaybotInstructionsYou are Raybot, an expert assistant for Ray and Ray clus…
env-picker-trigger1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesSwitch environment (current: Cypherdyne (default))
nav-agents1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesAgents
nav-home1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesHome
nav-workflows1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesWorkflows
new-chat-button1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesNew chat
preview-chat-card1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainno—
preview-chat-end-user-toggle1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyeson
preview-chat-header1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainnoNew chatEnd user preview
preview-chat-suggestions-area1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainno—
user-pill1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainnoD
user-pill-avatar1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesOpen account menu for Darbot
user-pill-more1616build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.main, preview.mainyesMore options for Darbot
preview-chat-header-overflow1515build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-access, evaluate.main, monitor.mainyesMore actions
agent-connected-agents1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoConnected agents
agent-connected-agents-section1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoConnected agents
agent-details1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoRaybot
agent-icon-button1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessyesEdit agent icon
agent-instructions-builder1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoInstructionsYou are Raybot, an expert assistant for Ray and Ray clusters (the open-source distributed computing framewor…
agent-iq-add-button1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessyesAdd Microsoft IQ
agent-iq-list1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoMicrosoft IQ
agent-iq-pill1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoraybot-kb
agent-iq-section1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoMicrosoft IQ
agent-side-panel1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoAgent configuration
agent-side-panel.connected-agents.add-button1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessyesAdd connected agent
agent-side-panel.drag-handle1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessyesResize panel
agent-side-panel.iq1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoMicrosoft IQ
agent-side-panel.knowledge1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoKnowledgeProvide trusted context to guide decisionshttps://docs.ray.io
agent-side-panel.knowledge.item1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnohttps://docs.ray.io
agent-side-panel.knowledge.list1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoKnowledge
agent-side-panel.memory1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoMemory
agent-side-panel.memory.section1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoMemoryRemember interactions, workflows and context for improved results.
agent-side-panel.memory.toggle1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessyesEnable memory
agent-side-panel.skills1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoSkillsDefine behaviors through structured instructionsray-cluster-troubleshooter
agent-side-panel.skills.add-button1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessyesAdd skill
agent-side-panel.skills.item1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoray-cluster-troubleshooter
agent-side-panel.skills.list1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoSkills
agent-side-panel.tools1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessnoTools
agent-side-panel.tools.add-button1313build.main, dialog.add.microsoft-iq, dialog.add-connected-agent, dialog.add-knowledge, dialog.add-knowledge.advanced, dialog.add-mcp-server, dialog.add-skill.blank, dialog.add-skill.upload, dialog.add-tool, dialog.settings.agent-details, dialog.settings.ai-behavior, dialog.settings.greeting-prompts, dialog.settings.safety-accessyesAdd tool
Page 1 of 2

Why this table is derived, not copied​

The audit's own schema-validation.json publishes a sharedTestIdsAcrossSurfaces array containing only the top 40 rows by surface count. The true count is 76.

Rather than reproduce a truncated list, this table derives the full set from testids.json by filtering on isShared. The numbers here are therefore complete where the source array is not.

This is worth flagging because it is a good example of a subtle data trap: a field named sharedTestIdsAcrossSurfaces reasonably reads as "all of them", and the totals object separately reports 76. Consuming the array and reporting its length would produce a confidently wrong answer of 40.

What breaks​

A selector that matches by test id alone will, for 43 percent of ids, match on more than one surface. The failure modes in descending order of unpleasantness:

Silent wrong-element interaction. The selector resolves, a click lands, and it lands on the wrong control. No error, wrong outcome. This is the worst case because nothing surfaces it.

Strict-mode violation. Playwright's strict mode throws when a locator resolves to multiple elements. This is the good outcome — loud and immediate.

Intermittent failure. The selector works while only one surface is mounted, and fails when a modal or panel that shares the id is open. This presents as flakiness and gets papered over with retries.

What to do instead​

Qualify by surface. Scope the locator to the surface container before matching the test id.

const panel = page.getByTestId('agent-side-panel');
await panel.getByTestId('add-button').click();

Prefer role and accessible name. This is what the Phase 7 capture loop does, and it is the reason that loop is reliable across 13 node types:

await page.getByRole('button', { name: 'Add a step after Start' }).click();
await page.getByRole('button', { name: 'Select action: Loop' }).click();

Role plus name is stable across re-renders, survives snapshot invalidation, and does not depend on the application author having written a unique test id.

Never cache element references. In Coral, refs go stale on every snapshot. A ref captured before a render is invalid after it. This interacts badly with shared test ids: a re-resolve may bind to a different element than the original. Re-query by role and name each time.

Why ids are shared​

Mostly legitimate component reuse. A shared add-button, a shared card shell, a shared dialog footer. The test id travels with the component, and the component appears on many surfaces.

That makes this a selector-design observation rather than an application defect. The application is not wrong to reuse components. Automation is wrong to assume the resulting ids are unique.

The fix belongs on the consuming side: qualify by surface, or prefer role and name. Asking the application to emit globally unique test ids for reused components would trade a small automation inconvenience for a real maintenance burden.

Within-surface duplication is a separate problem​

This page covers ids shared across surfaces. Ids repeated within a single surface are counted separately in the dupTestIdsInSurface column on the surfaces page.

Within-surface duplication is harder. Qualifying by surface does not help, because the collision is inside the surface. These need an index, a nested scope, or a distinguishing accessible name:

const rows = page.getByTestId('knowledge-card');
await rows.filter({ hasText: 'docs.ray.io' }).click();

Filtering by content is preferable to indexing by position, because position changes when the underlying collection reorders and the resulting failure is again silent.