agent-device 0.21.12 → 0.21.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/ime-helper/dist/{agent-device-android-ime-helper-0.21.12.apk → agent-device-android-ime-helper-0.21.14.apk} +0 -0
- package/android/ime-helper/dist/agent-device-android-ime-helper-0.21.14.apk.sha256 +1 -0
- package/android/ime-helper/dist/{agent-device-android-ime-helper-0.21.12.manifest.json → agent-device-android-ime-helper-0.21.14.manifest.json} +4 -4
- package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.14.apk +0 -0
- package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.14.apk.sha256 +1 -0
- package/android/snapshot-helper/dist/{agent-device-android-snapshot-helper-0.21.12.manifest.json → agent-device-android-snapshot-helper-0.21.14.manifest.json} +6 -6
- package/apple/macos-helper/Package.swift +4 -0
- package/apple/macos-helper/Sources/AgentDeviceMacOSHelper/main.swift +3 -6
- package/apple/macos-helper/Tests/AgentDeviceMacOSHelperTests/ScreenshotResponseTests.swift +15 -0
- package/apple/snapshot-bridge/SnapshotBridgeRuntime.m +47 -1
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunner/AgentDeviceRunnerApp.m +122 -42
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunner/Info.plist +23 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunner.xcodeproj/project.pbxproj +17 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerAppScreenCapture.swift +21 -13
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerScrollViewportPolicy.swift +1 -162
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerSynthesizedGesture.h +0 -9
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerSynthesizedGesture.m +0 -56
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerSystemSurfaceHostPolicy.swift +0 -48
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTapPointPolicy.swift +0 -50
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+AXSnapshotFallback.swift +33 -586
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Alert.swift +40 -24
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+AlertObservation.swift +2 -3
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+BlockingSystemModalResolution.swift +0 -36
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandDispatch.swift +630 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandExecution.swift +34 -2256
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandJournal.swift +1 -338
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Environment.swift +0 -12
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+GestureExecution.swift +160 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Interaction.swift +0 -24
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Keyboard.swift +0 -142
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Lifecycle.swift +90 -39
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+MainThreadWork.swift +78 -106
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Models.swift +23 -2
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Navigation.swift +162 -113
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+PrivateAXPresentation.swift +0 -209
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+ScreenRecorder.swift +86 -10
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+ScrollDragExecution.swift +271 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+ScrollGesture.swift +1 -200
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SequenceExecution.swift +20 -227
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Snapshot.swift +78 -295
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotAcquisition.swift +40 -27
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotBackendCapabilities.swift +0 -78
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotCapturePlan.swift +85 -581
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotCaptureTarget.swift +106 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotExecution.swift +142 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotTiming.swift +49 -78
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedCommitDeadline.swift +0 -44
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedGesturePolicy.swift +73 -114
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedInteraction.swift +1 -12
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedTextEntry.swift +11 -94
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SystemModal.swift +2 -10
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntry.swift +1 -1
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntryFocus.swift +0 -35
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextInputCandidatePolicy.swift +0 -31
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextTyping.swift +2 -18
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Transport.swift +34 -52
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TvRemote.swift +0 -22
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TypeExecution.swift +135 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests.swift +22 -6
- package/dist/apple/runner/AgentDeviceRunner/RecordingScripts/recording-overlay.swift +140 -20
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotCoordinateSpace.swift +16 -19
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotGeometry.swift +21 -9
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotModels.swift +59 -10
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotPresentationInvariant.swift +12 -10
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotVisibilityFold.swift +13 -8
- package/dist/src/absence-observation-errors.js +1 -1
- package/dist/src/adapter.js +1 -1
- package/dist/src/adb-executor.js +1 -1
- package/dist/src/adb-failure.js +1 -1
- package/dist/src/adb-transport.js +1 -1
- package/dist/src/agent-browser-provider.js +1 -1
- package/dist/src/agent-browser-tool.js +1 -1
- package/dist/src/agent-device-client.js +2 -2
- package/dist/src/ai-sdk.js +1 -1
- package/dist/src/alert-runtime.js +1 -1
- package/dist/src/android-adb.d.ts +1 -1
- package/dist/src/app-catalog.js +1 -1
- package/dist/src/app-deployment-resolution.js +1 -1
- package/dist/src/app-inventory.js +1 -1
- package/dist/src/app-launch.js +2 -2
- package/dist/src/app-lifecycle.js +1 -1
- package/dist/src/app-lifecycle2.js +1 -1
- package/dist/src/app-log-files.js +1 -1
- package/dist/src/app-log-runtime2.js +3 -3
- package/dist/src/app-resolution.js +2 -2
- package/dist/src/apple-runner-platform.js +1 -1
- package/dist/src/application-lifecycle-interaction.js +1 -1
- package/dist/src/archive.js +1 -1
- package/dist/src/artifact-download.js +1 -1
- package/dist/src/auth-session.js +1 -1
- package/dist/src/auth.js +1 -1
- package/dist/src/back-mode.js +1 -1
- package/dist/src/backend-snapshot-options.js +1 -1
- package/dist/src/boot-diagnostics.js +1 -1
- package/dist/src/capture-disclosure.js +1 -1
- package/dist/src/capture.js +1 -1
- package/dist/src/cli-config.js +1 -1
- package/dist/src/cli-help.js +8 -7
- package/dist/src/cli-runner.js +1 -1
- package/dist/src/cli.js +4 -4
- package/dist/src/click-button.js +1 -1
- package/dist/src/client-metro.js +1 -1
- package/dist/src/client-types.d.ts +4 -5
- package/dist/src/clipboard-shell-response.js +1 -1
- package/dist/src/code-signature.js +1 -1
- package/dist/src/command-schema.js +3 -3
- package/dist/src/command-tools.js +3 -3
- package/dist/src/connection-runtime.js +1 -1
- package/dist/src/connection.js +1 -1
- package/dist/src/contracts.js +1 -1
- package/dist/src/daemon-client-lifecycle.js +1 -1
- package/dist/src/daemon-resolution.js +1 -1
- package/dist/src/daemon.js +1 -1
- package/dist/src/debug-symbols-facade.js +1 -1
- package/dist/src/device-claim-rule.js +2 -2
- package/dist/src/device-input-state.d.ts +1 -1
- package/dist/src/device-inventory-context.js +1 -1
- package/dist/src/device-rotation.js +1 -1
- package/dist/src/device-selection-resolver.js +1 -1
- package/dist/src/device-session.js +1 -1
- package/dist/src/device-shell.js +1 -1
- package/dist/src/device2.js +1 -1
- package/dist/src/devicectl.js +1 -1
- package/dist/src/diagnostics.js +1 -1
- package/dist/src/dispatch-resolve.js +1 -1
- package/dist/src/display-inventory.js +1 -1
- package/dist/src/doctor-facade.js +1 -1
- package/dist/src/doctor2.js +1 -1
- package/dist/src/engine-eval-script.js +1 -1
- package/dist/src/error.js +1 -1
- package/dist/src/exec.js +1 -1
- package/dist/src/file.js +1 -1
- package/dist/src/find.js +1 -1
- package/dist/src/format.js +1 -1
- package/dist/src/gesture-plan-types.d.ts +38 -0
- package/dist/src/gesture-plan.js +1 -1
- package/dist/src/gesture-runtime.js +1 -1
- package/dist/src/harmonyos.js +1 -1
- package/dist/src/helper.js +2 -2
- package/dist/src/host.js +1 -1
- package/dist/src/human-control-contract.js +1 -1
- package/dist/src/human-control.js +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/input-actions.js +1 -1
- package/dist/src/input-actions2.js +1 -1
- package/dist/src/install-artifact-facade.js +1 -1
- package/dist/src/install-source-network-transport.js +1 -1
- package/dist/src/install-source2.js +1 -1
- package/dist/src/interaction-positionals.js +1 -1
- package/dist/src/interaction-ref-policy.js +1 -1
- package/dist/src/interaction2.js +1 -1
- package/dist/src/interactor-operation-binding.js +1 -1
- package/dist/src/interactor-operation-catalog.js +1 -1
- package/dist/src/interactor.js +4 -4
- package/dist/src/interactor2.js +1 -1
- package/dist/src/interactors.js +1 -1
- package/dist/src/internal/bin.js +1 -1
- package/dist/src/internal/daemon.js +2 -2
- package/dist/src/internal/png-worker.js +1 -1
- package/dist/src/internal/run-script-http-child.js +1 -1
- package/dist/src/inventory.js +1 -1
- package/dist/src/inventory2.js +1 -1
- package/dist/src/inventory3.js +1 -1
- package/dist/src/inventory5.js +1 -1
- package/dist/src/ios-snapshot-acquisition.js +1 -1
- package/dist/src/ios-snapshot-runtime.js +1 -1
- package/dist/src/lease.js +1 -1
- package/dist/src/limrun-download-file.js +1 -1
- package/dist/src/limrun-runtime-dependencies.js +1 -1
- package/dist/src/limrun.d.ts +435 -4
- package/dist/src/linux.js +1 -1
- package/dist/src/local-interactor-operation-set.js +1 -1
- package/dist/src/location-coordinates.js +1 -1
- package/dist/src/managed-device-scope.js +1 -1
- package/dist/src/mechanics.js +5 -5
- package/dist/src/mobile-snapshot-semantics.js +1 -1
- package/dist/src/multitouch-support.js +1 -1
- package/dist/src/native-build-cache.js +1 -0
- package/dist/src/observation.js +1 -1
- package/dist/src/parameterized-recorded-fill.js +1 -1
- package/dist/src/perf-facade.js +1 -2
- package/dist/src/perf-runtime-operation-builder.js +1 -1
- package/dist/src/perf-runtime-plan.js +1 -1
- package/dist/src/perf-target.js +2 -0
- package/dist/src/perf.js +1 -1
- package/dist/src/physical-device-apps.js +1 -0
- package/dist/src/physical-device-control.js +1 -1
- package/dist/src/platform-request-scope.js +1 -1
- package/dist/src/platform-runtime-host.js +1 -1
- package/dist/src/platform-runtime-managed-owner.js +1 -1
- package/dist/src/platform-runtime-open-target.js +1 -1
- package/dist/src/platform-runtime-operation-host.js +2 -2
- package/dist/src/platform-runtime-runtime-hints.js +1 -1
- package/dist/src/platform-runtime-screen-recording-apple-simulator-host.js +1 -1
- package/dist/src/platform-runtime-screen-recording-finalizer-host.js +1 -1
- package/dist/src/platform-runtime-screen-recording-process-host.js +1 -1
- package/dist/src/platform-runtime-unavailable.js +1 -1
- package/dist/src/platform-runtime.js +1 -1
- package/dist/src/platform-runtime2.js +1 -1
- package/dist/src/png-crop-bytes.js +1 -1
- package/dist/src/png-size.js +1 -1
- package/dist/src/png-worker-client.js +1 -1
- package/dist/src/png.js +1 -1
- package/dist/src/prepare-kind.js +1 -1
- package/dist/src/provider-session-ownership.js +1 -1
- package/dist/src/provider-webdriver.js +1 -1
- package/dist/src/proxy.js +1 -1
- package/dist/src/quality-warnings.js +1 -1
- package/dist/src/react-native.js +1 -1
- package/dist/src/record-runtime.js +1 -1
- package/dist/src/recording.js +1 -1
- package/dist/src/register-builtins.js +1 -1
- package/dist/src/registry.js +35 -35
- package/dist/src/remote-config2.js +1 -1
- package/dist/src/replay-divergence.js +1 -1
- package/dist/src/replay.js +1 -1
- package/dist/src/reporting.js +1 -1
- package/dist/src/request-admission.js +1 -1
- package/dist/src/request-cancel.js +1 -1
- package/dist/src/request-runtime-binding.js +1 -1
- package/dist/src/retry.js +1 -1
- package/dist/src/runner-cache-metadata.js +1 -1
- package/dist/src/runner-client.js +1 -1
- package/dist/src/runner-dev-tools-security.js +1 -1
- package/dist/src/runner-device-readiness.js +1 -1
- package/dist/src/runner-disposal.js +1 -1
- package/dist/src/runner-error-classification.js +3 -0
- package/dist/src/runner-operations-facade.js +1 -1
- package/dist/src/runner-presentation.js +1 -1
- package/dist/src/runner.js +1 -1
- package/dist/src/runtime-transport-hints.js +1 -1
- package/dist/src/runtime.js +3 -3
- package/dist/src/runtime10.js +2 -2
- package/dist/src/runtime2.js +2 -2
- package/dist/src/runtime3.js +1 -1
- package/dist/src/runtime4.js +4 -4
- package/dist/src/runtime5.js +1 -1
- package/dist/src/runtime6.js +1 -1
- package/dist/src/runtime7.js +1 -1
- package/dist/src/runtime8.js +1 -1
- package/dist/src/runtime9.js +1 -1
- package/dist/src/screen-recording-admission-ledger.js +1 -1
- package/dist/src/screen-recording-completion.js +1 -1
- package/dist/src/screen-recording-options.js +1 -1
- package/dist/src/screen-recording-resource-recovery.js +1 -1
- package/dist/src/screen-recording-transport.js +1 -1
- package/dist/src/screenshot-density.js +1 -1
- package/dist/src/screenshot-image.js +1 -1
- package/dist/src/screenshot-runtime.js +1 -1
- package/dist/src/screenshot.js +1 -1
- package/dist/src/screenshot3.js +1 -1
- package/dist/src/script.js +1 -1
- package/dist/src/scroll-command.d.ts +377 -0
- package/dist/src/scroll-command.js +1 -1
- package/dist/src/scroll-gesture.js +1 -1
- package/dist/src/sdk-batch-runner.js +2 -2
- package/dist/src/sdk-batch.js +2 -2
- package/dist/src/sdk-contracts.d.ts +28 -0
- package/dist/src/sdk-contracts.js +1 -1
- package/dist/src/sdk-device.js +1 -1
- package/dist/src/sdk-io.js +1 -1
- package/dist/src/sdk-remote-config.js +1 -1
- package/dist/src/sdk-selectors.d.ts +23 -726
- package/dist/src/selection.js +0 -0
- package/dist/src/selector-runtime.js +1 -1
- package/dist/src/semantic-index.js +1 -1
- package/dist/src/server.js +1 -1
- package/dist/src/session-allocation.js +1 -1
- package/dist/src/session-observation.js +1 -1
- package/dist/src/session-routing.js +1 -1
- package/dist/src/session-runtime-admission.js +1 -1
- package/dist/src/session-snapshot.js +1 -1
- package/dist/src/session-store.js +2 -2
- package/dist/src/session2.js +3 -3
- package/dist/src/settings.js +1 -1
- package/dist/src/simctl-facade.js +1 -1
- package/dist/src/simctl.js +1 -1
- package/dist/src/simulator-state.js +1 -1
- package/dist/src/simulator.js +1 -1
- package/dist/src/snapshot-runtime-binding.js +1 -1
- package/dist/src/snapshot-runtime.js +1 -1
- package/dist/src/snapshot-state.js +1 -1
- package/dist/src/snapshot2.js +1 -1
- package/dist/src/snapshot3.js +1 -1
- package/dist/src/snapshot4.js +1 -1
- package/dist/src/src.js +1 -1
- package/dist/src/src7.js +1 -1
- package/dist/src/src8.js +2 -2
- package/dist/src/string-enum.js +1 -1
- package/dist/src/takeover.js +1 -1
- package/dist/src/text-entry-focus.js +1 -1
- package/dist/src/tool-provider-facade.js +1 -1
- package/dist/src/tool-provider.js +2 -2
- package/dist/src/tool-provider2.js +1 -1
- package/dist/src/touch-runtime.js +1 -1
- package/dist/src/transport.js +1 -1
- package/dist/src/tree.js +1 -1
- package/dist/src/tv-remote.js +1 -1
- package/dist/src/type-text-runtime.js +1 -1
- package/dist/src/update-check.js +1 -1
- package/dist/src/verified-file.js +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/video.js +1 -1
- package/dist/src/viewport.js +1 -1
- package/dist/src/web.js +1 -1
- package/dist/src/web2.js +1 -1
- package/dist/src/webdriver-source.js +1 -1
- package/package.json +3 -2
- package/server.json +2 -2
- package/android/ime-helper/dist/agent-device-android-ime-helper-0.21.12.apk.sha256 +0 -1
- package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.12.apk +0 -0
- package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.12.apk.sha256 +0 -1
- package/dist/src/app-inventory.d.ts +0 -4
- package/dist/src/apps-simctl.js +0 -1
- package/dist/src/cloud-artifacts.d.ts +0 -61
- package/dist/src/runner-contract.js +0 -3
- package/dist/src/snapshot-process.js +0 -1
package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Snapshot.swift
CHANGED
|
@@ -5,12 +5,12 @@ extension RunnerTests {
|
|
|
5
5
|
static let axSnapshotErrorCode = "IOS_AX_SNAPSHOT_FAILED"
|
|
6
6
|
static let axSnapshotFailureMessage =
|
|
7
7
|
"iOS XCTest snapshot failed while serializing the accessibility tree."
|
|
8
|
-
|
|
8
|
+
static let axSnapshotUnavailableReason = "ax_snapshot_unavailable"
|
|
9
9
|
static let axSnapshotHint =
|
|
10
10
|
"Snapshot state is unavailable because XCTest could not serialize this iOS accessibility tree. This can be specific to the current screen. Use plain screenshot, not screenshot --overlay-refs, as visual truth; navigate with coordinate commands if needed; then retry snapshot -i after reaching another screen. If you own the app and need full-tree inspection, simplify this screen's accessibility tree and expose stable ids on actionable controls."
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
static let rawSnapshotTooLargeCode = "IOS_RAW_SNAPSHOT_TOO_LARGE"
|
|
12
|
+
static let rawSnapshotMaxNodes = 5_000
|
|
13
|
+
static let rawSnapshotTooLargeHint =
|
|
14
14
|
"Raw iOS snapshot exceeded the runner payload guard. Use regular snapshot for visible UI, or scope/depth-limit raw snapshot when inspecting a large accessibility tree."
|
|
15
15
|
|
|
16
16
|
|
|
@@ -21,9 +21,8 @@ extension RunnerTests {
|
|
|
21
21
|
struct SnapshotTraversalContext {
|
|
22
22
|
let queryRoot: XCUIElement
|
|
23
23
|
let rootSnapshot: XCUIElementSnapshot
|
|
24
|
-
let viewport: CGRect
|
|
25
24
|
|
|
26
|
-
let
|
|
25
|
+
let viewport: SnapshotViewport
|
|
27
26
|
|
|
28
27
|
|
|
29
28
|
|
|
@@ -134,6 +133,20 @@ extension RunnerTests {
|
|
|
134
133
|
static let flatInteractiveFallbackBudget: TimeInterval = 1.0
|
|
135
134
|
|
|
136
135
|
|
|
136
|
+
static let flatInteractiveQueryBudget: TimeInterval = 0.1
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
static func querySweepSliceDeadline(startedAt: Date, planDeadline: Date) -> Date {
|
|
141
|
+
min(startedAt.addingTimeInterval(flatInteractiveFallbackBudget), planDeadline)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
static func querySweepCanStartQuery(deadline: Date, now: Date) -> Bool {
|
|
146
|
+
deadline.timeIntervalSince(now) >= flatInteractiveQueryBudget
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
|
|
137
150
|
|
|
138
151
|
|
|
139
152
|
|
|
@@ -145,14 +158,17 @@ extension RunnerTests {
|
|
|
145
158
|
|
|
146
159
|
|
|
147
160
|
|
|
148
|
-
func snapshotFast(
|
|
161
|
+
func snapshotFast(target: SnapshotCaptureTarget, options: PresentationOptions) throws -> DataPayload {
|
|
149
162
|
let deadline = Date().addingTimeInterval(Self.snapshotPlanBudget)
|
|
150
|
-
if let blocking = boundedBlockingSystemAlertSnapshot(
|
|
163
|
+
if let blocking = boundedBlockingSystemAlertSnapshot(
|
|
164
|
+
deadline: deadline,
|
|
165
|
+
penaltyTarget: .prepared(bundleId: target.bundleId)
|
|
166
|
+
) {
|
|
151
167
|
return blocking
|
|
152
168
|
}
|
|
153
169
|
return try runSnapshotCapturePlan(
|
|
154
170
|
Self.regularVisiblePlan,
|
|
155
|
-
|
|
171
|
+
target: target,
|
|
156
172
|
options: options,
|
|
157
173
|
terminal: .sparseWithFatalOnAXFailure,
|
|
158
174
|
deadline: deadline
|
|
@@ -261,20 +277,22 @@ extension RunnerTests {
|
|
|
261
277
|
nodes: nodes,
|
|
262
278
|
truncated: false,
|
|
263
279
|
effectiveDepth: nil,
|
|
264
|
-
viewport: context.viewport
|
|
265
|
-
interfaceOrientation: context.interfaceOrientation
|
|
280
|
+
viewport: context.viewport
|
|
266
281
|
)
|
|
267
282
|
}
|
|
268
283
|
|
|
269
284
|
|
|
270
|
-
func snapshotRaw(
|
|
285
|
+
func snapshotRaw(target: SnapshotCaptureTarget, options: PresentationOptions) throws -> DataPayload {
|
|
271
286
|
let deadline = Date().addingTimeInterval(Self.snapshotPlanBudget)
|
|
272
|
-
if let blocking = boundedBlockingSystemAlertSnapshot(
|
|
287
|
+
if let blocking = boundedBlockingSystemAlertSnapshot(
|
|
288
|
+
deadline: deadline,
|
|
289
|
+
penaltyTarget: .prepared(bundleId: target.bundleId)
|
|
290
|
+
) {
|
|
273
291
|
return blocking
|
|
274
292
|
}
|
|
275
293
|
return try runSnapshotCapturePlan(
|
|
276
294
|
Self.rawDiagnosticPlan,
|
|
277
|
-
|
|
295
|
+
target: target,
|
|
278
296
|
options: options,
|
|
279
297
|
terminal: .throwOnAXFailure,
|
|
280
298
|
deadline: deadline
|
|
@@ -283,8 +301,15 @@ extension RunnerTests {
|
|
|
283
301
|
|
|
284
302
|
|
|
285
303
|
|
|
286
|
-
|
|
287
|
-
|
|
304
|
+
|
|
305
|
+
func boundedBlockingSystemAlertSnapshot(
|
|
306
|
+
deadline: Date,
|
|
307
|
+
penaltyTarget: SnapshotProbePenaltyTarget
|
|
308
|
+
) -> DataPayload? {
|
|
309
|
+
boundedBlockingSystemAlertSnapshotBody(
|
|
310
|
+
deadline: deadline,
|
|
311
|
+
penaltyTarget: penaltyTarget
|
|
312
|
+
) { probeDeadline in
|
|
288
313
|
|
|
289
314
|
|
|
290
315
|
|
|
@@ -301,6 +326,7 @@ extension RunnerTests {
|
|
|
301
326
|
|
|
302
327
|
private func boundedBlockingSystemAlertSnapshotBody(
|
|
303
328
|
deadline: Date,
|
|
329
|
+
penaltyTarget: SnapshotProbePenaltyTarget,
|
|
304
330
|
probe: @escaping (Date) -> DataPayload?
|
|
305
331
|
) -> DataPayload? {
|
|
306
332
|
#if os(macOS)
|
|
@@ -316,6 +342,7 @@ extension RunnerTests {
|
|
|
316
342
|
}
|
|
317
343
|
let probeDeadline = Date().addingTimeInterval(slice)
|
|
318
344
|
let startedAt = Date()
|
|
345
|
+
let penaltyIdentity = SnapshotProbePenaltyIdentity(penaltyTarget)
|
|
319
346
|
do {
|
|
320
347
|
return try runMainThreadWork(
|
|
321
348
|
"system_modal_probe",
|
|
@@ -329,12 +356,13 @@ extension RunnerTests {
|
|
|
329
356
|
},
|
|
330
357
|
onAbandoned: {
|
|
331
358
|
self.penalizeSnapshotXCTestChannel(
|
|
332
|
-
bundleId:
|
|
359
|
+
bundleId: penaltyIdentity.penalizedBundleId,
|
|
333
360
|
reason: "system_modal_probe_timeout"
|
|
334
361
|
)
|
|
335
362
|
}
|
|
336
363
|
) {
|
|
337
|
-
|
|
364
|
+
penaltyIdentity.captureFromMain(bundleId: self.currentBundleId)
|
|
365
|
+
return probe(probeDeadline)
|
|
338
366
|
}
|
|
339
367
|
} catch {
|
|
340
368
|
NSLog(
|
|
@@ -405,45 +433,40 @@ extension RunnerTests {
|
|
|
405
433
|
nodes: nodes,
|
|
406
434
|
truncated: false,
|
|
407
435
|
effectiveDepth: nil,
|
|
408
|
-
viewport: context.viewport
|
|
409
|
-
interfaceOrientation: context.interfaceOrientation
|
|
436
|
+
viewport: context.viewport
|
|
410
437
|
)
|
|
411
438
|
}
|
|
412
439
|
|
|
413
440
|
func querySweepSnapshotAcquisition(
|
|
414
441
|
app: XCUIApplication,
|
|
415
442
|
hint: CaptureHint,
|
|
416
|
-
|
|
417
|
-
) -> SnapshotAcquisition {
|
|
443
|
+
sliceDeadline deadline: Date
|
|
444
|
+
) -> (acquisition: SnapshotAcquisition, outcome: SnapshotTierOutcome) {
|
|
418
445
|
var nodes: [RawAXNode] = [
|
|
419
446
|
interactiveRootNode(rect: .zero)
|
|
420
447
|
]
|
|
421
448
|
if hint.rawTraversalDepth == 0 || hint.regularPresentedDepth == 0 {
|
|
422
|
-
return
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
449
|
+
return (
|
|
450
|
+
SnapshotAcquisition(
|
|
451
|
+
hint: hint,
|
|
452
|
+
nodes: nodes,
|
|
453
|
+
truncated: false,
|
|
454
|
+
effectiveDepth: nil,
|
|
455
|
+
viewport: .missing(reason: .notProvided)
|
|
456
|
+
),
|
|
457
|
+
.completed
|
|
429
458
|
)
|
|
430
459
|
}
|
|
431
460
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
let sweepDeadline = hint.interactiveOnly
|
|
435
|
-
? Date().addingTimeInterval(Self.flatInteractiveFallbackBudget)
|
|
436
|
-
: Date.distantFuture
|
|
437
|
-
let deadline = min(sweepDeadline, planDeadline)
|
|
438
|
-
let viewport = safeSnapshotViewport(app: app)
|
|
461
|
+
let viewport = safeSnapshotViewport(app: app, readingOrientation: false)
|
|
439
462
|
var seen = Set<String>()
|
|
440
463
|
var candidates: [RawAXNode] = []
|
|
441
464
|
let flatElements = flatInteractiveElements(app: app, deadline: deadline)
|
|
442
|
-
var
|
|
465
|
+
var outcome = flatElements.outcome
|
|
443
466
|
for element in flatElements.elements {
|
|
444
|
-
if Date()
|
|
467
|
+
if !Self.querySweepCanStartQuery(deadline: deadline, now: Date()) {
|
|
445
468
|
NSLog("AGENT_DEVICE_RUNNER_SNAPSHOT_FLAT_FALLBACK_DEADLINE")
|
|
446
|
-
|
|
469
|
+
outcome = .deadlineExhausted
|
|
447
470
|
break
|
|
448
471
|
}
|
|
449
472
|
guard let node = flatSnapshotNode(element: element, index: 0, parentIndex: 0) else {
|
|
@@ -467,9 +490,7 @@ extension RunnerTests {
|
|
|
467
490
|
|
|
468
491
|
|
|
469
492
|
|
|
470
|
-
let rootRect = viewport.
|
|
471
|
-
? interactiveRootFrame(for: candidates)
|
|
472
|
-
: viewport
|
|
493
|
+
let rootRect = viewport.rect ?? interactiveRootFrame(for: candidates)
|
|
473
494
|
nodes[0] = interactiveRootNode(rect: rootRect)
|
|
474
495
|
for candidate in candidates {
|
|
475
496
|
nodes.append(
|
|
@@ -491,20 +512,24 @@ extension RunnerTests {
|
|
|
491
512
|
)
|
|
492
513
|
)
|
|
493
514
|
}
|
|
494
|
-
return
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
515
|
+
return (
|
|
516
|
+
SnapshotAcquisition(
|
|
517
|
+
hint: hint,
|
|
518
|
+
nodes: nodes,
|
|
519
|
+
truncated: outcome == .deadlineExhausted,
|
|
520
|
+
effectiveDepth: nil,
|
|
521
|
+
viewport: viewport
|
|
522
|
+
),
|
|
523
|
+
outcome
|
|
501
524
|
)
|
|
502
525
|
}
|
|
503
526
|
|
|
504
527
|
func snapshotAccessibilityUnavailable(failure: SnapshotCaptureFailure) -> DataPayload {
|
|
505
528
|
NSLog("AGENT_DEVICE_RUNNER_SNAPSHOT_AX_UNAVAILABLE=%@", failure.message)
|
|
506
|
-
|
|
507
|
-
|
|
529
|
+
applyMainOwnedSnapshotState("ax_unavailable_invalidation") {
|
|
530
|
+
self.runnerAccessibilityHealth = .unavailable
|
|
531
|
+
self.invalidateCachedTarget(reason: Self.axSnapshotUnavailableReason)
|
|
532
|
+
}
|
|
508
533
|
|
|
509
534
|
|
|
510
535
|
return sparseTruncatedSnapshotPayload(
|
|
@@ -523,11 +548,11 @@ extension RunnerTests {
|
|
|
523
548
|
)
|
|
524
549
|
}
|
|
525
550
|
|
|
526
|
-
|
|
551
|
+
func recoveredSnapshotMessage(_ failure: SnapshotCaptureFailure) -> String {
|
|
527
552
|
return "\(failure.message) Hint: \(failure.hint)"
|
|
528
553
|
}
|
|
529
554
|
|
|
530
|
-
|
|
555
|
+
func rawSnapshotTooLargeFailure(nodeCount: Int) -> SnapshotCaptureFailure {
|
|
531
556
|
SnapshotCaptureFailure(
|
|
532
557
|
code: Self.rawSnapshotTooLargeCode,
|
|
533
558
|
message: "iOS raw snapshot exceeded \(Self.rawSnapshotMaxNodes) nodes while walking node \(nodeCount).",
|
|
@@ -558,246 +583,4 @@ extension RunnerTests {
|
|
|
558
583
|
runnerFatalReason: runnerFatalReason
|
|
559
584
|
)
|
|
560
585
|
}
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
586
|
}
|
|
@@ -41,18 +41,13 @@ extension RunnerTests {
|
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
let
|
|
44
|
+
let viewport = try runMainThreadWork(
|
|
45
45
|
"snapshot_viewport",
|
|
46
46
|
timeout: min(1.0, max(0.1, captureDeadline.timeIntervalSinceNow)),
|
|
47
47
|
timeoutError: snapshotMainThreadTimeoutError("preparing tree snapshot")
|
|
48
48
|
) {
|
|
49
|
-
(
|
|
50
|
-
viewport: self.safeSnapshotViewport(app: app),
|
|
51
|
-
interfaceOrientation: self.capturedInterfaceOrientation(app: app)
|
|
52
|
-
)
|
|
49
|
+
self.safeSnapshotViewport(app: app, readingOrientation: true)
|
|
53
50
|
}
|
|
54
|
-
let viewport = geometry.viewport
|
|
55
|
-
let interfaceOrientation = geometry.interfaceOrientation
|
|
56
51
|
let treeSliceBudget = treeCaptureSliceBudgetOverride ?? treeCaptureSliceBudget
|
|
57
52
|
let slice = min(treeSliceBudget, max(0.5, captureDeadline.timeIntervalSinceNow))
|
|
58
53
|
guard let rootSnapshot = try captureSnapshotRootBounded(app, sliceSeconds: slice) else {
|
|
@@ -70,7 +65,6 @@ extension RunnerTests {
|
|
|
70
65
|
queryRoot: app,
|
|
71
66
|
rootSnapshot: rootSnapshot,
|
|
72
67
|
viewport: viewport,
|
|
73
|
-
interfaceOrientation: interfaceOrientation,
|
|
74
68
|
keyboardBand: keyboardBand
|
|
75
69
|
)
|
|
76
70
|
}
|
|
@@ -140,8 +134,18 @@ extension RunnerTests {
|
|
|
140
134
|
return nil
|
|
141
135
|
}
|
|
142
136
|
|
|
143
|
-
|
|
144
|
-
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
func safeSnapshotViewport(app: XCUIApplication, readingOrientation: Bool) -> SnapshotViewport {
|
|
141
|
+
safely("SNAPSHOT_VIEWPORT", .missing(reason: .notProvided)) {
|
|
142
|
+
.reported(
|
|
143
|
+
box: snapshotAppFrame(app: app),
|
|
144
|
+
interfaceOrientation: readingOrientation
|
|
145
|
+
? capturedInterfaceOrientation(app: app)
|
|
146
|
+
: RunnerInterfaceOrientation.unknown
|
|
147
|
+
)
|
|
148
|
+
}
|
|
145
149
|
}
|
|
146
150
|
|
|
147
151
|
private func describeSnapshotError(_ error: Error) -> String {
|
|
@@ -231,16 +235,12 @@ extension RunnerTests {
|
|
|
231
235
|
return text.isEmpty ? nil : text
|
|
232
236
|
}
|
|
233
237
|
|
|
234
|
-
private func
|
|
238
|
+
private func snapshotAppFrame(app: XCUIApplication) -> CGRect {
|
|
235
239
|
#if os(iOS)
|
|
236
|
-
|
|
240
|
+
return onScreenWindowFrame(app: app)
|
|
237
241
|
#else
|
|
238
|
-
|
|
242
|
+
return app.frame
|
|
239
243
|
#endif
|
|
240
|
-
if !appFrame.isNull && !appFrame.isEmpty {
|
|
241
|
-
return appFrame
|
|
242
|
-
}
|
|
243
|
-
return .infinite
|
|
244
244
|
}
|
|
245
245
|
|
|
246
246
|
static func snapshotTraversalIdentity(
|
|
@@ -464,7 +464,7 @@ extension RunnerTests {
|
|
|
464
464
|
func flatInteractiveElements(
|
|
465
465
|
app: XCUIApplication,
|
|
466
466
|
deadline: Date
|
|
467
|
-
) -> (elements: [XCUIElement],
|
|
467
|
+
) -> (elements: [XCUIElement], outcome: SnapshotTierOutcome) {
|
|
468
468
|
let queries: [XCUIElementQuery] = [
|
|
469
469
|
app.buttons,
|
|
470
470
|
app.links,
|
|
@@ -487,23 +487,36 @@ extension RunnerTests {
|
|
|
487
487
|
app.images
|
|
488
488
|
]
|
|
489
489
|
|
|
490
|
-
|
|
491
|
-
|
|
490
|
+
return Self.runFlatInteractiveQueries(queries, deadline: deadline) { query in
|
|
491
|
+
self.snapshotElementsQuery {
|
|
492
|
+
query.allElementsBoundByIndex
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
static func runFlatInteractiveQueries<Query, Element>(
|
|
502
|
+
_ queries: [Query],
|
|
503
|
+
deadline: Date,
|
|
504
|
+
now: () -> Date = { Date() },
|
|
505
|
+
run: (Query) -> (elements: [Element], axUnavailable: Bool)
|
|
506
|
+
) -> (elements: [Element], outcome: SnapshotTierOutcome) {
|
|
507
|
+
var elements: [Element] = []
|
|
492
508
|
for query in queries {
|
|
493
|
-
if
|
|
509
|
+
if !querySweepCanStartQuery(deadline: deadline, now: now()) {
|
|
494
510
|
NSLog("AGENT_DEVICE_RUNNER_SNAPSHOT_FLAT_FALLBACK_DEADLINE")
|
|
495
|
-
|
|
496
|
-
break
|
|
497
|
-
}
|
|
498
|
-
let result = snapshotElementsQuery {
|
|
499
|
-
query.allElementsBoundByIndex
|
|
511
|
+
return (elements, .deadlineExhausted)
|
|
500
512
|
}
|
|
513
|
+
let result = run(query)
|
|
501
514
|
elements.append(contentsOf: result.elements)
|
|
502
515
|
if result.axUnavailable {
|
|
503
516
|
break
|
|
504
517
|
}
|
|
505
518
|
}
|
|
506
|
-
return (elements,
|
|
519
|
+
return (elements, .completed)
|
|
507
520
|
}
|
|
508
521
|
|
|
509
522
|
func snapshotElementsQuery(
|
|
@@ -86,81 +86,3 @@ enum SnapshotBackendKind: String, CaseIterable {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|