Basic navigation test
With caching enabled
Native-first with AI fallback
Run your own XCUITest code first and let the SDK fall back to AI only when it fails. This is the pattern to reach for in a real suite: stable steps stay fast and deterministic, and a step that breaks because the UI moved keeps the test alive instead of failing it."Tap the Sign In button" is worth more than "fallback".
Bulk assertions and checks
Verify several things against one screenshot rather than one call each.assertBulk fails the test when any condition is not met; checkBulk returns the results so you can branch on them.
nativeAction closure too. If the closure succeeds, checkBulk reports every condition as true:
Reporting the test result
Report the outcome intearDown so each run is recorded as passed or failed rather than as auto-completed, and so the session’s slot against your account’s parallel session limit is released as soon as the test ends.
testRun?.failureCount rather than a flag you set yourself, so a failure raised anywhere in the test is reflected, including one from assert. Call both with try?: reporting the status is bookkeeping, and a network hiccup on the way out should not turn a passing test red.
With CI metadata
Record what your CI knows and the SDK does not, so a session can be found again by it and reporting can be sliced by it.language and version, which the SDK reserves to report itself.

