Skip to content

fix(macos): name welcome buttons by their title, not title plus keycap - #4720

Merged
tyler-dane merged 3 commits into
mainfrom
fix/macos-welcome-button-labels
Oct 22, 2026
Merged

tyler-dane merged 3 commits into
mainfrom
fix/macos-welcome-button-labels

Conversation

@tyler-dane

@tyler-dane tyler-dane commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Refs #4331

What and why

The macOS macos-capture job fails on main and every PR that runs it (for example run 39713732077 on #4719) in NativeParityCaptureTests.testExportParitySurface_onboardingWelcome:

Failed to click "Get started for free" Button: No matches found for Elements matching predicate '"Get started for free" IN identifiers'

#4707 added the second half of that test, which clicks through to the account-choice screen. It queries window.buttons["Get started for free"], then "Next", then "Start free trial with Google". The welcome modal's button helpers (primaryButton, secondaryButton, quietTextButton, pillButton) render a title plus a ShortcutHintChip keycap with no explicit label. SwiftUI therefore names the button "Get started for free, Enter", which doesn't match the exact query.

This PR labels each of those four helpers with its title only (.accessibilityLabel(title)). That makes the query match, and VoiceOver now reads "Get started for free" instead of appending the keycap text. Nothing visible changes.

With the labels fixed, buttons["Next"] also matched the grid's week "Next" button behind the modal ("Multiple matching elements found"), so the test now queries its three buttons inside compass-native-welcome-modal. It's the same clicks and the same assertions, scoped to the panel.

Verify

VERDICT: PASS from bun run verify --strict (type-check, lint, knip). bun cli contracts:swift --check and bun cli desktop:export --check pass.

Not run locally: this cloud session has no Swift toolchain or Xcode, so the UI tests only run in macOS CI. The parity-screenshots label is added separately so macos-capture runs the onboarding test on this PR, which is the check that proves the fix.

https://claude.ai/code/session_01GKHjv2HDx1DFAnG4cfSxcr


Generated by Claude Code

The welcome modal's buttons pair a title with a keycap chip and had no
explicit label, so accessibility read "Get started for free, Enter".
The onboarding parity capture added in #4707 clicks buttons["Get started
for free"] and fails on every run since. Label each welcome button with
its title; the keycap is a visual hint.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GKHjv2HDx1DFAnG4cfSxcr
@tyler-dane
tyler-dane marked this pull request as ready for review October 22, 2026 03:08
@tyler-dane tyler-dane added the agent-automerge Agent-loop finished; merge-guard may squash-merge label Oct 22, 2026 — with Claude
@tyler-dane
tyler-dane enabled auto-merge October 22, 2026 03:08
@tyler-dane tyler-dane added the parity-screenshots Run the web vs macOS parity screenshot workflow on this PR label Oct 22, 2026 — with Claude
… panel

With the welcome buttons named by title, buttons["Next"] also matched the
grid's week "Next" button behind the modal, so the click failed with
multiple matches. Query the buttons inside compass-native-welcome-modal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GKHjv2HDx1DFAnG4cfSxcr

Copy link
Copy Markdown
Contributor Author

macos-capture fails here because the second onboarding export, onboarding-welcome-account-choice (added in #4707), was never registered as a ParityCaptureSurface, so its debug URL doesn't parse and the export times out. This PR's button-label changes now get the test past every click. This PR is in the merge queue and can't take pushes, so the fix is #4724. I ported it into #4717, #4718 and #4719.


Generated by Claude Code

Merged via the queue into main with commit fe5ca98 Oct 22, 2026
25 of 26 checks passed
@tyler-dane
tyler-dane deleted the fix/macos-welcome-button-labels branch October 22, 2026 06:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent-automerge Agent-loop finished; merge-guard may squash-merge parity-screenshots Run the web vs macOS parity screenshot workflow on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants