Skip to content

Measure overlays, hover states, menus and dialogs at WCAG AA - #392

Merged
BunsDev merged 2 commits into
mainfrom
fix/overlay-contrast
Sep 28, 2026
Merged

BunsDev merged 2 commits into
mainfrom
fix/overlay-contrast

Conversation

@BunsDev

@BunsDev BunsDev commented Sep 27, 2026

Copy link
Copy Markdown
Member

What changed

  • The rendered contrast check moves to e2e/contrast.ts. It now runs in both colour schemes with each overlay open:
    • a hovered sidebar row
    • the find bar
    • the screen viewer
    • mention suggestions
    • the drop overlay
    • the chat actions menu, with an item highlighted
    • the delete dialog
    • the context picker
  • The check waits for entry transitions to finish, so a menu caught mid-fade no longer reads as a failure.
  • While a modal is open, the check reads only the modal, because the page behind it is inert.
  • Fix: the context picker is a non-modal popover, so the page behind it stays readable and clickable. Its 15% black scrim dropped light-scheme muted text to 3.76:1. In the light scheme the scrim is now transparent, and the panel's shadow still sets it apart. The dark scheme is unchanged.

Verification

  • playwright test: 57 passed, including all six contrast tests (3 tests × 2 schemes).
  • vitest run src/coven src/design: 295 passed.
  • typecheck is clean; biome is clean on the changed files.

🤖 Generated with Claude Code

…schemes

The rendered contrast check moves to e2e/contrast.ts and now runs with each
overlay open: a hovered sidebar row, the find bar, the screen viewer, mention
suggestions, the drop overlay, the chat actions menu, the delete dialog and
the context picker. It waits for entry transitions to settle, and while a
modal is open it reads only the modal, since the page behind is inert.

The context picker is not modal, so the page behind it stays in use. Its 15%
black scrim dropped light-scheme muted text to 3.76:1; on a light page the
scrim is now transparent and the panel's shadow separates it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings September 27, 2026 08:43

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Several contrast tests can pass without verifying that the intended overlays, states, and visible text are actually measured.

Review effort: Lite
Findings: 2 Medium severity

Open (2)
What changed in this PR

Adds rendered WCAG AA contrast checks across light/dark themes and overlay states, and removes the light-theme context-picker scrim.

Changes:

  • Adds reusable screenshot-based contrast analysis.
  • Covers menus, dialogs, pickers, hover states, and overlays.
  • Makes the light-theme context-picker backdrop transparent.
File Description
src/​coven/​context-picker.css Removes the light-theme picker scrim.
e2e/​contrast.ts Provides reusable rendered contrast analysis.
e2e/​chat-lifecycle.spec.ts Tests menu, dialog, and context-picker contrast.
e2e/​app.tauri-mock.spec.ts Tests additional overlay and hover-state contrast.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread e2e/app.tauri-mock.spec.ts Outdated
Comment thread e2e/chat-lifecycle.spec.ts
Review found the checks could pass against the plain page if an overlay
failed to open. Each state now asserts its overlay is visible first. That
showed mention suggestions never opened in the app fixture, which has no
known context, so the check moves to the lifecycle fixture. The drop overlay
is aria-hidden, and the helper skipped aria-hidden text, so its message was
never read; sighted users still see it, so only inert and screen-reader-only
text is skipped now.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@BunsDev
BunsDev merged commit 8d1900d into main Sep 28, 2026
10 checks passed
@BunsDev
BunsDev deleted the fix/overlay-contrast branch September 28, 2026 18:50
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.

2 participants