Skip to content

Commit b483429

Browse files
authored
Refresh SemanticsNodeInteraction provider state (#86)
1 parent 41b55a7 commit b483429

File tree

9 files changed

+232
-25
lines changed

9 files changed

+232
-25
lines changed

sample-app/src/androidTest/java/com/atiurin/sampleapp/tests/BaseTest.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@ package com.atiurin.sampleapp.tests
22

33
import android.os.Environment
44
import androidx.test.platform.app.InstrumentationRegistry
5-
import com.atiurin.ultron.testlifecycle.rulesequence.RuleSequence
65
import com.atiurin.sampleapp.data.repositories.CURRENT_USER
76
import com.atiurin.sampleapp.managers.AccountManager
87
import com.atiurin.ultron.allure.config.UltronAllureConfig
9-
import com.atiurin.ultron.allure.listeners.DetailedOperationAllureListener
10-
import com.atiurin.ultron.allure.listeners.ScreenshotAttachListener
11-
import com.atiurin.ultron.allure.listeners.WindowHierarchyAttachListener
128
import com.atiurin.ultron.core.compose.config.UltronComposeConfig
139
import com.atiurin.ultron.core.config.UltronConfig
10+
import com.atiurin.ultron.testlifecycle.rulesequence.RuleSequence
1411
import com.atiurin.ultron.testlifecycle.setupteardown.SetUpRule
1512
import org.junit.BeforeClass
1613
import org.junit.Rule
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.atiurin.sampleapp.tests.compose
2+
3+
import androidx.compose.ui.test.hasTestTag
4+
import com.atiurin.sampleapp.activity.ComposeElementsActivity
5+
import com.atiurin.sampleapp.tests.BaseTest
6+
import com.atiurin.ultron.core.compose.createUltronComposeRule
7+
import com.atiurin.ultron.extensions.assertIsDisplayed
8+
import com.atiurin.ultron.extensions.withName
9+
import com.atiurin.ultron.extensions.withTimeout
10+
import com.atiurin.ultron.page.Page
11+
import org.junit.Rule
12+
import org.junit.Test
13+
14+
class SampleClassTest : BaseTest() {
15+
@get:Rule
16+
val composeRuleBase = createUltronComposeRule<ComposeElementsActivity>()
17+
18+
@Test
19+
fun test() {
20+
SomePage{
21+
elementWithName.assertIsDisplayed()
22+
elementWithTimeout.assertIsDisplayed()
23+
elementMatcher.assertIsDisplayed()
24+
}
25+
}
26+
27+
@Test
28+
fun test2() {
29+
SomePage{
30+
elementWithName.assertIsDisplayed()
31+
elementWithTimeout.assertIsDisplayed()
32+
elementMatcher.assertIsDisplayed()
33+
}
34+
}
35+
}
36+
37+
object SomePage : Page<SomePage>() {
38+
val elementWithName = hasTestTag("statusText").withName("sample element name")
39+
val elementWithTimeout = hasTestTag("statusText").withTimeout(4000)
40+
val elementMatcher = hasTestTag("statusText")
41+
}

ultron-android/src/main/kotlin/com/atiurin/ultron/core/config/UltronConfig.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import com.atiurin.ultron.extensions.simpleClassName
3737
import com.atiurin.ultron.listeners.LogLifecycleListener
3838
import com.atiurin.ultron.listeners.UltronLifecycleListener
3939
import com.atiurin.ultron.log.UltronLog
40+
import com.atiurin.ultron.log.UltronLogcatLogger
4041
import com.atiurin.ultron.log.getFileLogger
4142
import com.atiurin.ultron.testlifecycle.setupteardown.ConditionExecutorWrapper
4243
import com.atiurin.ultron.testlifecycle.setupteardown.ConditionsExecutor
@@ -75,6 +76,7 @@ object UltronConfig {
7576
Espresso.ASSERTION_TIMEOUT = params.operationTimeoutMs
7677
UiAutomator.OPERATION_TIMEOUT = params.operationTimeoutMs
7778
UltronCommonConfig.addListener(LogLifecycleListener())
79+
UltronLog.addLogger(UltronLogcatLogger())
7880
if (params.logToFile) {
7981
UltronLog.addLogger(UltronLog.fileLogger)
8082
} else {

ultron-common/src/commonMain/kotlin/com/atiurin/ultron/log/UltronLog.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.atiurin.ultron.log
22

33
expect fun getFileLogger(): UltronFileLogger
44

5-
65
object UltronLog {
76
val fileLogger by lazy { getFileLogger() }
87

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.atiurin.ultron.core.compose.config
2+
3+
import com.atiurin.ultron.log.ULogger
4+
import com.atiurin.ultron.log.UltronLogcatLogger
5+
6+
actual fun getPlatformLoggers(): List<ULogger> {
7+
return listOf(UltronLogcatLogger())
8+
}

ultron-compose/src/androidMain/kotlin/com/atiurin/ultron/core/compose/nodeinteraction/UltronComposeSemanticsNodeInteraction.android.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ package com.atiurin.ultron.core.compose.nodeinteraction
22

33
import android.os.Build
44
import androidx.annotation.RequiresApi
5-
import com.atiurin.ultron.core.compose.operation.ComposeOperationType
6-
import java.util.concurrent.atomic.AtomicReference
75
import androidx.compose.ui.graphics.ImageBitmap
86
import androidx.compose.ui.semantics.AccessibilityAction
97
import androidx.compose.ui.semantics.SemanticsPropertyKey
108
import androidx.compose.ui.test.SemanticsNodeInteraction
119
import androidx.compose.ui.test.captureToImage
10+
import com.atiurin.ultron.core.compose.operation.ComposeOperationType
1211
import com.atiurin.ultron.extensions.requireSemantics
1312
import com.atiurin.ultron.utils.runOnUiThread
13+
import java.util.concurrent.atomic.AtomicReference
1414

1515
@RequiresApi(Build.VERSION_CODES.O)
1616
fun UltronComposeSemanticsNodeInteraction.captureToImage(): ImageBitmap {

ultron-compose/src/commonMain/kotlin/com/atiurin/ultron/core/compose/config/UltronComposeConfig.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
package com.atiurin.ultron.core.compose.config
22

3-
import com.atiurin.ultron.core.config.UltronCommonConfig
43
import com.atiurin.ultron.core.common.Operation
54
import com.atiurin.ultron.core.common.OperationResult
65
import com.atiurin.ultron.core.common.OperationResultAnalyzer
76
import com.atiurin.ultron.core.common.UltronDefaultOperationResultAnalyzer
87
import com.atiurin.ultron.core.compose.operation.ComposeOperationResult
98
import com.atiurin.ultron.core.compose.operation.ComposeOperationType
109
import com.atiurin.ultron.core.compose.operation.UltronComposeOperation
11-
import com.atiurin.ultron.core.compose.operation.UltronComposeOperationLifecycle
10+
import com.atiurin.ultron.core.config.UltronCommonConfig
1211
import com.atiurin.ultron.exceptions.UltronAssertionException
1312
import com.atiurin.ultron.exceptions.UltronException
1413
import com.atiurin.ultron.exceptions.UltronWrapperException
1514
import com.atiurin.ultron.extensions.simpleClassName
1615
import com.atiurin.ultron.listeners.LogLifecycleListener
1716
import com.atiurin.ultron.listeners.UltronLifecycleListener
17+
import com.atiurin.ultron.log.ULogger
1818
import com.atiurin.ultron.log.UltronLog
1919

2020
object UltronComposeConfig {
@@ -88,6 +88,9 @@ object UltronComposeConfig {
8888
}
8989

9090
private fun modify(){
91+
getPlatformLoggers().forEach {
92+
UltronLog.addLogger(it)
93+
}
9194
UltronCommonConfig.addListener(LogLifecycleListener())
9295
if (UltronCommonConfig.logToFile) {
9396
UltronLog.addLogger(UltronLog.fileLogger)
@@ -97,3 +100,5 @@ object UltronComposeConfig {
97100
UltronLog.info("UltronComposeConfig applied with params $params}")
98101
}
99102
}
103+
104+
expect fun getPlatformLoggers(): List<ULogger>

0 commit comments

Comments
 (0)