Skip to main content

Element explorer

All 1,627 catalogued elements, filterable by surface, tag, role, and interactivity.

This is the raw material the rest of the Coral schema section is built from. Every count elsewhere in this wiki resolves to a subset of these rows.

1,627 of 1,627 elements
SurfaceTagRoledata-testidDerived labelLabel sourceInteractive reasonDisabled
build.maina—appshell-skip-linkSkip to main contenttextContenthrefno
build.mainbutton——Expand navigationaria-labelnative-controlno
build.mainbutton—nav-homeHomearia-labelnative-controlno
build.mainbutton—nav-agentsAgentsaria-labelnative-controlno
build.mainbutton—nav-workflowsWorkflowsaria-labelnative-controlno
build.mainbutton—env-picker-triggerSwitch environment (current: Cypherdyne (default))aria-labelnative-controlno
build.maindiv—user-pillDtextContent—no
build.mainbuttonbuttonuser-pill-avatarOpen account menu for Darbotaria-labelnative-controlno
build.mainbutton—user-pill-moreMore options for Darbotaria-labelnative-controlno
build.maindiv—conversational-agent-authoring-page—none—no
build.mainheader—agent-command-barAgent toolbararia-label—no
build.mainbutton—agent-command-bar.titleRename agentaria-labelnative-controlno
build.maindivtablistagent-command-bar.tabsDesigner sectionsaria-label—no
build.maininone——nonetabindexno
build.mainbuttontab—BuildtextContentnative-controlno
build.mainbuttontab—PreviewtextContentnative-controlno
build.mainbuttontab—EvaluatetextContentnative-controlno
build.mainbuttontab—MonitortextContentnative-controlno
build.maininone——nonetabindexno
build.mainbutton—agent-command-bar.save-buttonSavearia-labelnative-controlyes
build.mainbutton—agent-command-bar.share-buttonSharearia-labelnative-controlno
build.mainbutton—agent-command-bar.feedbackSend feedbackaria-labelnative-controlno
build.mainbutton—agent-command-bar.overflow-triggerMore optionsaria-labelnative-controlno
build.mainbutton—agent-command-bar.publish-buttonPublisharia-labelnative-controlno
build.mainbutton—agent-command-bar.publish-split-chevronCustomize publish channelsaria-labelnative-controlno
build.maindiv—agent-detailsRaybottextContent—no
build.mainbutton—agent-icon-buttonEdit agent iconaria-labelnative-controlno
build.maintextarea——Name your agentaria-labelnative-controlno
build.mainbutton——Edit namearia-labelnative-controlno
build.maindiv—agent-instructions-builder—none—no
build.maininone——nonetabindexno
build.mainbutton——Undoaria-labelnative-controlyes
build.mainbutton——Redoaria-labelnative-controlyes
build.mainbutton——Boldaria-labelnative-controlno
build.mainbutton——Italicaria-labelnative-controlno
build.mainbutton——Strikethrougharia-labelnative-controlno
build.mainspan—toolbar-group-divider—none—no
build.mainbutton——Bullet listaria-labelnative-controlno
build.mainbutton——Number listaria-labelnative-controlno
build.mainspan—toolbar-group-divider—none—no
build.mainbutton——Clear formattingaria-labelnative-controlno
build.mainspan—toolbar-group-divider—none—no
build.mainbutton——Blockquotearia-labelnative-controlno
build.mainbutton——Inline codearia-labelnative-controlno
build.mainbutton——Insert linkaria-labelnative-controlno
build.maininone——nonetabindexno
build.mainspantextbox—Agent instructionsaria-labelrole:textboxno
build.mainaside—agent-side-panelAgent configurationaria-label—no
build.maindivseparatoragent-side-panel.drag-handleResize panelaria-labeltabindexno
build.maindiv—sidebar-model-pickerModelClaude Sonnet 4.6textContent—no
build.mainbuttoncomboboxmodel-selectorPrompt modelaria-labelnative-controlno
build.mainbutton——Clear selectionaria-labelnative-controlno
build.mainsection—agent-side-panel.iqMicrosoft IQaria-label—no
build.maindiv—agent-iq-sectionMicrosoft IQaria-label—no
build.mainbutton—agent-iq-add-buttonAdd Microsoft IQaria-labelnative-controlno
build.maindivtoolbaragent-iq-listMicrosoft IQaria-label—no
build.maininone——nonetabindexno
build.maindiv—agent-iq-pillraybot-kbtextContent—no
build.mainbutton——raybot-kbtextContentnative-controlno
build.mainbutton——Remove raybot-kbaria-labelnative-controlno
Page 1 of 28

Reading a row​

ColumnMeaning
surfaceWhich of the sixteen surfaces the element was captured on
testIdThe data-testid, or null
tagHTML tag name
roleARIA role, explicit or implicit, or null
labelDerived label, or null
labelSourceWhich heuristic produced the label
isInteractiveComputed interactivity
interactiveReasonWhich rule made it interactive
isDisabledDisabled at capture time

interactiveReason is the useful column​

isInteractive is a boolean, which is not very informative on its own. interactiveReason records why the element was classified interactive, drawn from:

  • Native interactive element type — button, a[href], input, select, textarea
  • An explicit ARIA role in the interactive set
  • A tabindex making it focusable
  • contenteditable

This distinction matters when deciding how to target something. An element interactive by virtue of tabindex behaves differently from a native button: keyboard activation may not fire a click handler, and a naive .click() may do nothing observable.

labelSource is the same idea for labels​

A derived label with no recorded provenance is an assertion. labelSource records which heuristic fired — visible text content, aria-label, aria-labelledby, title, placeholder, or an associated label element.

This lets you judge a label rather than trust it. A label derived from visible text is strong evidence. One derived from a title attribute is weaker, because title is frequently stale or decorative.

Filtering for null label gives you the label gaps.

Element counts do not sum the way you expect​

Three overlapping populations, deliberately not nested:

1,627 total elements
1,115 interactive (computed independently of test ids)
983 carrying a data-testid

1,115 + 983 exceeds 1,627 because the sets overlap heavily but neither contains the other. There are interactive elements with no test id, and test-id-bearing elements that are inert.

Any analysis treating "has a test id" as a proxy for "is interactive" will produce wrong numbers in both directions. This is honesty note 1 on the confidence model page, and the element table is where you can see it directly: filter for isInteractive true and testId null, then invert.

Visibility and occlusion are not in this table​

The per-surface surfaces table carries notVisible and occludedVisibleNotTopmost counts. Those are summarized per surface rather than exposed per element here.

If you need per-element visibility, it is in the raw surface dumps under coral-schema/surfaces/. The slim element dataset drops it to keep the payload shippable — elements-slim.json uses single-character keys (s, t, r, l, i, d) for the same reason.

Using this data outside the site​

data/elements.json is plain JSON with no dependency on the site or the object model:

import elements from './data/elements.json';

const untestable = elements.filter(
(e) => e.isInteractive && !e.testId && !e.label,
);

That query returns the elements that are interactive, unlabelled, and untargetable by test id — the hardest things in the application to automate against reliably. It is the most useful single query in the dataset.