Skip to content

Test/testing tooltip#215

Open
real-venus wants to merge 2 commits into
Agentpay-Org:mainfrom
real-venus:test/testing-tooltip
Open

Test/testing tooltip#215
real-venus wants to merge 2 commits into
Agentpay-Org:mainfrom
real-venus:test/testing-tooltip

Conversation

@real-venus

Copy link
Copy Markdown
Contributor

test(components): cover Tooltip hover/focus/Escape behaviour

Closes #148

What's covered

  • tooltip (role="tooltip") appears on mouse enter and on focus, and
    disappears on mouse leave and blur
  • hoverable: stays visible while the pointer travels from the trigger onto
    the tooltip body (WCAG 1.4.13)
  • aria-describedby on the trigger is present only while visible, points
    at the tooltip id, and is cleared again on hide
  • Escape hides the tooltip and leaves focus on the trigger
    (asserted via document.activeElement); non-Escape keys are ignored
  • edge cases: rapid enter/leave/enter, and focus → Escape → re-show
  • collision-aware positioning: default-above, flip-below, and left/right
    viewport clamping

Coverage of Tooltip.tsx: 100% statements / functions / lines, 95.83%
branches
(exceeds the 95% requirement).

Lock down the WCAG 2.1 SC 1.4.13 contract documented in Tooltip.tsx:

- tooltip (role="tooltip") appears on mouse enter and on focus, and
  disappears on mouse leave and blur
- stays visible while the pointer travels from the trigger onto the tooltip
  (hoverable)
- aria-describedby on the trigger is present only while visible and points at
  the tooltip id, and is cleared again on hide
- Escape hides the tooltip and leaves focus on the trigger
  (document.activeElement), while non-Escape keys are ignored
- edge cases: rapid enter/leave/enter, and focus -> Escape -> re-show
- collision-aware positioning: default-above, flip-below, and left/right
  viewport clamping

100% statements/functions/lines and 95.83% branch coverage of Tooltip.tsx.
These pre-existing failures on main block lint/build/test for any PR branched
from it:

- src/app/docs/page.tsx used resolveApiBase() and <CurlBlock> without
  importing them (react/jsx-no-undef lint error + next build typecheck
  failure). Add the missing imports.
- Two Header tests expected primary links marked aria-current twice
  (desktop + mobile), but the mobile nav panel only renders while open, so
  exactly one link is current at rest. Correct the assertions.
@real-venus

Copy link
Copy Markdown
Contributor Author

@mikewheeleer
Please review this.

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.

Add tests for the Tooltip hover, focus, and Escape-to-dismiss behaviour

1 participant