Skip to content

UI Testing

Reliable UI testing with condition-based waiting patterns and new Recording UI Automation features from Xcode 26.

When to use: Writing UI tests, recording interactions, tests have race conditions or timing dependencies, flaky tests

Key Features

  • Recording UI Automation – Record interactions as Swift code, replay across configurations, review video recordings
    • Three phases: Record → Replay → Review
    • Replay configurations (devices, languages, regions, orientations, accessibility)
    • Video review with scrubbing, overlays, filters
  • Condition-based waiting – Eliminates flaky tests from sleep() timeouts
    • waitForExistence patterns
    • NSPredicate expectations
    • Custom condition polling
  • Accessibility-first testing patterns
  • SwiftUI and UIKit testing strategies
  • Test plans and configurations
  • Real-world impact: 15 min → 5 min test suite, 20% flaky → 2%

Requirements: Xcode 26+ for Recording UI Automation, original patterns work with earlier versions

WWDC References

Philosophy: Wait for conditions, not arbitrary timeouts. Flaky tests come from guessing how long operations take.

Example Prompts

These are real questions developers ask that this skill answers:

  • "My UI tests pass locally but fail in CI with no obvious reason." → Shows condition-based waiting patterns that work across devices/speeds, eliminating CI timing differences

  • "My tests use sleep(2) and sleep(5) but they're still flaky." → Demonstrates waitForExistence, XCTestExpectation, and polling patterns for data loads and network requests

  • "I just recorded a test using Xcode 26's Recording UI Automation. How do I debug failures?" → Covers video debugging workflows to analyze recordings and find exactly where tests fail

  • "My test fails on iPad but passes on iPhone." → Explains multi-factor testing strategies and device-independent predicates for cross-device testing

  • "I want tests that aren't flaky. What patterns should I use?" → Provides condition-based waiting templates, accessibility-first patterns, and reliable test architecture