
Apple Docs Index
- 359 installs
- 297 repo stars
- Updated August 4, 2026
- vabole/apple-skills
apple-docs-index is a vabole apple-skills agent skill that indexes Apple developer documentation for developers who need to browse framework APIs and find doc paths for iOS, macOS, watchOS, and tvOS features.
About
apple-docs-index is part of the vabole/apple-skills plugin (30 skills total) and serves as the entry point for local Apple framework documentation indexes. It lists nine primary indexes including SwiftUI (907KB overview), UIKit (1.8MB overview), XCTest (55KB), XCUIAutomation (58KB), Core Animation (80KB), HealthKit (312KB), Combine (153KB), SwiftData (86KB), and Observation (3KB). Developers use it to browse available APIs, find paths to specific documentation, and decide whether to grep installed skill markdown or fetch from the sosumi.ai mirror. Reach for this skill when implementing SwiftUI views, UIKit controllers, HealthKit data, Combine pipelines, or XCTest suites and you need fast API discovery without loading full doc sets into context.
- Framework and API index
- Platform doc deep links
- SwiftUI and UIKit pointers
- Sample and guide routing
- Faster official-doc lookup
Apple Docs Index by the numbers
- 359 all-time installs (skills.sh)
- +7 installs in the week ending Jul 27, 2026 (Skillselion tracking)
- Ranked #425 of 1,879 Documentation skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/vabole/apple-skills --skill apple-docs-indexAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 359 |
|---|---|
| repo stars | ★ 297 |
| Last updated | August 4, 2026 |
| Repository | vabole/apple-skills ↗ |
Where do I find SwiftUI API documentation paths?
Navigate Apple platform documentation quickly—framework indexes, API references, and guides—while implementing iOS, macOS, watchOS, or tvOS features.
Who is it for?
iOS and macOS developers using Claude Code or Codex who need fast local navigation of Apple framework docs before implementation.
Skip if: Android or cross-platform projects with no Apple SDK work, or teams that already have full offline doc mirrors open in the IDE.
When should I use this skill?
User asks what APIs exist in a framework, needs Apple doc paths, or is deciding which vabole apple-skills reference file to load.
What you get
Framework index paths, API topic listings, and fetch targets for detailed Apple documentation pages.
By the numbers
- Part of vabole/apple-skills with 30 skills in the repository
- Lists 9 framework documentation indexes with local file sizes
- SwiftUI index 907KB; UIKit overview 1.8MB
Files
Apple Documentation Index
This skill provides indexes of Apple framework documentation. Use these to:
- Browse available APIs in a framework
- Find the path to specific documentation
- Decide what detailed docs to download
Available Indexes
| Framework | File | Size | Topics |
|---|---|---|---|
| SwiftUI | ../swiftui/swiftui-overview.md | 907KB | Views, modifiers, navigation, state |
| XCTest | xctest-index.md | 55KB | Testing, assertions, expectations |
| XCUIAutomation | xcuiautomation-index.md | 58KB | UI testing, elements, queries |
| UIKit | ../uikit/uikit-overview.md | 1.8MB | Views, controllers, controls, scenes |
| Core Animation | ../core-animation/core-animation-index.md | 80KB | CALayer, CAAnimation, CATransaction, layer subclasses |
| HealthKit | healthkit-index.md | 312KB | Health data, workouts, records |
| Combine | combine-index.md | 153KB | Publishers, subscribers, operators |
| SwiftData | swiftdata-index.md | 86KB | Models, containers, queries |
| Observation | observation-index.md | 3KB | @Observable macro |
How to Use
1. Browse an Index
# See what's in HealthKit
cat healthkit-index.md | head -100
# Search for specific topic
grep -i "workout" healthkit-index.md
grep -i "navigation" ../swiftui/swiftui-overview.md2. Find Documentation Paths
Index files list all available documentation pages. Each entry shows the path:
- [HKWorkout](/documentation/healthkit/hkworkout)
- [NavigationStack](/documentation/swiftui/navigationstack)3. Fetch More Detailed Docs
1. Check whether the detailed page is already available in one of your installed Apple skills. 2. Use skill names, descriptions, or SKILL.md frontmatter to find likely skill directories, then grep their local .md files before fetching. This is faster and uses less context than fetching new docs from the internet. 3. If no installed skill has the page, use the same path with the sosumi.ai Markdown mirror.
For example, /documentation/healthkit/hkworkout maps to https://sosumi.ai/documentation/healthkit/hkworkout.
4. Browse Missing Framework Indexes
If the local indexes don't include the framework you need, use the framework's sosumi.ai index:
https://sosumi.ai/documentation/{framework}For example, https://sosumi.ai/documentation/foundation provides a Markdown index you can search for Foundation paths.
If the Markdown mirror is unavailable and your environment can parse JSON, Apple's public DocC index endpoint is:
https://developer.apple.com/tutorials/data/index/{framework}The useful path tree is under interfaceLanguages.swift[0].children.
Navigation: Observation
Observable conformance
Change tracking
- func withObservationTracking<T>(() -> T, onChange: @autoclosure () -> () -> Void) -> T)
- ObservationRegistrar
Creating an observation registrar
Receiving change notifications
- func willSet<Subject, Member>(Subject, keyPath: KeyPath<Subject, Member>))
- func didSet<Subject, Member>(Subject, keyPath: KeyPath<Subject, Member>))
Identifying transactional access
- func access<Subject, Member>(Subject, keyPath: KeyPath<Subject, Member>))
- func withMutation<Subject, Member, T>(of: Subject, keyPath: KeyPath<Subject, Member>, () throws -> T) rethrows -> T)
Observation in SwiftUI
- Managing model data in your app
- Migrating from the Observable Object protocol to the Observable macro
Structures
Structures
Initializers
Type Methods
Enumerations
Enumeration Cases
Macros
---
Extracted from Apple DocC JSON by apple-skills tooling. This is unofficial content. All documentation belongs to Apple Inc.
Navigation: XCTest
Test cases and test methods
Customizing Test Setup and Teardown
- Set Up and Tear Down State in Your Tests
- class func setUp())
- func addTeardownBlock(() async throws -> Void)-2guon)
- func addTeardownBlock(() throws -> Void)-5zw6c)
- class func tearDown())
Managing Test Case Execution
- class var runsForEachTargetApplicationUIConfiguration: Bool
- var continueAfterFailure: Bool
- var executionTimeAllowance: TimeInterval
Measuring Performance
- func measure(() -> Void))
- [func measureMetrics([XCTPerformanceMetric], automaticallyStartMeasuring: Bool, for: () -> Void)](/documentation/xctest/xctestcase/measuremetrics(_:automaticallystartmeasuring:for:))
- [func measure(metrics: [any XCTMetric], block: () -> Void)](/documentation/xctest/xctestcase/measure(metrics:block:))
- [func measure(metrics: [any XCTMetric], options: XCTMeasureOptions, block: () -> Void)](/documentation/xctest/xctestcase/measure(metrics:options:block:))
- func measure(options: XCTMeasureOptions, block: () -> Void))
- func startMeasuring())
- func stopMeasuring())
- [class var defaultPerformanceMetrics: [XCTPerformanceMetric]](/documentation/xctest/xctestcase/defaultperformancemetrics)
- [class var defaultMetrics: [any XCTMetric]](/documentation/xctest/xctestcase/defaultmetrics)
- class var defaultMeasureOptions: XCTMeasureOptions
- XCTPerformanceMetric
Measuring Elapsed Time
Initializing an Item
Creating Asynchronous Test Expectations
- func expectation(description: String) -> XCTestExpectation)
- func expectation(for: NSPredicate, evaluatedWith: Any?, handler: XCTNSPredicateExpectation.Handler?) -> XCTestExpectation)
- func expectation(forNotification: NSNotification.Name, object: Any?, handler: XCTNSNotificationExpectation.Handler?) -> XCTestExpectation)
- func expectation(forNotification: NSNotification.Name, object: Any?, notificationCenter: NotificationCenter, handler: XCTNSNotificationExpectation.Handler?) -> XCTestExpectation)
- func keyValueObservingExpectation(for: Any, keyPath: String, expectedValue: Any?) -> XCTestExpectation)
- func expectation<T, V>(that: KeyPath<T, V>, on: T, options: NSKeyValueObservingOptions, willEqual: V) -> XCTKeyPathExpectation<T, V>)
- func keyValueObservingExpectation(for: Any, keyPath: String, handler: XCTKVOExpectation.Handler?) -> XCTestExpectation)
- func expectation<T, V>(that: KeyPath<T, V>, on: T, options: NSKeyValueObservingOptions, willSatisfy: XCTKeyPathExpectation<T, V>.Predicate?) -> XCTKeyPathExpectation<T, V>-6itb)
- func expectation<T, V>(that: KeyPath<T, V>, on: T, options: NSKeyValueObservingOptions, willSatisfy: XCTKeyPathExpectation<T, V>.AsynchronousFilter?) -> XCTKeyPathExpectation<T, V>-292oj)
- func expectation<T, V>(that: KeyPath<T, V>, on: T, options: NSKeyValueObservingOptions, willSatisfy: XCTKeyPathExpectation<T, V>.SynchronousFilter?) -> XCTKeyPathExpectation<T, V>-85or0)
Waiting for Expectations
- [func fulfillment(of: [XCTestExpectation], timeout: TimeInterval, enforceOrder: Bool) async](/documentation/xctest/xctestcase/fulfillment(of:timeout:enforceorder:))
- [func wait(for: [XCTestExpectation])](/documentation/xctest/xctestcase/wait(for:))
- [func wait(for: [XCTestExpectation], enforceOrder: Bool)](/documentation/xctest/xctestcase/wait(for:enforceorder:))
- [func wait(for: [XCTestExpectation], timeout: TimeInterval)](/documentation/xctest/xctestcase/wait(for:timeout:))
- [func wait(for: [XCTestExpectation], timeout: TimeInterval, enforceOrder: Bool)](/documentation/xctest/xctestcase/wait(for:timeout:enforceorder:))
- func waitForExpectations(timeout: TimeInterval, handler: (((any Error)?) -> Void)?))
- XCWaitCompletionHandler
- XCTestError
Classifying Errors with Codes
- static var timeoutWhileWaiting: XCTestError.Code
- static var failureWhileWaiting: XCTestError.Code
- XCTestError.Code
Error Codes
Initializers
Classifying Errors by Domain
Type Properties
Error Codes
Initializers
Monitoring UI Interruptions
- Handling UI Interruptions
- func addUIInterruptionMonitor(withDescription: String, handler: (XCUIElement) -> Bool) -> any NSObjectProtocol)
- func removeUIInterruptionMonitor(any NSObjectProtocol))
Creating Tests Programmatically
- init(invocation: NSInvocation?))
- init(selector: Selector))
- [class var testInvocations: [NSInvocation]](/documentation/xctest/xctestcase/testinvocations)
- var invocation: NSInvocation?
- func invokeTest())
- func record(XCTIssue))
- func recordFailure(withDescription: String, inFile: String, atLine: Int, expected: Bool))
- class var defaultTestSuite: XCTestSuite
Examining Test Properties
Setting Up and Tearing Down
- func setUp(completion: ((any Error)?) -> Void))
- func setUpWithError() throws)
- func setUp())
- func tearDown(completion: ((any Error)?) -> Void))
- func tearDownWithError() throws)
- func tearDown())
Running Tests
Test assertions
Tests for True Conditions
- func XCTAssert(@autoclosure () throws -> Bool, @autoclosure () -> String, file: StaticString, line: UInt))
- func XCTAssertTrue(@autoclosure () throws -> Bool, @autoclosure () -> String, file: StaticString, line: UInt))
Tests for False Conditions
Tests for a Nil Condition
Tests for a Non-Nil Condition
- func XCTAssertNotNil(@autoclosure () throws -> Any?, @autoclosure () -> String, file: StaticString, line: UInt))
- func XCTUnwrap<T>(@autoclosure () throws -> T?, @autoclosure () -> String, file: StaticString, line: UInt) throws -> T)
Tests for Equality and Inequality
- func XCTAssertEqual<T>(@autoclosure () throws -> T, @autoclosure () throws -> T, @autoclosure () -> String, file: StaticString, line: UInt))
- func XCTAssertNotEqual<T>(@autoclosure () throws -> T, @autoclosure () throws -> T, @autoclosure () -> String, file: StaticString, line: UInt))
Tests for Identical Objects
- func XCTAssertIdentical(@autoclosure () throws -> AnyObject?, @autoclosure () throws -> AnyObject?, @autoclosure () -> String, file: StaticString, line: UInt))
- func XCTAssertNotIdentical(@autoclosure () throws -> AnyObject?, @autoclosure () throws -> AnyObject?, @autoclosure () -> String, file: StaticString, line: UInt))
Tests for Equality Within a Specified Accuracy
- func XCTAssertEqual<T>(@autoclosure () throws -> T, @autoclosure () throws -> T, accuracy: T, @autoclosure () -> String, file: StaticString, line: UInt)-6frfw)
- func XCTAssertEqual<T>(@autoclosure () throws -> T, @autoclosure () throws -> T, accuracy: T, @autoclosure () -> String, file: StaticString, line: UInt)-4epu5)
- func XCTAssertNotEqual<T>(@autoclosure () throws -> T, @autoclosure () throws -> T, accuracy: T, @autoclosure () -> String, file: StaticString, line: UInt)-7jcd6)
- func XCTAssertNotEqual<T>(@autoclosure () throws -> T, @autoclosure () throws -> T, accuracy: T, @autoclosure () -> String, file: StaticString, line: UInt)-326vc)
Tests for Comparable Values
- func XCTAssertGreaterThan<T>(@autoclosure () throws -> T, @autoclosure () throws -> T, @autoclosure () -> String, file: StaticString, line: UInt))
- func XCTAssertGreaterThanOrEqual<T>(@autoclosure () throws -> T, @autoclosure () throws -> T, @autoclosure () -> String, file: StaticString, line: UInt))
- func XCTAssertLessThanOrEqual<T>(@autoclosure () throws -> T, @autoclosure () throws -> T, @autoclosure () -> String, file: StaticString, line: UInt))
- func XCTAssertLessThan<T>(@autoclosure () throws -> T, @autoclosure () throws -> T, @autoclosure () -> String, file: StaticString, line: UInt))
Tests for Errors
Unconditional Test Failures
Expected Failures
Detailing Expected Failure
Setting Options
Matching Failures
Specifying Options
Matching Failures
Specifying Options
- func XCTExpectFailure(String?, options: XCTExpectedFailure.Options))
- func XCTExpectFailure(String?, enabled: Bool?, strict: Bool?, issueMatcher: ((XCTIssue) -> Bool)?))
- func XCTExpectFailure<R>(String?, options: XCTExpectedFailure.Options, failingBlock: () throws -> R) rethrows -> R)
- func XCTExpectFailure<R>(String?, enabled: Bool?, strict: Bool?, failingBlock: () throws -> R, issueMatcher: ((XCTIssue) -> Bool)?) rethrows -> R)
Methods for Skipping Tests
- func XCTSkipIf(@autoclosure () throws -> Bool, @autoclosure () -> String?, file: StaticString, line: UInt) throws)
- func XCTSkipUnless(@autoclosure () throws -> Bool, @autoclosure () -> String?, file: StaticString, line: UInt) throws)
- XCTSkip
Skipping a Test
Describing a Skipped Test
Asynchronous tests
Expectations
Creating Expectations
Fulfilling Expectations
Fulfillment Count
Unintended Expectations
Key Value Observing Expectations
Creating KVO expectations
- convenience init(keyPath: String, object: Any))
- convenience init(keyPath: String, object: Any, expectedValue: Any?))
- init(keyPath: String, object: Any, expectedValue: Any?, options: NSKeyValueObservingOptions))
Expectation properties
- var keyPath: String
- var observedObject: Any
- var expectedValue: Any?
- var options: NSKeyValueObservingOptions
Custom KVO evaluation
Creating key path expectations
- convenience init(keyPath: KeyPath<T, V>, observedObject: T, options: NSKeyValueObservingOptions, expectedValue: V))
- convenience init(keyPath: KeyPath<T, V>, observedObject: T, options: NSKeyValueObservingOptions, predicate: XCTKeyPathExpectation<T, V>.Predicate?))
- convenience init(keyPath: KeyPath<T, V>, observedObject: T, options: NSKeyValueObservingOptions, filter: XCTKeyPathExpectation<T, V>.SynchronousFilter?)-plka)
- convenience init(keyPath: KeyPath<T, V>, observedObject: T, options: NSKeyValueObservingOptions, filter: XCTKeyPathExpectation<T, V>.AsynchronousFilter?)-8noag)
- XCTKeyPathExpectation.AsynchronousFilter
- XCTKeyPathExpectation.SynchronousFilter
- XCTKeyPathExpectation.Predicate
Expectation properties
- let keyPath: KeyPath<T, V>
- let observedObject: T
- let options: NSKeyValueObservingOptions
- var expectedValue: V?
Notification-Based Expectations
Creating NSNotification Expectations
- convenience init(name: NSNotification.Name))
- convenience init(name: NSNotification.Name, object: Any?))
- init(name: NSNotification.Name, object: Any?, notificationCenter: NotificationCenter))
Expectation Properties
- var notificationName: NSNotification.Name
- var observedObject: Any?
- var notificationCenter: NotificationCenter
Custom Notification Evaluation
Creating Darwin Notification Expectations
Expectation Properties
Custom Notification Evaluation
Predicate-Based Expectations
Creating a Predicate-Based Expectation
Expectation Properties
Handling Predicate Resolution
Expectation Waiters
Creating a Waiter
Waiting for Expectations
- [func fulfillment(of: [XCTestExpectation], timeout: TimeInterval, enforceOrder: Bool) async -> XCTWaiter.Result](/documentation/xctest/xctwaiter/fulfillment(of:timeout:enforceorder:)-swift.method)
- [func wait(for: [XCTestExpectation]) -> XCTWaiter.Result](/documentation/xctest/xctwaiter/wait(for:)-swift.method)
- [func wait(for: [XCTestExpectation], enforceOrder: Bool) -> XCTWaiter.Result](/documentation/xctest/xctwaiter/wait(for:enforceorder:)-swift.method)
- [func wait(for: [XCTestExpectation], timeout: TimeInterval) -> XCTWaiter.Result](/documentation/xctest/xctwaiter/wait(for:timeout:)-swift.method)
- [func wait(for: [XCTestExpectation], timeout: TimeInterval, enforceOrder: Bool) -> XCTWaiter.Result](/documentation/xctest/xctwaiter/wait(for:timeout:enforceorder:)-swift.method)
- [class func fulfillment(of: [XCTestExpectation], timeout: TimeInterval, enforceOrder: Bool) async -> XCTWaiter.Result](/documentation/xctest/xctwaiter/fulfillment(of:timeout:enforceorder:)-swift.type.method)
- [class func wait(for: [XCTestExpectation]) -> XCTWaiter.Result](/documentation/xctest/xctwaiter/wait(for:)-swift.type.method)
- [class func wait(for: [XCTestExpectation], enforceOrder: Bool) -> XCTWaiter.Result](/documentation/xctest/xctwaiter/wait(for:enforceorder:)-swift.type.method)
- [class func wait(for: [XCTestExpectation], timeout: TimeInterval) -> XCTWaiter.Result](/documentation/xctest/xctwaiter/wait(for:timeout:)-swift.type.method)
- [class func wait(for: [XCTestExpectation], timeout: TimeInterval, enforceOrder: Bool) -> XCTWaiter.Result](/documentation/xctest/xctwaiter/wait(for:timeout:enforceorder:)-swift.type.method)
- XCTWaiter.Result
Result States
Initializers
Responding to Expectation Fulfilment
Timeout Events
- [func waiter(XCTWaiter, didTimeoutWithUnfulfilledExpectations: [XCTestExpectation])](/documentation/xctest/xctwaiterdelegate/waiter(_:didtimeoutwithunfulfilledexpectations:))
- func nestedWaiter(XCTWaiter, wasInterruptedByTimedOutWaiter: XCTWaiter))
Order of Fulfillment Events
Inverted Expectation Events
- [var fulfilledExpectations: [XCTestExpectation]](/documentation/xctest/xctwaiter/fulfilledexpectations)
UI tests
Performance tests
Measuring Performance
Measurement Options
Getting Default Options
Using Option Details
Measurement Options
- static var manuallyStart: XCTMeasureOptions.InvocationOptions
- static var manuallyStop: XCTMeasureOptions.InvocationOptions
Initializers
Measurement Metrics
Recording Metrics
Reporting Gathered Metrics
- [func reportMeasurements(from: XCTPerformanceMeasurementTimestamp, to: XCTPerformanceMeasurementTimestamp) throws -> [XCTPerformanceMeasurement]](/documentation/xctest/xctmetric/reportmeasurements(from:to:))
Initializers
Initializing an Item
Creating a hitch metric
Initializers
Measuring Specific Signposts
Measuring Navigation Transitions
- class var customNavigationTransitionMetric: any XCTMetric
- class var navigationTransitionMetric: any XCTMetric
Measuring Scrolling Properties
Deprecated
- class var applicationLaunch: XCTOSSignpostMetric
- class var scrollDecelerationMetric: any XCTMetric
- class var scrollDraggingMetric: any XCTMetric
Initializers
Initializers
Measurements
Initializing a Measurement
- init(identifier: String, displayName: String, doubleValue: Double, unitSymbol: String))
- convenience init(identifier: String, displayName: String, doubleValue: Double, unitSymbol: String, polarity: XCTPerformanceMeasurement.Polarity))
- convenience init(identifier: String, displayName: String, value: Measurement<Unit>))
- convenience init(identifier: String, displayName: String, value: Measurement<Unit>, polarity: XCTPerformanceMeasurement.Polarity))
Identifying Measurements
Accessing Measured Values
- var doubleValue: Double
- var unitSymbol: String
- var value: Measurement<Unit>
- var polarity: XCTPerformanceMeasurement.Polarity
- XCTPerformanceMeasurement.Polarity
Polarity Types
Initializers
Initializers
Mach Absolute Time
Date
Activities and attachments
Activities
Running Activities
Adding Attachments
Activity Properties
Attachments
Creating Attachments from Data
- convenience init(data: Data))
- convenience init(data: Data, uniformTypeIdentifier: String))
- [init(uniformTypeIdentifier: String?, name: String?, payload: Data?, userInfo: [AnyHashable : Any]?)](/documentation/xctest/xctattachment/init(uniformtypeidentifier:name:payload:userinfo:))
Creating Attachments from Files and Folders
- convenience init(contentsOfFileAtURL: URL))
- convenience init(contentsOfFileAtURL: URL, uniformTypeIdentifier: String))
- convenience init(compressedContentsOfDirectoryAtURL: URL))
Creating Attachments from Images and Screenshots
- convenience init(image: UIImage))
- convenience init(image: UIImage, quality: XCTAttachment.ImageQuality))
- convenience init(screenshot: XCUIScreenshot))
- convenience init(screenshot: XCUIScreenshot, quality: XCTAttachment.ImageQuality))
- XCUIScreenshot
- XCTAttachment.ImageQuality
Quality Settings
Initializers
Creating Attachments from Objects
- convenience init(plistObject: Any))
- convenience init(archivableObject: any NSSecureCoding))
- convenience init(archivableObject: any NSSecureCoding, uniformTypeIdentifier: String))
Creating Attachments from Strings
Setting an Attachment’s Lifetime
Attachment Lifetimes
Initializers
Attachment Metadata
- var name: String?
- var uniformTypeIdentifier: String
- [var userInfo: [AnyHashable : Any]?](/documentation/xctest/xctattachment/userinfo)
Initializers
- convenience init(compressedContentsOfDirectory: URL))
- convenience init(contentsOfFile: URL))
- convenience init(contentsOfFile: URL, uniformTypeIdentifier: String))
Default Implementations
Initializers
- convenience init(compressedContentsOfDirectoryAtURL: URL))
- convenience init(contentsOfFileAtURL: URL))
- convenience init(contentsOfFileAtURL: URL, uniformTypeIdentifier: String))
Test execution
Test Failures
Issue Types
Issue Details
- var type: XCTIssue.IssueType
- var compactDescription: String
- var detailedDescription: String?
- var sourceCodeContext: XCTSourceCodeContext
- var associatedError: (any Error)?
- [var attachments: [XCTAttachment]](/documentation/xctest/xctissue-swift.struct/attachments)
- func add(XCTAttachment))
Initializers
- [init(type: XCTIssue.IssueType, compactDescription: String, detailedDescription: String?, sourceCodeContext: XCTSourceCodeContext, associatedError: (any Error)?, attachments: [XCTAttachment], severity: XCTIssue.Severity)](/documentation/xctest/xctissue-swift.struct/init(type:compactdescription:detaileddescription:sourcecodecontext:associatederror:attachments:severity:))
Instance Properties
Type Aliases
Initializers
- convenience init(type: XCTIssueReference.IssueType, compactDescription: String))
- [init(type: XCTIssueReference.IssueType, compactDescription: String, detailedDescription: String?, sourceCodeContext: XCTSourceCodeContext, associatedError: (any Error)?, attachments: [XCTAttachment])](/documentation/xctest/xctissuereference/init(type:compactdescription:detaileddescription:sourcecodecontext:associatederror:attachments:))
- [init(type: XCTIssueReference.IssueType, compactDescription: String, detailedDescription: String?, sourceCodeContext: XCTSourceCodeContext, associatedError: (any Error)?, attachments: [XCTAttachment], severity: XCTIssueReference.Severity)](/documentation/xctest/xctissuereference/init(type:compactdescription:detaileddescription:sourcecodecontext:associatederror:attachments:severity:))
- convenience init(type: XCTIssueReference.IssueType, compactDescription: String, severity: XCTIssueReference.Severity))
Issue Types
Issue Types
- case assertionFailure
- case performanceRegression
- case system
- case thrownError
- case uncaughtException
- case unmatchedExpectedFailure
Initializers
Issue Details
- var type: XCTIssueReference.IssueType
- var compactDescription: String
- var detailedDescription: String?
- var sourceCodeContext: XCTSourceCodeContext
- var associatedError: (any Error)?
- [var attachments: [XCTAttachment]](/documentation/xctest/xctissuereference/attachments)
Instance Properties
Enumerations
Enumeration Cases
Initializers
Issue Details
- var type: XCTIssueReference.IssueType
- var compactDescription: String
- var detailedDescription: String?
- var sourceCodeContext: XCTSourceCodeContext
- var associatedError: (any Error)?
- [var attachments: [XCTAttachment]](/documentation/xctest/xctmutableissue/attachments)
- func add(XCTAttachment))
Instance Properties
Initializers
- [init(callStack: [XCTSourceCodeFrame], location: XCTSourceCodeLocation?)](/documentation/xctest/xctsourcecodecontext/init(callstack:location:))
- [convenience init(callStackAddresses: [NSNumber], location: XCTSourceCodeLocation?)](/documentation/xctest/xctsourcecodecontext/init(callstackaddresses:location:))
- convenience init(location: XCTSourceCodeLocation?))
- convenience init())
Context Information
- [var callStack: [XCTSourceCodeFrame]](/documentation/xctest/xctsourcecodecontext/callstack)
- var location: XCTSourceCodeLocation?
Initializers
Frame Information
- var address: UInt64
- var symbolInfo: XCTSourceCodeSymbolInfo?
- var symbolicationError: (any Error)?
- func symbolInfo() throws -> XCTSourceCodeSymbolInfo)
Initializers
- init(fileURL: URL, lineNumber: Int))
- convenience init(filePath: String, lineNumber: Int)-3hzmr)
- convenience init(filePath: StaticString, lineNumber: UInt)-8qw52)
Source Location Information
Initializers
Symbol Information
Test Runs
Deprecated
Managing Test Runs
- func addTestRun(XCTestRun))
- [var testRuns: [XCTestRun]](/documentation/xctest/xctestsuiterun/testruns)
Creating Test Runs
Performing Test Runs
Tracking Test Durations
- var startDate: Date?
- var stopDate: Date?
- var testDuration: TimeInterval
- var totalDuration: TimeInterval
Gathering Test Outcomes
- var hasSucceeded: Bool
- var hasBeenSkipped: Bool
- var executionCount: Int
- var failureCount: Int
- var skipCount: Int
- var test: XCTest
- var testCaseCount: Int
- var totalFailureCount: Int
- var unexpectedExceptionCount: Int
Deprecated
Test Observation
Observation Methods
- func testBundleWillStart(Bundle))
- func testSuiteWillStart(XCTestSuite))
- func testCaseWillStart(XCTestCase))
- func testCase(XCTestCase, didRecord: XCTIssue)-4cou6)
- func testCase(XCTestCase, didRecord: XCTExpectedFailure)-8k955)
- func testCase(XCTestCase, didFailWithDescription: String, inFile: String?, atLine: Int))
- func testCaseDidFinish(XCTestCase))
- func testSuite(XCTestSuite, didRecord: XCTIssue)-3rk9k)
- func testSuite(XCTestSuite, didRecord: XCTExpectedFailure)-1xjkv)
- func testSuite(XCTestSuite, didFailWithDescription: String, inFile: String?, atLine: Int))
- func testSuiteDidFinish(XCTestSuite))
- func testBundleDidFinish(Bundle))
Accessing the Shared Observation Center
Managing Observers
Test Suites
Creating Test Suites
- class var `default`: XCTestSuite
- init(name: String))
- convenience init(forBundlePath: String))
- convenience init(forTestCaseClass: AnyClass))
- convenience init(forTestCaseWithName: String))
Managing Tests
- func addTest(XCTest))
- [var tests: [XCTest]](/documentation/xctest/xctestsuite/tests)
Deprecated
Deprecated Classes
Logging Test Results
Starting and Stopping Test Observation
Monitoring Test Activity
- func testCaseDidFail(XCTestRun!, withDescription: String!, inFile: String!, atLine: Int))
- func testCaseDidStart(XCTestRun!))
- func testCaseDidStop(XCTestRun!))
- func testSuiteDidStart(XCTestRun!))
- func testSuiteDidStop(XCTestRun!))
Inspecting a Test
Deprecated Functions
- func XCTSelfTestMain() -> Int32)
- func XCTAssertEqualWithAccuracy<T>(@autoclosure () throws -> T, @autoclosure () throws -> T, accuracy: T, @autoclosure () -> String, file: StaticString, line: UInt))
- func XCTAssertNotEqualWithAccuracy<T>(@autoclosure () throws -> T, @autoclosure () throws -> T, T, @autoclosure () -> String, file: StaticString, line: UInt))
Deprecated Constants
- let XCTestObserverClassKey: String
- let XCTestedUnitPath: String
- let XCTestScopeNone: String
- let XCTestScopeAll: String
- let XCTestScopeKey: String
- let XCTestScopeSelf: String
- let XCTestToolKey: String
Variables
Functions
---
Extracted from Apple DocC JSON by apple-skills tooling. This is unofficial content. All documentation belongs to Apple Inc.
Navigation: XCUIAutomation
Essentials
UI element queries
Creating new queries
- func children(matching: XCUIElement.ElementType) -> XCUIElementQuery)
- func descendants(matching: XCUIElement.ElementType) -> XCUIElementQuery)
- func containing(NSPredicate) -> XCUIElementQuery)
- func containing(XCUIElement.ElementType, identifier: String?) -> XCUIElementQuery)
- func matching(identifier: String) -> XCUIElementQuery)
- func matching(NSPredicate) -> XCUIElementQuery)
- func matching(XCUIElement.ElementType, identifier: String?) -> XCUIElementQuery)
Accessing matched elements
- [var allElementsBoundByAccessibilityElement: [XCUIElement]](/documentation/xcuiautomation/xcuielementquery/allelementsboundbyaccessibilityelement)
- [var allElementsBoundByIndex: [XCUIElement]](/documentation/xcuiautomation/xcuielementquery/allelementsboundbyindex)
- var count: Int
- var element: XCUIElement
- func element(boundBy: Int) -> XCUIElement)
- func element(matching: NSPredicate) -> XCUIElement)
- func element(matching: XCUIElement.ElementType, identifier: String?) -> XCUIElement)
- subscript(String) -> XCUIElement)
- func element(at: Int) -> XCUIElement)
Debugging element queries
Identifying window buttons
- let XCUIIdentifierCloseWindow: String
- let XCUIIdentifierFullScreenWindow: String
- let XCUIIdentifierMinimizeWindow: String
- let XCUIIdentifierZoomWindow: String
Finding the first matching element
Querying descendant elements
- var activityIndicators: XCUIElementQuery
- var alerts: XCUIElementQuery
- var browsers: XCUIElementQuery
- var buttons: XCUIElementQuery
- var cells: XCUIElementQuery
- var checkBoxes: XCUIElementQuery
- var collectionViews: XCUIElementQuery
- var colorWells: XCUIElementQuery
- var comboBoxes: XCUIElementQuery
- var datePickers: XCUIElementQuery
- var decrementArrows: XCUIElementQuery
- var dialogs: XCUIElementQuery
- var disclosureTriangles: XCUIElementQuery
- var disclosedChildRows: XCUIElementQuery
- var dockItems: XCUIElementQuery
- var drawers: XCUIElementQuery
- var grids: XCUIElementQuery
- var groups: XCUIElementQuery
- var handles: XCUIElementQuery
- var helpTags: XCUIElementQuery
- var icons: XCUIElementQuery
- var images: XCUIElementQuery
- var incrementArrows: XCUIElementQuery
- var keyboards: XCUIElementQuery
- var keys: XCUIElementQuery
- var layoutAreas: XCUIElementQuery
- var layoutItems: XCUIElementQuery
- var levelIndicators: XCUIElementQuery
- var links: XCUIElementQuery
- var maps: XCUIElementQuery
- var mattes: XCUIElementQuery
- var menuBarItems: XCUIElementQuery
- var menuBars: XCUIElementQuery
- var menuButtons: XCUIElementQuery
- var menuItems: XCUIElementQuery
- var menus: XCUIElementQuery
- var navigationBars: XCUIElementQuery
- var otherElements: XCUIElementQuery
- var outlineRows: XCUIElementQuery
- var outlines: XCUIElementQuery
- var pageIndicators: XCUIElementQuery
- var pickerWheels: XCUIElementQuery
- var pickers: XCUIElementQuery
- var popUpButtons: XCUIElementQuery
- var popovers: XCUIElementQuery
- var progressIndicators: XCUIElementQuery
- var radioButtons: XCUIElementQuery
- var radioGroups: XCUIElementQuery
- var ratingIndicators: XCUIElementQuery
- var relevanceIndicators: XCUIElementQuery
- var rulerMarkers: XCUIElementQuery
- var rulers: XCUIElementQuery
- var scrollBars: XCUIElementQuery
- var scrollViews: XCUIElementQuery
- var searchFields: XCUIElementQuery
- var secureTextFields: XCUIElementQuery
- var segmentedControls: XCUIElementQuery
- var sheets: XCUIElementQuery
- var sliders: XCUIElementQuery
- var splitGroups: XCUIElementQuery
- var splitters: XCUIElementQuery
- var staticTexts: XCUIElementQuery
- var statusBars: XCUIElementQuery
- var statusItems: XCUIElementQuery
- var steppers: XCUIElementQuery
- var switches: XCUIElementQuery
- var tabBars: XCUIElementQuery
- var tabGroups: XCUIElementQuery
- var tableColumns: XCUIElementQuery
- var tableRows: XCUIElementQuery
- var tables: XCUIElementQuery
- var tabs: XCUIElementQuery
- var textFields: XCUIElementQuery
- var textViews: XCUIElementQuery
- var timelines: XCUIElementQuery
- var toggles: XCUIElementQuery
- var toolbarButtons: XCUIElementQuery
- var toolbars: XCUIElementQuery
- var touchBars: XCUIElementQuery
- var valueIndicators: XCUIElementQuery
- var webViews: XCUIElementQuery
- var windows: XCUIElementQuery
UI elements
Querying element state
- func waitForExistence(timeout: TimeInterval) -> Bool)
- func waitForNonExistence(timeout: TimeInterval) -> Bool)
- func wait<V>(for: KeyPath<XCUIElement, V>, toEqual: V, timeout: TimeInterval) -> Bool)
- var exists: Bool
- var isHittable: Bool
- var debugDescription: String
Querying descendant elements
- func children(matching: XCUIElement.ElementType) -> XCUIElementQuery)
- func descendants(matching: XCUIElement.ElementType) -> XCUIElementQuery)
Typing text
Combining keystrokes
- func typeKey(XCUIKeyboardKey, modifierFlags: XCUIElement.KeyModifierFlags)-6gaoi)
- func typeKey(String, modifierFlags: XCUIElement.KeyModifierFlags)-9ubn)
- XCUIKeyboardKey
Modifier keys
- static let command: XCUIKeyboardKey
- static let control: XCUIKeyboardKey
- static let option: XCUIKeyboardKey
- static let shift: XCUIKeyboardKey
- static let rightCommand: XCUIKeyboardKey
- static let rightControl: XCUIKeyboardKey
- static let rightOption: XCUIKeyboardKey
- static let rightShift: XCUIKeyboardKey
Navigation keys
- static let upArrow: XCUIKeyboardKey
- static let downArrow: XCUIKeyboardKey
- static let leftArrow: XCUIKeyboardKey
- static let rightArrow: XCUIKeyboardKey
- static let home: XCUIKeyboardKey
- static let end: XCUIKeyboardKey
- static let pageUp: XCUIKeyboardKey
- static let pageDown: XCUIKeyboardKey
- static let help: XCUIKeyboardKey
Function keys
- static let secondaryFn: XCUIKeyboardKey
- static let F1: XCUIKeyboardKey
- static let F2: XCUIKeyboardKey
- static let F3: XCUIKeyboardKey
- static let F4: XCUIKeyboardKey
- static let F5: XCUIKeyboardKey
- static let F6: XCUIKeyboardKey
- static let F7: XCUIKeyboardKey
- static let F8: XCUIKeyboardKey
- static let F9: XCUIKeyboardKey
- static let F10: XCUIKeyboardKey
- static let F11: XCUIKeyboardKey
- static let F12: XCUIKeyboardKey
- static let F13: XCUIKeyboardKey
- static let F14: XCUIKeyboardKey
- static let F15: XCUIKeyboardKey
- static let F16: XCUIKeyboardKey
- static let F17: XCUIKeyboardKey
- static let F18: XCUIKeyboardKey
- static let F19: XCUIKeyboardKey
Text-editing keys
- static let capsLock: XCUIKeyboardKey
- static let delete: XCUIKeyboardKey
- static let forwardDelete: XCUIKeyboardKey
- static let space: XCUIKeyboardKey
- static let tab: XCUIKeyboardKey
Other keys
- static let clear: XCUIKeyboardKey
- static let enter: XCUIKeyboardKey
- static let escape: XCUIKeyboardKey
- static let `return`: XCUIKeyboardKey
Initializers
- class func perform(withKeyModifiers: XCUIElement.KeyModifierFlags, block: () -> Void))
- XCUIElement.KeyModifierFlags
Flags for combination keys
- static var command: XCUIElement.KeyModifierFlags
- static var control: XCUIElement.KeyModifierFlags
- static var option: XCUIElement.KeyModifierFlags
- static var shift: XCUIElement.KeyModifierFlags
- static var capsLock: XCUIElement.KeyModifierFlags
- static var function: XCUIElement.KeyModifierFlags
Initializers
Legacy flags for combination keys
- static var alphaShift: XCUIElement.KeyModifierFlags
- static var alternate: XCUIElement.KeyModifierFlags
Moving the pointer
Clicking
- func click())
- func click(forDuration: TimeInterval, thenDragTo: XCUIElement))
- func click(forDuration: TimeInterval, thenDragTo: XCUIElement, withVelocity: XCUIGestureVelocity, thenHoldForDuration: TimeInterval))
- func doubleClick())
- func rightClick())
Scrolling
Tapping and pressing
- func tap())
- func doubleTap())
- func press(forDuration: TimeInterval))
- func press(forDuration: TimeInterval, thenDragTo: XCUIElement))
- func press(forDuration: TimeInterval, thenDragTo: XCUIElement, withVelocity: XCUIGestureVelocity, thenHoldForDuration: TimeInterval))
Tapping multiple times
Performing gestures
- func swipeLeft())
- func swipeLeft(velocity: XCUIGestureVelocity))
- func swipeRight())
- func swipeRight(velocity: XCUIGestureVelocity))
- func swipeUp())
- func swipeUp(velocity: XCUIGestureVelocity))
- func swipeDown())
- func swipeDown(velocity: XCUIGestureVelocity))
- func pinch(withScale: CGFloat, velocity: CGFloat))
- func rotate(CGFloat, withVelocity: CGFloat))
- XCUIGestureVelocity
Creating a gesture velocity
Using typical gesture velocities
- static let `default`: XCUIGestureVelocity
- static let fast: XCUIGestureVelocity
- static let slow: XCUIGestureVelocity
Interacting with sliders
Interacting with pickers
Calculating coordinates
Supporting types
Enumeration cases
- case activityIndicator
- case alert
- case any
- case application
- case browser
- case button
- case cell
- case checkBox
- case collectionView
- case colorWell
- case comboBox
- case datePicker
- case decrementArrow
- case dialog
- case disclosureTriangle
- case dockItem
- case drawer
- case grid
- case group
- case handle
- case helpTag
- case icon
- case image
- case incrementArrow
- case key
- case keyboard
- case layoutArea
- case layoutItem
- case levelIndicator
- case link
- case map
- case matte
- case menu
- case menuBar
- case menuBarItem
- case menuButton
- case menuItem
- case navigationBar
- case other
- case outline
- case outlineRow
- case pageIndicator
- case picker
- case pickerWheel
- case popUpButton
- case popover
- case progressIndicator
- case radioButton
- case radioGroup
- case ratingIndicator
- case relevanceIndicator
- case ruler
- case rulerMarker
- case scrollBar
- case scrollView
- case searchField
- case secureTextField
- case segmentedControl
- case sheet
- case slider
- case splitGroup
- case splitter
- case staticText
- case statusBar
- case statusItem
- case stepper
- case `switch`
- case tab
- case tabBar
- case tabGroup
- case table
- case tableColumn
- case tableRow
- case textField
- case textView
- case timeline
- case toggle
- case toolbar
- case toolbarButton
- case touchBar
- case valueIndicator
- case webView
- case window
Initializers
Enumeration cases
Initializers
Keys
- static let children: XCUIElement.AttributeName
- static let elementType: XCUIElement.AttributeName
- static let enabled: XCUIElement.AttributeName
- static let frame: XCUIElement.AttributeName
- static let hasFocus: XCUIElement.AttributeName
- static let horizontalSizeClass: XCUIElement.AttributeName
- static let identifier: XCUIElement.AttributeName
- static let label: XCUIElement.AttributeName
- static let placeholderValue: XCUIElement.AttributeName
- static let selected: XCUIElement.AttributeName
- static let title: XCUIElement.AttributeName
- static let value: XCUIElement.AttributeName
- static let verticalSizeClass: XCUIElement.AttributeName
Initializers
Deprecated methods
- func swipeDown(withVelocity: XCUIGestureVelocity))
- func swipeUp(withVelocity: XCUIGestureVelocity))
- func swipeLeft(withVelocity: XCUIGestureVelocity))
- func swipeRight(withVelocity: XCUIGestureVelocity))
Identity
Enumeration cases
- case activityIndicator
- case alert
- case any
- case application
- case browser
- case button
- case cell
- case checkBox
- case collectionView
- case colorWell
- case comboBox
- case datePicker
- case decrementArrow
- case dialog
- case disclosureTriangle
- case dockItem
- case drawer
- case grid
- case group
- case handle
- case helpTag
- case icon
- case image
- case incrementArrow
- case key
- case keyboard
- case layoutArea
- case layoutItem
- case levelIndicator
- case link
- case map
- case matte
- case menu
- case menuBar
- case menuBarItem
- case menuButton
- case menuItem
- case navigationBar
- case other
- case outline
- case outlineRow
- case pageIndicator
- case picker
- case pickerWheel
- case popUpButton
- case popover
- case progressIndicator
- case radioButton
- case radioGroup
- case ratingIndicator
- case relevanceIndicator
- case ruler
- case rulerMarker
- case scrollBar
- case scrollView
- case searchField
- case secureTextField
- case segmentedControl
- case sheet
- case slider
- case splitGroup
- case splitter
- case staticText
- case statusBar
- case statusItem
- case stepper
- case `switch`
- case tab
- case tabBar
- case tabGroup
- case table
- case tableColumn
- case tableRow
- case textField
- case textView
- case timeline
- case toggle
- case toolbar
- case toolbarButton
- case touchBar
- case valueIndicator
- case webView
- case window
Initializers
Value
Interaction state
Size
- var frame: CGRect
- var horizontalSizeClass: XCUIElement.SizeClass
- var verticalSizeClass: XCUIElement.SizeClass
- XCUIElement.SizeClass
Enumeration cases
Initializers
Inspecting attributes
- [var children: [any XCUIElementSnapshot]](/documentation/xcuiautomation/xcuielementsnapshot/children)
- [var dictionaryRepresentation: [XCUIElement.AttributeName : Any]](/documentation/xcuiautomation/xcuielementsnapshot/dictionaryrepresentation)
Providing snapshots
Getting coordinate properties
Moving the pointer
Clicking
- func click())
- func click(forDuration: TimeInterval, thenDragTo: XCUICoordinate))
- func click(forDuration: TimeInterval, thenDragTo: XCUICoordinate, withVelocity: XCUIGestureVelocity, thenHoldForDuration: TimeInterval))
- func doubleClick())
- func rightClick())
Scrolling
Tapping and pressing
- func tap())
- func doubleTap())
- func press(forDuration: TimeInterval))
- func press(forDuration: TimeInterval, thenDragTo: XCUICoordinate))
- func press(forDuration: TimeInterval, thenDragTo: XCUICoordinate, withVelocity: XCUIGestureVelocity, thenHoldForDuration: TimeInterval))
Performing gestures
- func swipeLeft())
- func swipeLeft(velocity: XCUIGestureVelocity))
- func swipeRight())
- func swipeRight(velocity: XCUIGestureVelocity))
- func swipeUp())
- func swipeUp(velocity: XCUIGestureVelocity))
- func swipeDown())
- func swipeDown(velocity: XCUIGestureVelocity))
Creating relative coordinates
Application lifecycle
Creating an application proxy
Launching the application
- func launch())
- [var launchArguments: [String]](/documentation/xcuiautomation/xcuiapplication/launcharguments)
- [var launchEnvironment: [String : String]](/documentation/xcuiautomation/xcuiapplication/launchenvironment)
- func open(URL))
Activating the application
Terminating the application
Determining application state
Enumeration cases
- case unknown
- case notRunning
- case runningBackgroundSuspended
- case runningBackground
- case runningForeground
Initializers
Waiting for an application state
Resetting authorization status
Protected resources
- case location
- case userTracking
- case contacts
- case calendar
- case reminders
- case photos
- case bluetooth
- case localNetwork
- case microphone
- case camera
- case health
- case homeKit
- case mediaLibrary
- case keyboardNetwork
- case systemRootDirectory
- case userDesktopDirectory
- case userDocumentsDirectory
- case userDownloadsDirectory
- case focus
- case removableVolumes
- case networkVolumes
- case appleEvents
Initializers
Performing an accessibility audit
- func performAccessibilityAudit(for: XCUIAccessibilityAuditType, ((XCUIAccessibilityAuditIssue) throws -> Bool)?) throws)
- XCUIAccessibilityAuditType
Accessibility audit type creation
Accessibility audit types
- static var action: XCUIAccessibilityAuditType
- static var all: XCUIAccessibilityAuditType
- static var contrast: XCUIAccessibilityAuditType
- static var dynamicType: XCUIAccessibilityAuditType
- static var elementDetection: XCUIAccessibilityAuditType
- static var hitRegion: XCUIAccessibilityAuditType
- static var parentChild: XCUIAccessibilityAuditType
- static var sufficientElementDescription: XCUIAccessibilityAuditType
- static var textClipped: XCUIAccessibilityAuditType
- static var trait: XCUIAccessibilityAuditType
Type and description
- var auditType: XCUIAccessibilityAuditType
- var compactDescription: String
- var detailedDescription: String
UI element
Initializers
- init(URL: URL)-6ga10)
Screenshots
Device screens
- class var main: XCUIScreen
- [class var screens: [XCUIScreen]](/documentation/xcuiautomation/xcuiscreen/screens)
Screenshot representations
Taking a Screenshot
Device simulation
Accessing the current device
Interacting with buttons and the Digital Crown
Device buttons
Initializers
- func rotateDigitalCrown(delta: CGFloat))
- func rotateDigitalCrown(delta: CGFloat, velocity: XCUIGestureVelocity))
Performing gestures
Hand gestures
Enumeration Cases
Initializers
Rotating and changing location
Creating a location
Determining the location
Interacting with the OS
Appearances
Initializers
Interacting with Siri
Deprecated
Opening items in applications by URL
Siri activation
Siri proxy state
Remote control simulation
Accessing the simulated remote
Pressing remote buttons
- func press(XCUIRemote.Button))
- func press(XCUIRemote.Button, forDuration: TimeInterval))
- XCUIRemoteButton
Remote buttons
- case up
- case down
- case left
- case right
- case select
- case menu
- case playPause
- case home
- case pageUp
- case pageDown
- case guide
- case fourColors
- case oneTwoThree
- case tvProvider
Initializers
UI testing availability
---
Extracted from Apple DocC JSON by apple-skills tooling. This is unofficial content. All documentation belongs to Apple Inc.
Related skills
How it compares
Start here before loading framework-specific apple-skills when you only need API discovery and doc paths.
FAQ
Which frameworks does apple-docs-index cover?
apple-docs-index lists local indexes for SwiftUI, UIKit, Core Animation, XCTest, XCUIAutomation, HealthKit, Combine, SwiftData, and Observation, with file sizes and topic summaries per framework.
How should developers fetch missing Apple docs?
apple-docs-index instructs grepping installed apple-skills markdown first, then using the same path on the sosumi.ai Markdown mirror when no local skill contains the needed page.