KakaoCup / Compose

Nice and simple DSL for Espresso Compose UI testing in Kotlin
https://kakaocup.github.io/Compose/
Apache License 2.0
139 stars 13 forks source link

Configure useUnmergedTree flag #43

Closed Angakokv closed 3 months ago

Angakokv commented 1 year ago

I need to find not merged element in compose tree. So how can I set useUnmergedTree to true to use in ViewBuilder?

makaronis commented 1 year ago

I have a same question

sandboiii commented 11 months ago

Hey, I also got stuck with this problem. But after some digging I found two ways to specify useUnmergedTree option:

EvgenyMeltsaykin commented 9 months ago

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") }
Vacxe commented 3 months ago

Provided a global one KakaoCompose.Override.useUnmergedTree = true