Skip to content

[test] Add Guidepup screen reader tests - #5328

Merged
aarongarciah merged 6 commits into
mui:masterfrom
aarongarciah:evaluate-guidepup-for-base-ui
Aug 24, 2026
Merged

[test] Add Guidepup screen reader tests#5328
aarongarciah merged 6 commits into
mui:masterfrom
aarongarciah:evaluate-guidepup-for-base-ui

Conversation

@aarongarciah

@aarongarciah aarongarciah commented Jul 24, 2026

Copy link
Copy Markdown
Member

Adds a minimal Guidepup screen-reader test using the existing Radio fixture, with local VoiceOver support and Windows/NVDA CI coverage. No VoiceOver CI coverage for now.

CI run: https://github.com/mui/base-ui/actions/runs/30082080229/job/89445735040?pr=5328

@pkg-pr-new

pkg-pr-new Bot commented Jul 24, 2026

Copy link
Copy Markdown

commit: 9009534

@code-infra-dashboard

code-infra-dashboard Bot commented Jul 24, 2026

Copy link
Copy Markdown

Bundle size

Bundle Parsed size Gzip size
@base-ui/react 0B(0.00%) 0B(0.00%)

Details of bundle changes

Performance

Total duration: 1,097.34 ms +87.82 ms(+8.7%) | Renders: 92 (+0) | Paint: 1,808.21 ms +133.74 ms(+8.0%)

Test Duration Renders
Checkbox mount (500 instances) 78.18 ms 🔺+13.86 ms(+21.6%) 1 (+0)
Combobox open — 500 items 34.08 ms 🔺+6.29 ms(+22.6%) 4 (+0)

13 tests within noise — details

Metric alarms

Test Metric Change
Checkbox mount (500 instances) bench:paint 🔺 +23.23 ms

Check out the code infra dashboard for more information about this PR.

@netlify

netlify Bot commented Jul 24, 2026

Copy link
Copy Markdown

Deploy Preview for base-ui ready!

Name Link
🔨 Latest commit 9009534
🔍 Latest deploy log https://app.netlify.com/projects/base-ui/deploys/6a8802ee58dcc6000819690e
😎 Deploy Preview https://deploy-preview-5328--base-ui.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

Comment thread pnpm-workspace.yaml Outdated
@@ -0,0 +1,38 @@
import { expect } from '@playwright/test';
import { screenReaderTest as test, type ScreenReaderPlaywright } from '@guidepup/playwright';

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

screenReaderTest automatically uses VoiceOver or NVDA depending on the OS.


const MAX_NAVIGATION_STEPS = 10;

async function navigateToItem(

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This helper should be extracted as we see fit.

@aarongarciah
aarongarciah marked this pull request as ready for review July 27, 2026 12:36
@aarongarciah
aarongarciah force-pushed the evaluate-guidepup-for-base-ui branch from 010845f to 598c4ba Compare July 27, 2026 14:50
Comment thread pnpm-workspace.yaml Outdated
sharp: true
unrs-resolver: true

# Screen recording is not needed for the tests and pulls in ffmpeg-static.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@github-actions github-actions Bot added the PR: out-of-date The pull request has merge conflicts and can't be merged. label Jul 29, 2026

Copy link
Copy Markdown
Member

PR review

Nothing is merge-blocking, but two test-infrastructure risks and one documentation gap are worth addressing. Installation, formatting, ESLint, project typechecking, and Playwright discovery passed; the historical Windows/NVDA test passed, but VoiceOver was not run because setup modifies macOS accessibility settings. The PR also conflicts with current master, so it needs rebasing and fresh CI.

Bugs (2)

1. 🟠 Refresh the Guidepup versions before relying on macOS support

Location: package.json:72

"@guidepup/guidepup": "0.29.2",
"@guidepup/playwright": "0.18.0",
"@guidepup/setup": "0.24.1",

These versions predate several fixes directly affecting the newly documented macOS workflow:

  • VoiceOver navigation could miss item-chooser input or move to the top of the window instead of the document (playwright #46, #47).
  • TCC database writes had no lock retry (setup #63).
  • Interrupted processes had no best-effort screen-reader teardown (guidepup #138).

Failure scenario: A contributor follows the README, but VoiceOver remains outside the fixture, a transient TCC lock leaves setup incomplete, or an interrupted run leaves VoiceOver and its mounted preferences active.

Fix: Coordinately update to @guidepup/playwright@0.19.1, @guidepup/guidepup@0.33.1, and @guidepup/setup@0.24.6 after the repository’s 72-hour release-age window permits them.

2. 🟠 Allow enough time for Guidepup’s supported retry path

Location: test/screen-reader/playwright.config.ts:11

timeout: 60_000,

The successful Windows job already took 49.5 seconds, leaving little margin. Guidepup’s own example configuration uses a five-minute timeout and one retry because screen-reader startup, application focus, and navigation contain multiple OS-level waits and retries.

Failure scenario: A cold or loaded Windows runner takes slightly longer to start NVDA or focus Chrome, causing Playwright to terminate an otherwise recoverable test at 60 seconds.

Fix: Use the upstream five-minute timeout and consider its single-retry configuration; the surrounding job already has a 15-minute limit.

Docs (1)

1. 🟡 Document or control the required screen-reader language

Location: test/README.md:176

Screen reader tests use Guidepup ... with VoiceOver on macOS or NVDA on Windows.

The test asserts the English word /radio/i, while Guidepup’s VoiceOver navigation also searches for the literal phrase web content. The README does not say that an English screen-reader environment is required.

Failure scenario: VoiceOver or NVDA uses a non-English language and rejects a correctly exposed radio because its localized role announcement does not contain “radio,” or navigation cannot find the localized web-content entry.

Fix: Configure a stable English screen-reader profile, make expectations locale-aware, or explicitly document English as a prerequisite.

Verdict

Approve after nits - no blocking regression, but the stale Guidepup pins and tight timeout should be corrected during the required rebase.


🤖 Review generated with Codex

@aarongarciah
aarongarciah force-pushed the evaluate-guidepup-for-base-ui branch from 598c4ba to fe0341c Compare August 17, 2026 12:21
@github-actions github-actions Bot removed the PR: out-of-date The pull request has merge conflicts and can't be merged. label Aug 17, 2026
@aarongarciah

Copy link
Copy Markdown
Member Author

@michaldudak all comments addressed. CI is failing because we have a policy to only allow deps older than 72h.

@github-actions github-actions Bot added the PR: out-of-date The pull request has merge conflicts and can't be merged. label Aug 17, 2026
@aarongarciah
aarongarciah force-pushed the evaluate-guidepup-for-base-ui branch from 2cfc47c to be09ab5 Compare August 19, 2026 07:14
@github-actions github-actions Bot removed the PR: out-of-date The pull request has merge conflicts and can't be merged. label Aug 19, 2026
@aarongarciah
aarongarciah force-pushed the evaluate-guidepup-for-base-ui branch from 62c8d7e to 48b357c Compare August 21, 2026 07:42
@aarongarciah

Copy link
Copy Markdown
Member Author

@michaldudak deps now comply with the 72h policy.

@michaldudak michaldudak left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM!

@aarongarciah
aarongarciah merged commit 79bbdc0 into mui:master Aug 24, 2026
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants