Test bridge

The test bridge is exposed as window.__sootsimTest in the browser. All test drivers (Detox, Maestro, Playwright) use this API to query the SootSim node tree.

Find methods

findByText(text: string): SootSimNodeInfo | null
findById(id: string): SootSimNodeInfo | null
findByTestId(testId: string): SootSimNodeInfo | null
findByLabel(label: string): SootSimNodeInfo | null
findByRole(role: string): SootSimNodeInfo | null
findAllByRole(role: string): SootSimNodeInfo[]
findByA11yState(state: object): SootSimNodeInfo | null

Query

queryAll(filter: {
type?: string
hasText?: string
hasId?: string
hasRole?: string
hasLabel?: string
}): SootSimNodeInfo[]

Inspect

getStyle(id: string): object
getLayout(id: string): { x, y, width, height }
getAbsolutePosition(id: string): { x, y }
isVisible(id: string): boolean
getNodeCount(): number

Debug

dumpTree(maxDepth?: number): string
dumpAccessibilityTree(maxDepth?: number): string
waitForTree(): Promise<void> // polls until root has children
waitForScreenTransitions(opts?: {
timeoutMs?: number
settleMs?: number
startWindowMs?: number
}): Promise<{
started: boolean
settled: boolean
timedOut: boolean
activeCount: number
peakActiveCount: number
waitedMs: number
}>

SootSimNodeInfo

{
type: string
id: string
testID: string
text: string
style: object
layout: {
;(x, y, width, height)
}
absolutePosition: {
;(x, y)
}
childCount: number
accessible: boolean
accessibilityLabel: string
accessibilityRole: string
}