xcuitest
Skill336 starsChanged 7 months agoMITView on GitHub
API reference: XCUITest. Query for element queries, waiting patterns, Swift 6 @MainActor, assertions, screenshots, launch arguments.
In this repository29 other files it gives its agents.
- AGENTS.mdAGENTS.md
- apple-asoSkill
- apple-docs-indexSkill
- backgroundtasksSkill
- combineSkill
- core-animationSkill
- corehapticsSkill
- eventkitSkill
- guide-macos-spm-packagingSkill
- guide-swift-concurrencySkill
- guide-swiftdataSkill
- guide-swift-testingSkill
- guide-swiftui-chartsSkill
- guide-swiftui-performance-auditSkill
- healthkitSkill
- higSkill
- ios-devSkill
- ios-liquid-glassSkill
- mapkitSkill
- photosuiSkill
- storekitSkill
- swift-concurrencySkill
- swiftdataSkill
- swift-testingSkill
- swiftuiSkill
- tipkitSkill
- uikitSkill
- usernotificationsSkill
- widgetkitSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 0 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 96
Search this skill's local .md files first.
- Very specific: line 97
If the topic is not here, check the other installed Apple skills you have available by their names, descriptions, or SKILL.md frontmatter, …
- Very specific: line 98
If no installed skill has the page, use the relevant documentation path from the local XCTest or XCUIAutomation indexes with the sosumi.ai …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
XCUITest Reference
Comprehensive reference for writing reliable XCUITest UI tests in Swift 6.
Quick Reference
// Basic test structure
@MainActor
final class MyUITests: XCTestCase {
var app: XCUIApplication!
override func setUp() {
super.setUp()
continueAfterFailure = false
app = XCUIApplication()
app.launch()
}
func testExample() {
let button = app.buttons["Submit"]
XCTAssertTrue(button.waitForExistence(timeout: 5))
button.tap()
}
}Topic Guides
Curated guidance with code examples (grep-friendly):
| File | Content |
| element-queries.md | Core API classes: XCUIApplication, XCUIElement, XCUIElementQuery, XCUICoordinate |
| interactions.md | Taps, presses, text input, swipes, coordinate-based and other gestures |
| waiting.md | waitForExistence, XCTWaiter, non-existence, property waits, Xcode 26 KeyPath waits |
| swift6-concurrency.md | Swift 6 strict concurrency: @MainActor test classes, async setUp/tearDown, nonisolated |
| assertions.md | XCTAssert patterns, custom messages, existence checks |
| screenshots.md | Screenshots, XCTAttachment, screenshot-on-failure, extracting from .xcresult |
| launch-arguments.md | Launch arguments/environment, UserDefaults override, localization and accessibility testing |
| permissions.md | resetAuthorizationStatus, XCUIProtectedResource, interruption monitors, springboard/system alerts |
| test-helpers.md | Page Object Model, reusable helpers, timeout constants |
| troubleshooting.md | Common failures (element not found, flaky tests) and what's new in Xcode 26 / iOS 26 |
| patterns.md | Advanced patterns: base test class, system dialogs, scroll/wait, debugging, test organization |
Downloaded Reference Files
Apple documentation pages available locally:
| File | Content |
| xctest-index.md | Full XCTest framework index |
| xcuiautomation-index.md | Full XCUIAutomation framework index |
| xcuiapplication.md | XCUIApplication class |
| xcuielement.md | XCUIElement class |
| xcuielementquery.md | XCUIElementQuery class |
| xcuicoordinate.md | XCUICoordinate class |
| xcuiprotectedresource.md | XCUIProtectedResource enum |
| xcuiscreenshot.md | XCUIScreenshot class |
Sources
Apple Documentation
- XCTest | Apple Developer Documentation
- XCUIAutomation | Apple Developer Documentation
- XCUIElementQuery | Apple Developer Documentation
- waitForExistence | Apple Developer Documentation
- wait(for:toEqual:timeout:) | Apple Developer Documentation
- resetAuthorizationStatus(for:) | Apple Developer Documentation
- XCUIProtectedResource | Apple Developer Documentation
- XCUIScreenshot | Apple Developer Documentation
WWDC Sessions
Community Resources
- XCTest Meets @MainActor | Quality Coding
- Issues with setUp() and tearDown() in XCTest for Swift 6 | Swift Forums
- Waiting in XCTest | Masilotti.com
- UI Testing Cheat Sheet | Masilotti.com
- XCUIElement Actions and Gestures | Apps Developer Blog
- Configuring UI tests with launch arguments | polpiella.dev
- UI Testing improvements in Xcode 16 | Jesse Squires
Fetching More Apple Docs
- Search this skill's local
.mdfiles first. - If the topic is not here, check the other installed Apple skills you have available by their names, descriptions, or
SKILL.mdfrontmatter, then grep their local files. This is faster and uses less context than fetching new docs from the internet. - If no installed skill has the page, use the relevant documentation path from the local XCTest or XCUIAutomation indexes with the
sosumi.aiMarkdown mirror. For example,/documentation/xcuiautomation/xcuielementmaps tohttps://sosumi.ai/documentation/xcuiautomation/xcuielement.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

