ui-testing

Automate iOS UI tests with condition-based waiting and accessibility patterns.

1.1k|81|Updated Nov 30, 2025
One-click install
npx skills add https://github.com/CharlesWiltgen/Axiom --skill ui-testing-charleswiltgen
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ui-testing
Source: https://github.com/CharlesWiltgen/Axiom/tree/main/.claude-plugin/plugins/axiom/skills/ui-testing
Command: npx skills add https://github.com/CharlesWiltgen/Axiom --skill ui-testing-charleswiltgen

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill helps you fix flaky UI tests by applying condition-based waiting patterns and modern UI Automation approaches introduced in WWDC 2025.

Core Features & Use Cases

  • Condition-based waiting templates (waitForExistence, XCTWaiter)
  • Recording UI Automation across devices and languages
  • Debug video reviews of test runs
  • Cross-device testing and accessibility-first patterns

Quick Start

Prompt: "Refactor a flaky XCUI test to replace fixed sleeps with waitForExistence."

Frequently Asked Questions about ui-testing

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I fix flaky UI tests caused by timing issues in XCTest?

Flaky UI tests often fail due to race conditions and fixed sleep delays. Replace hardcoded waits with condition-based waiting patterns like waitForExistence and XCTestExpectation, which poll for specific UI element states instead of arbitrary delays, ensuring tests pass consistently across devices.

What's the best way to eliminate timing-related failures in XCUI automation?

Condition-based waiting eliminates timing failures by verifying that UI elements meet specific conditions before interacting with them. Use waitForExistence, XCTWaiter, and accessibility identifiers to replace sleep() calls, improving cross-device reliability and reducing flaky test runs.

Can I record and debug UI Automation tests across different devices and languages?

Yes. Modern UI Automation recording workflows capture interactions across devices and languages, and video debugging allows you to review test runs visually. This approach identifies race conditions and timing issues that cause flakiness in multi-device testing scenarios.

How do I write accessibility-first UI tests that are reliable across iOS devices?

Accessibility-first patterns use accessibility identifiers instead of fragile UI queries, making tests resilient to layout changes. Combined with condition-based waiting and cross-device testing, this approach ensures reliable UI automation that works consistently regardless of device or language.

What's the difference between fixed sleeps and waitForExistence in XCTest?

Fixed sleeps wait a predetermined duration regardless of readiness, causing flaky tests on slow devices. waitForExistence polls until a condition is true, failing fast on quick runs and succeeding on slow ones, eliminating timing-dependent failures across all device speeds.

Do I need network conditioning to test reliable UI interactions?

Network conditioning simulates real-world connectivity scenarios during UI testing, helping identify race conditions caused by slow or unreliable networks. Combined with condition-based waiting, it ensures your tests reflect actual user experiences and remain reliable under varied network conditions.