What problem does it solve?
This Skill prevents brittle Compose UI tests by replacing multiple chained assertions with a single, precise SemanticsMatcher that targets the correct node and produces a clear, clause-by-clause failure message.
Core Features & Use Cases
- Composable matcher algebra: Build one SemanticsMatcher using infix and, infix or, and operator not so failures explain exactly which constraints were not met.
- Rich prebuilt semantics filters: Combine built-in matchers like hasText, hasClickAction, isEnabled, isOn, hasTestTag, hasContentDescription, and many more.
- Hierarchical matching: Express relationships using hasParent, hasAnyAncestor, hasAnyChild, hasAnySibling, and hasAnyDescendant to avoid incorrect “direct child” assumptions.
- Custom semantics keys: Match domain-specific SemanticsPropertyKey values using SemanticsMatcher.expectValue, SemanticsMatcher.keyIsDefined, and SemanticsMatcher.keyNotDefined.
Quick Start
Use the composing-semantics-matchers skill to write one onNode query that combines text, state, actions, and (if needed) ancestor/descendant constraints into a single SemanticsMatcher.