Skip to content

fix(ui): clear the dev-red journey failures in Design, Library and Photo - #734

Merged
github-actions[bot] merged 1 commit into
devfrom
claude/macos-ui-journey-audit-esgaa1
Oct 14, 2026
Merged

github-actions[bot] merged 1 commit into
devfrom
claude/macos-ui-journey-audit-esgaa1

Conversation

@prakashUXtech

@prakashUXtech prakashUXtech commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Fixes the four macOS journey failures left on dev at 44fde68 (CI run 38535591962). Refs #731.

Design (testDrawShapesAddTextAndSave, testLaunchShowsWindowShell)

  • identifier: 30 distinct violations against a baseline of 23. Adds identifiers to Add Page (design.page.add), Delete Page (design.page.delete), the Fill / Text Color row's well and hex field (design.fill), the empty state's New File (design.new-file), and SuiteUI's document title menu (suite.document-menu). The title menu showed up three times ('Untitled', 'journey.design', 'Design'), so this removes 8 distinct violations, which brings Design to 22.
  • contrast, design-multi-select (2.01:1): the "Multiple layers selected" rows were .disabled(true). They hold no control, so disabling them only dimmed the Frame and Fill labels to 40%. The rows aren't disabled any more, the tooltip and the hint below still give the reason, and the value uses SuiteColor.textSecondary.
  • contrast, design-layer-hidden (4.25:1): a hidden layer's row was .secondary on the highlighted row. It now uses SuiteColor.textSecondary, the same token fix(design): Layers rows carry identifiers and the section headers meet 4.5:1 #598 and fix(suiteui): sidebar section titles in the readable secondary text token #599 used. On the measured row gray (70,70,70) that reads 4.74:1.

Library (testLoupeStepsAndReturnsToTheGrid): the loupe view is .focusable() and had no accessibility role, so SwiftUI exposed the whole 648x560 view as one unlabeled element. XCUITest typed it as staticText, and the contrast check measured the photo against the artboard as if it were text ink (1.52:1). The loupe is now .accessibilityElement(children: .contain) with the label "Loupe": a group with the position readout inside it. The journey still finds it by library.loupe.

Photo (testStraighten): Select > All holds Command-A, and #575 disabled it while a sheet was up. A disabled menu item still takes its key equivalent, so the Angle field never got Command-A and typing "3" gave "03". Select > All is now disabled only when a focused window has no image. When an editable text view is first responder, its action sends selectAll: down the responder chain. Otherwise it selects the canvas, and never while a sheet or alert is up. The journey's later step, Command-A selecting the canvas after the sheet closes, still holds.

Proof: the Design, Library and Photo journeys in the next macOS run on dev. No baseline, test or check was changed.

Snapshots touched: design-multi-select.png, design-layer-hidden.png, library-loupe.png (ui-screens). No AppSnapshotTests PNG changes.

Docs checked with apple-docs: AccessibilityChildBehavior.contain, NSText.selectAll(_:).

Fast-Check: pass
Head: 9e1acc1


Design: identifiers on Add Page, Delete Page, the fill/text color row, the
empty state's New File and SuiteUI's document title menu; the hidden layer
row uses SuiteColor.textSecondary and the multi-select rows are no longer
disabled, so their labels keep 4.5:1.
Library: the focusable loupe is a labelled accessibility container, not a
role-less element read as static text.
Photo: Select > All hands Command-A to the text field being edited instead
of swallowing it as a disabled item while a sheet is up.
@prakashUXtech prakashUXtech added fast-lane Merge automatically when small, green and outside protected paths feature-done Merging this PR runs the full CI on dev labels Oct 14, 2026 — with Claude
@github-actions
github-actions Bot merged commit 5d47ef2 into dev Oct 14, 2026
1 check passed
@github-actions github-actions Bot added the fast-lane-merged Merged by the fast lane; review after the fact label Oct 14, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Fast lane: merged into dev (49 lines, 7 files, Fast-Check marker).

@github-actions github-actions Bot mentioned this pull request Oct 14, 2026
github-actions Bot pushed a commit that referenced this pull request Oct 14, 2026
…upe's (#735)

Round 2 for #731. After #734, CI run 38544327339 on dev (5d47ef2) passes the Design and Photo journeys. One failure is left: LibraryJourneyTests testLoupeStepsAndReturnsToTheGrid, `staticText 'library.loupe.position' at [192,117,648,560], contrast 1.52:1`.

Cause: the loupe's photo was `accessibilityHidden`, so the position readout Text was the only accessibility element inside the focusable loupe. SwiftUI turned that Text into the focusable element itself, at the whole loupe's 648x560 frame, so `.contain` added no group and the audit measured the photo against the artboard as the text's ink.

Fix (LibraryLoupe.swift only):
- The photo is an image element, labelled with the photo's name and identified as `library.loupe.photo`.
- The readout overlay comes after the focus and key modifiers, so it is never the focusable element. It keeps its own frame on the glass readout.
- The loupe stays a container labelled "Loupe" with `library.loupe`, which the journey finds.

Proof: the Library journey in the next macOS run on dev. No baseline, test or check was changed.

Snapshots touched: library-loupe.png (ui-screens); the pixels are unchanged.

Fast-Check: pass
Head: d4287bf

---
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fast-lane Merge automatically when small, green and outside protected paths fast-lane-merged Merged by the fast lane; review after the fact feature-done Merging this PR runs the full CI on dev

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant