From 069342256762437d3240f59a662ffa83092c2397 Mon Sep 17 00:00:00 2001 From: PJ Date: Sat, 6 Jun 2026 12:19:48 +0530 Subject: [PATCH] chore(sidecar): silence absorbed view-hierarchy poll noise in Android runs The driver logs an ERROR for every on-device view-hierarchy fetch that the device-side server cancels or times out while the UI animates. The stability poll fetches the hierarchy on a sub-second cadence and swallows those throws to keep polling, so each line is advisory with no effect on the run. Real failures still reach the runner as gRPC status errors, so nothing is lost. --- .../src/main/kotlin/dev/sanderling/sidecar/Main.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/sidecar/src/main/kotlin/dev/sanderling/sidecar/Main.kt b/sidecar/src/main/kotlin/dev/sanderling/sidecar/Main.kt index 7adbfd1..7cd3c1d 100644 --- a/sidecar/src/main/kotlin/dev/sanderling/sidecar/Main.kt +++ b/sidecar/src/main/kotlin/dev/sanderling/sidecar/Main.kt @@ -39,13 +39,20 @@ class SidecarServer( // on expected paths: CommandLineUtils logs every nonzero simctl exit even // when the caller absorbs it (terminating an app that is not running), and // XCTestDriverClient logs every non-2xx response including gesture -// collisions the double-tap path retries. Real failures still reach the -// runner as gRPC status errors, so nothing is lost from run output. +// collisions the double-tap path retries. AndroidDriver logs an ERROR for +// every view-hierarchy fetch the on-device server cancels or times out, which +// happens routinely while the UI is animating; stabilitySnapshot polls the +// hierarchy on a sub-second cadence and swallows those throws to keep polling, +// so each absorbed failure produces a log line with no effect on the run. +// Real failures still reach the runner as gRPC status errors, so nothing is +// lost from run output. private fun quietExpectedDriverNoise() { org.apache.logging.log4j.core.config.Configurator.setLevel( "util.CommandLineUtils", org.apache.logging.log4j.Level.OFF) org.apache.logging.log4j.core.config.Configurator.setLevel( "xcuitest.XCTestDriverClient", org.apache.logging.log4j.Level.OFF) + org.apache.logging.log4j.core.config.Configurator.setLevel( + "maestro.drivers.AndroidDriver", org.apache.logging.log4j.Level.OFF) } fun main(arguments: Array) {