Every line is a test in three engines or a gate on every commit. The gaps are listed the same way, each with the requirement that will close it.
MeasuredARIA APG pattern in the JSDoclibs/components/tooltip/src/tooltip.ts — the pattern named in the class comment
MeasuredKeyboard map testedapps/sandbox-e2e/src/tooltip.spec.ts — Escape and the Tab arrival in three engines; libs/components/tooltip/src/tooltip.spec.ts for what a focus that is not visible does
Measuredaxe auditapps/sandbox-e2e/src/a11y.spec.ts — the /tooltip view, and separately an open tooltip over the icon-only button: the one place a violation would be real rather than a sandbox artefact (lesson-65) MeasuredVisual screenshotapps/sandbox-e2e/src/visual.spec.ts — tooltip-open, the card rather than the panel: what this component draws is a surface answering the page's own, and a picture of the panel alone would say nothing about the contrast between them
Measuredforced-colors: activeapps/sandbox-e2e/src/forced-colors.spec.ts — the mode takes the inversion away (both surfaces become Canvas), so the panel draws a CanvasText edge there and only there
Measuredprefers-reduced-motionapps/sandbox-e2e/src/tooltip.spec.ts — the duration read from the panel is the reduced one, and the leave still ends. The first component here with a real enter/leave, which is what the dialog's card said would arrive with it
By designTouch target ≥ 24×24 pxnone — deliberately: the tooltip draws no target. It hangs on somebody else's control, and that control's size is that control's promise
By designSize axisnone — deliberately: a tooltip has no control height. req-api-size is about --pct-control-height-*; the only width here is --pct-tooltip-max-width, which a consumer overrides
MeasuredRTLapps/sandbox-e2e/src/tooltip.spec.ts — end measured on both sides of the writing direction. The inline gap is the one thing a screenshot would not catch: the dependency resolves start/end by direction and adds the offset as plain pixels afterwards, so the sign is flipped in pctPlacementPositions
MeasuredSSR + hydrationapps/sandbox-e2e/src/hydration.spec.ts — the /tooltip view renders and hydrates with no NG05xx; a closed tooltip contributes no markup
By designFormsnone — deliberately: a tooltip is not a form control. It holds no value and implements no FormValueControl
MeasuredHover, focus and touch parityapps/sandbox-e2e/src/tooltip.spec.ts — the pointer, the keyboard (and a click, which opens nothing) and a long press; libs/components/tooltip/src/tooltip.spec.ts for the gestures' timers
MeasuredWCAG 1.4.13 — hoverableapps/sandbox-e2e/src/tooltip.spec.ts — the pointer travels onto the panel and it stays. The panel stands 8 px from the control, so reaching it means leaving the control, and the grace period is what keeps the text there
MeasuredThe leave is waited outapps/sandbox-e2e/src/tooltip.spec.ts (the panel outlives the decision to close, measured in three engines) + libs/components/core/src/core.spec.ts (pctAfterTransition: the event, the timeout floor and the cancel)
MeasuredParts in the inventorylibs/components/parts.snapshot.md, tools/check-parts.mjs (target check-parts)
MeasuredTokens + contrast.policy.jsonlibs/tokens/src/contrast.policy.json — one pair, and the only measurement pct.surface-inverse gets anywhere in the skin
By designStrings through PCT_TEXTSnone — deliberately: the component writes no string of its own
MeasuredSize budgetlibs/components/size.snapshot.md — the ./tooltip row, with the ./core row beside it
MeasuredScreen-reader logRead 2026-10-12 from docs/acr/at/ — three readers, whole sandbox, and this one is answered. A described control takes focus and all three say the description, after the name and the role: Orca Publish · button. · Runs every check before publishing., NVDA Publish, button, Runs every check before publishing, and VoiceOver, which reaches the other described button first, as in the passes of 2026-10-08 (dd0f02fa) and 2026-10-29, Delete the project Removes the project and everything in it button. The undescribed button beside it reads Approve the release, button and nothing more, so the description is attributable to the tooltip and not to the page
Measureddocs page/components/tooltip on the published site — prerendered, the demo's own source is the code tab