Repository navigation
fix(parity): draw popover windows into macos parity captures - #4717
Merged
Merged
Conversation
The event-form-date-picker and event-form-time-picker surfaces open SwiftUI popovers, which are separate windows. The exporter rendered only the main window's content view, so both captures showed a closed field while web showed the open picker. Draw each visible popover window over the render at its on-screen offset. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GKHjv2HDx1DFAnG4cfSxcr
tyler-dane
marked this pull request as ready for review
October 22, 2026 02:46
tyler-dane
enabled auto-merge
October 22, 2026 02:47
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 (cherry picked from commit 5d42363)
… 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 (cherry picked from commit 77e87f4)
Contributor
Author
|
Generated by Claude Code |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GKHjv2HDx1DFAnG4cfSxcr (cherry picked from commit b031ea7)
The onboarding capture exports onboarding-welcome-account-choice, but the name was not a ParityCaptureSurface, so the debug URL never parsed and the export timed out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GKHjv2HDx1DFAnG4cfSxcr (cherry picked from commit 07b3cce)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #4331
What and why
In the parity compare (run 39704640345), the macOS
event-form-date-pickerandevent-form-time-pickercaptures showed the form with a closed field, while web showed the open calendar and time list. The capture tests do open them: the date test waits forcompass-event-form-date-picker, and the time field draws its open-state accent border. But both are SwiftUI popovers, which AppKit puts in separate windows.ParityViewSnapshotExporterrendered onlywindow.contentViewwithcacheDisplay, so the popovers never reached the PNG.This PR makes the exporter draw each visible popover window over the main render after the content view, at its offset from the main window's content rect. It finds them through the window's
childWindowsplus any app window whose class name contains "Popover", and draws each one once. Captures with no popover open are unchanged. It also adds a changelog line todocs/features/desktop-web-parity-checklist.md.Verify
VERDICT: PASSfrombun run verify --strict(type-check, lint, knip).bun cli contracts:swift --checkandbun cli desktop:export --checkpass.Not run locally: this cloud session has no Swift toolchain or Xcode, so the build and the capture only run in macOS CI. The
parity-screenshotslabel is added separately, and the evidence is the date and time picker compare images from this PR's run.Generated by Claude Code