后端与接口
编写或排查 Swift 6 XCUITest UI…
适用于为 Apple 平台编写或维护 Swift 6 XCUITest UI 测试,需要快速定位元素查询、交互、等待、断言、截图、启动参数、权限和常见问题做法时。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
编写或排查 Swift 6 XCUITe特定
解决思路
- 使用 Quick Reference 的基础测试结构:定义 `@MainActor final class MyUITests: XCTestCase`;声明 `var app: XCUIApplication!`;在 `setUp()` 中先调用 `super.setUp()`,设置 `continueAfterFailure = false`,创建 `app = XCUIApplication()` 并调用 `app.launch()`;测试中通过 `let button = app.buttons["Submit"]` 获取元素,用 `XCTAssertTrue(button.waitForExistence(timeout: 5))` 等待,再调用 `button.tap()`。
- 查阅 `element-queries.md`:核心 API 类 XCUIApplication、XCUIElement、XCUIElementQuery、XCUICoordinate。
- 查阅 `interactions.md`:点击、按压、文本输入、滑动、基于坐标和其他手势。
- 查阅 `waiting.md`:waitForExistence、XCTWaiter、不存在等待、属性等待、Xcode 26 KeyPath 等待。
- 查阅 `swift6-concurrency.md`:Swift 6 严格并发:@MainActor 测试类、async setUp/tearDown、nonisolated。
- 查阅 `assertions.md`:XCTAssert 模式、自定义消息、存在性检查。
- 查阅 `screenshots.md`:截图、XCTAttachment、失败时截图、从 .xcresult 提取。
- 查阅 `launch-arguments.md`:启动参数/环境、UserDefaults 覆盖、本地化和可访问性测试。
- 查阅 `permissions.md`:resetAuthorizationStatus、XCUIProtectedResource、中断监视器、springboard/系统弹窗。
- 查阅 `test-helpers.md`:Page Object Model、可复用 helper、超时常量。
- 查阅 `troubleshooting.md`:常见失败(找不到元素、flaky 测试)以及 Xcode 26 / iOS 26 的新变化。
- 查阅 `patterns.md`:高级模式:基类测试、系统对话框、滚动/等待、调试、测试组织。
- 查阅 `xctest-index.md`:完整 XCTest 框架索引。
- 查阅 `xcuiautomation-index.md`:完整 XCUIAutomation 框架索引。
- 查阅 `xcuiapplication.md`:XCUIApplication 类。
- 查阅 `xcuielement.md`:XCUIElement 类。
- 查阅 `xcuielementquery.md`:XCUIElementQuery 类。
- 查阅 `xcuicoordinate.md`:XCUICoordinate 类。
- 查阅 `xcuiprotectedresource.md`:XCUIProtectedResource enum。
- 查阅 `xcuiscreenshot.md`:XCUIScreenshot 类。
- 需要更多 Apple 文档时,先搜索此 skill 的本地 `.md` 文件。
- 如果本地没有该主题,检查你已有的其他 Apple skills(按名称、描述或 `SKILL.md` frontmatter 查找),然后 grep 它们的本地文件;这比从互联网获取新文档更快且消耗更少上下文。
- 如果已安装 skill 中也没有该页面,使用本地 XCTest 或 XCUIAutomation 索引中的相关文档路径和 `sosumi.ai` Markdown 镜像;例如 `/documentation/xcuiautomation/xcuielement` 映射到 `https://sosumi.ai/documentation/xcuiautomation/xcuielement`。
- 参考 Apple 文档:XCTest(https://developer.apple.com/documentation/xctest)。
- 参考 Apple 文档:XCUIAutomation(https://developer.apple.com/documentation/xcuiautomation)。
- 参考 Apple 文档:XCUIElementQuery(https://developer.apple.com/documentation/xctest/xcuielementquery)。
- 参考 Apple 文档:waitForExistence(https://developer.apple.com/documentation/xctest/xcuielement/2879412-waitforexistence)。
- 参考 Apple 文档:wait(for:toEqual:timeout:)(https://developer.apple.com/documentation/xcuiautomation/xcuielement/wait(for:toequal:timeout:))。
- 参考 Apple 文档:resetAuthorizationStatus(for:)(https://developer.apple.com/documentation/xctest/xcuiapplication/3526066-resetauthorizationstatus)。
- 参考 Apple 文档:XCUIProtectedResource(https://developer.apple.com/documentation/xctest/xcuiprotectedresource)。
- 参考 Apple 文档:XCUIScreenshot(https://developer.apple.com/documentation/xctest/xcuiscreenshot)。
- 参考 WWDC session:Record, replay, and review: UI automation with Xcode - WWDC25(https://developer.apple.com/videos/play/wwdc2025/344/)。
- 参考 WWDC session:What's new in Xcode 26 - WWDC25(https://developer.apple.com/videos/play/wwdc2025/247/)。
- 参考社区资源:XCTest Meets @MainActor | Quality Coding(https://qualitycoding.org/xctest-mainactor/)。
- 参考社区资源:Issues with setUp() and tearDown() in XCTest for Swift 6 | Swift Forums(https://forums.swift.org/t/issues-with-setup-and-teardown-in-xctest-for-swift-6/75990)。
- 参考社区资源:Waiting in XCTest | Masilotti.com(https://masilotti.com/xctest-waiting/)。
- 参考社区资源:UI Testing Cheat Sheet | Masilotti.com(https://masilotti.com/ui-testing-cheat-sheet/)。
- 参考社区资源:XCUIElement Actions and Gestures | Apps Developer Blog(https://www.appsdeveloperblog.com/xcuielement-actions-and-gestures/)。
- 参考社区资源:Configuring UI tests with launch arguments | polpiella.dev(https://www.polpiella.dev/configuring-ui-tests-with-launch-arguments)。
- 参考社区资源:UI Testing improvements in Xcode 16 | Jesse Squires(https://www.jessesquires.com/blog/2024/07/09/uitest-improvements-in-xcode-16/)。
适用边界 · 注意事项
- 不适用于非 Apple 平台或非 Xcode 环境的 UI 测试(例如 Android、Web、跨平台端到端测试)。
- 不适用于不需要 UI 自动化、只做单元测试或集成测试的场景。
- 不适用于未使用 Swift 6/XCTest 的项目,或无法运行 XCUITest 的 CI/本地环境。