Closed Angakokv closed 3 months ago
I have a same question
Hey, I also got stuck with this problem. But after some digging I found two ways to specify useUnmergedTree
option:
Use KNode
constructor with nodeMatcher
parameter:
val title = KNode(
semanticsProvider = semanticsProvider,
nodeMatcher = NodeMatcher(
matcher = hasTestTag("title_test_tag"),
useUnmergedTree = true,
),
parentNode = this,
)
Overwrite useUnmergedTree
variable in ViewBuilder
block:
val title: KNode = child {
useUnmergedTree = true
hasTestTag("title_test_tag")
}
You can override constructors for KNode
class KAppNode : KNode {
constructor(
semanticsProvider: SemanticsNodeInteractionsProvider,
nodeMatcher: NodeMatcher,
parentNode: BaseNode<*>? = null,
) : super(
semanticsProvider,
nodeMatcher.copy(
useUnmergedTree = true
),
parentNode
)
constructor(
semanticsProvider: SemanticsNodeInteractionsProvider,
nodeMatcher: NodeMatcher,
) : super(
semanticsProvider,
nodeMatcher.copy(
useUnmergedTree = true
)
)
constructor(
semanticsProvider: SemanticsNodeInteractionsProvider,
viewBuilderAction: ViewBuilder.() -> Unit,
) : super(
semanticsProvider,
ViewBuilder().apply {
useUnmergedTree = true
viewBuilderAction()
}.build()
)
}
and use it like this
val title: KAppNode = child { hasTestTag("titleTestTag") }
Provided a global one KakaoCompose.Override.useUnmergedTree = true
I need to find not merged element in compose tree. So how can I set useUnmergedTree to true to use in ViewBuilder?