Skip to content

test(accessibility): Add navigation chrome fixtures#48

Merged
cameroncooke merged 1 commit into
mainfrom
cameroncooke/test/navigation-chrome-fixtures
May 11, 2026
Merged

test(accessibility): Add navigation chrome fixtures#48
cameroncooke merged 1 commit into
mainfrom
cameroncooke/test/navigation-chrome-fixtures

Conversation

@cameroncooke
Copy link
Copy Markdown
Owner

@cameroncooke cameroncooke commented May 11, 2026

Add playground fixtures and E2E coverage for navigation chrome accessibility behavior that was previously easy to miss: searchable navigation fields, toolbar segmented pickers, generated navigation back buttons, and numeric AXValue trees.

The tests assert simulator state after AXe actions rather than only checking that commands returned successfully. This keeps coverage focused on the real automation contract: describe the element, act on it by selector, and verify the app UI changed.

The implementation fixes for these cases are already present on main via the TabView accessibility-client work; this PR keeps the follow-up verification separate from the still-riskier slider precision work.

Fixes #8
Fixes #43
Fixes #45


Note

Low Risk
Low risk: adds new SwiftUI playground fixtures and expands E2E tests/changelog without changing core automation logic.

Overview
Adds new AxePlayground accessibility fixtures for navigation chrome edge cases: a Slider with numeric AXValue, a navigation .searchable field, and a toolbar segmented Picker, and wires them into the playground menu/navigation.

Expands E2E coverage for describe-ui, selector-based tap, and type to assert these elements are exposed and actionable (including generated navigation back buttons and numeric AXValue trees), and updates the Unreleased changelog entry to reflect the broader fix scope.

Reviewed by Cursor Bugbot for commit c2864c0. Bugbot is set up for automated code reviews on this repo. Configure here.

Add playground fixtures and E2E coverage for navigation search fields,
toolbar segmented pickers, generated navigation back buttons, and numeric
AXValue fields in accessibility trees.

The tests assert simulator state after AXe actions so they verify the event was
processed, not just that the CLI returned success.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 11, 2026

Review Change Stack

Walkthrough

This pull request introduces three new accessibility fixture views for testing SwiftUI controls: a slider value test, a searchable/filterable list test, and a toolbar segmented picker test. Each fixture view is instrumented with accessibility identifiers and values for automated discovery. The views are wired into the app's navigation system via new routes and menu items in the Accessibility section. Comprehensive end-to-end tests cover element discovery via describe-ui parsing, tap-based interactions for state mutations and navigation, and typing into searchable fields with state filtering. The changelog is updated to document fixes for selector decoding of numeric accessibility values and expanded support for SwiftUI control activation via tap selectors.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'test(accessibility): Add navigation chrome fixtures' accurately summarises the main change—adding test coverage and fixtures for navigation chrome accessibility.
Description check ✅ Passed The description relates to the changeset, explaining the addition of fixtures and E2E tests for navigation chrome accessibility edge cases and their verification.
Linked Issues check ✅ Passed The changeset addresses all objectives from linked issues #8, #43, and #45: adds searchable and picker test views (#8, #43), includes numeric AXValue slider fixture (#45), and provides E2E test coverage asserting these elements are properly exposed and actionable.
Out of Scope Changes check ✅ Passed All changes are in scope: new test views, E2E tests, and changelog updates directly support the stated objectives of adding fixtures and test coverage for navigation chrome accessibility.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CHANGELOG.md`:
- Line 12: Update the changelog entry to include issue references in the
internal format: append the issue link(s) after the description using
"([`#123`](https://github.com/cameroncooke/AXe/issues/123))" style; for example
modify the line mentioning describe-ui, selector-based tap --label,
CoreSimulator accessibility bridge, SwiftUI TabView, and AXValue numeric fields
so it ends with the appropriate issue reference(s) in that exact format
(referencing the specific issue numbers for this fix).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4de9b049-d9b3-4f5c-9f81-bf0dfa2a68ac

📥 Commits

Reviewing files that changed from the base of the PR and between 1a23f1c and c2864c0.

📒 Files selected for processing (6)
  • AxePlaygroundApp/AxePlayground/ContentView.swift
  • AxePlaygroundApp/AxePlayground/Views/AccessibilityFixturesView.swift
  • CHANGELOG.md
  • Tests/DescribeUITests.swift
  • Tests/TapTests.swift
  • Tests/TypeTests.swift

Comment thread CHANGELOG.md
### Fixed

- Fixed `describe-ui` and selector-based `tap --label` exposing and activating real SwiftUI `TabView` tab items from the CoreSimulator accessibility bridge.
- Fixed `describe-ui` and selector-based `tap --label` exposing and activating real SwiftUI `TabView` tab items, navigation search fields, toolbar segmented picker items, and generated navigation back buttons from the CoreSimulator accessibility bridge. Also fixed selector decoding when the accessibility tree contains numeric `AXValue` fields such as sliders.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add issue links to match internal changelog entry format.

This new internal fix entry should include issue references in the required format.

Suggested update
-- Fixed `describe-ui` and selector-based `tap --label` exposing and activating real SwiftUI `TabView` tab items, navigation search fields, toolbar segmented picker items, and generated navigation back buttons from the CoreSimulator accessibility bridge. Also fixed selector decoding when the accessibility tree contains numeric `AXValue` fields such as sliders.
+- Fixed `describe-ui` and selector-based `tap --label` exposing and activating real SwiftUI `TabView` tab items, navigation search fields, toolbar segmented picker items, and generated navigation back buttons from the CoreSimulator accessibility bridge. Also fixed selector decoding when the accessibility tree contains numeric `AXValue` fields such as sliders ([`#8`](https://github.com/cameroncooke/AXe/issues/8), [`#43`](https://github.com/cameroncooke/AXe/issues/43), [`#45`](https://github.com/cameroncooke/AXe/issues/45)).

As per coding guidelines, For internal changes from issues, use format Fixed foo bar ([#123](https://github.com/cameroncooke/AXe/issues/123)).

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- Fixed `describe-ui` and selector-based `tap --label` exposing and activating real SwiftUI `TabView` tab items, navigation search fields, toolbar segmented picker items, and generated navigation back buttons from the CoreSimulator accessibility bridge. Also fixed selector decoding when the accessibility tree contains numeric `AXValue` fields such as sliders.
- Fixed `describe-ui` and selector-based `tap --label` exposing and activating real SwiftUI `TabView` tab items, navigation search fields, toolbar segmented picker items, and generated navigation back buttons from the CoreSimulator accessibility bridge. Also fixed selector decoding when the accessibility tree contains numeric `AXValue` fields such as sliders ([`#8`](https://github.com/cameroncooke/AXe/issues/8), [`#43`](https://github.com/cameroncooke/AXe/issues/43), [`#45`](https://github.com/cameroncooke/AXe/issues/45)).
🧰 Tools
🪛 LanguageTool

[uncategorized] ~12-~12: Possible missing comma found.
Context: ...the CoreSimulator accessibility bridge. Also fixed selector decoding when the access...

(AI_HYDRA_LEO_MISSING_COMMA)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CHANGELOG.md` at line 12, Update the changelog entry to include issue
references in the internal format: append the issue link(s) after the
description using "([`#123`](https://github.com/cameroncooke/AXe/issues/123))"
style; for example modify the line mentioning describe-ui, selector-based tap
--label, CoreSimulator accessibility bridge, SwiftUI TabView, and AXValue
numeric fields so it ends with the appropriate issue reference(s) in that exact
format (referencing the specific issue numbers for this fix).

@cameroncooke cameroncooke merged commit 69af158 into main May 11, 2026
5 checks passed
@cameroncooke cameroncooke deleted the cameroncooke/test/navigation-chrome-fixtures branch May 11, 2026 15:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant