Files
Trey T a71104db05 Add onboarding Next buttons and fix accessibility for paged TabView
App-side changes:
- Added "Get Started" / "Continue" next buttons to all onboarding pages
  (Welcome, Day, Time, Style) with onboarding_next_button accessibility ID
- Added onNext callback plumbing from OnboardingMain to each page
- OnboardingMain now uses TabView(selection:) for programmatic page navigation
- Added .accessibilityElement(children: .contain) to all onboarding pages
  to fix iOS 26 paged TabView not exposing child elements
- Added settings_segmented_picker accessibility ID to Settings Picker
- Reduced padding on onboarding pages to keep buttons in visible area

Test-side changes:
- OnboardingScreen: replaced unreliable swipeToNext() with tapNext()
  that taps the accessibility-identified next button
- OnboardingScreen: multi-strategy skip button detection for subscription page
- SettingsScreen: scoped segment tap to picker element to avoid tab bar collision
- CustomizeScreen: simplified horizontal scroll to plain app.swipeLeft()
- OnboardingVotingTests: uses tapNext() to advance to Day page

Passing: OnboardingTests.CompleteFlow, OnboardingVotingTests
Remaining: OnboardingTests.DoesNotRepeat (session state issue),
  Settings scroll (deep elements), Customize horizontal pickers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:37:17 -05:00
..

Tests iOS README

Purpose

Tests iOS/ contains XCTest-based UI tests for the iOS app.

Start Here Before Adding Tests

  1. Read /Users/treyt/Desktop/code/Feels/docs/XCUITest-Authoring.md.
  2. Reuse BaseUITestCase and helpers in Helpers/.
  3. Reuse screen objects in Screens/ before writing inline query logic.

Required Pattern

  • Test class inherits BaseUITestCase.
  • Selectors use UITestID / accessibility identifiers first.
  • Waiting/tapping uses helper methods (tapWhenReady, waitForDisappearance, etc).
  • New app interactions get IDs in /Users/treyt/Desktop/code/Feels/Shared/AccessibilityIdentifiers.swift.

Anti-Patterns

  • sleep(...)
  • Selector logic based only on localized labels
  • Duplicating navigation logic instead of using Screens/*

Useful Paths

  • /Users/treyt/Desktop/code/Feels/Tests iOS/Helpers/BaseUITestCase.swift
  • /Users/treyt/Desktop/code/Feels/Tests iOS/Helpers/WaitHelpers.swift
  • /Users/treyt/Desktop/code/Feels/docs/templates/XCUITestSuiteTemplate.swift