diff --git a/maestro-cli/src/main/java/maestro/cli/command/PrintHierarchyCommand.kt b/maestro-cli/src/main/java/maestro/cli/command/PrintHierarchyCommand.kt index bce609311f..bbea2181ed 100644 --- a/maestro-cli/src/main/java/maestro/cli/command/PrintHierarchyCommand.kt +++ b/maestro-cli/src/main/java/maestro/cli/command/PrintHierarchyCommand.kt @@ -26,9 +26,8 @@ import maestro.cli.DisableAnsiMixin import maestro.cli.ShowHelpMixin import maestro.cli.report.TestDebugReporter import maestro.cli.session.MaestroSessionManager -import maestro.cli.view.green import maestro.cli.view.yellow -import maestro.utils.Insights +import maestro.utils.CliInsights import maestro.utils.chunkStringByWordCount import picocli.CommandLine import java.lang.StringBuilder @@ -65,7 +64,7 @@ class PrintHierarchyCommand : Runnable { deviceId = parent?.deviceId, platform = parent?.platform, ) { session -> - Insights.onInsightsUpdated { + CliInsights.onInsightsUpdated { val message = StringBuilder() val level = it.level.toString().lowercase().replaceFirstChar(Char::uppercase) message.append(level.yellow() + ": ") diff --git a/maestro-cli/src/main/java/maestro/cli/runner/MaestroCommandRunner.kt b/maestro-cli/src/main/java/maestro/cli/runner/MaestroCommandRunner.kt index 0e21b3669a..11ceef4d9d 100644 --- a/maestro-cli/src/main/java/maestro/cli/runner/MaestroCommandRunner.kt +++ b/maestro-cli/src/main/java/maestro/cli/runner/MaestroCommandRunner.kt @@ -33,7 +33,7 @@ import maestro.orchestra.CompositeCommand import maestro.orchestra.MaestroCommand import maestro.orchestra.Orchestra import maestro.orchestra.yaml.YamlCommandReader -import maestro.utils.Insights +import maestro.utils.CliInsights import org.slf4j.LoggerFactory import java.util.IdentityHashMap import maestro.cli.util.ScreenshotUtils @@ -92,7 +92,7 @@ object MaestroCommandRunner { val orchestra = Orchestra( maestro = maestro, - insights = Insights, + insights = CliInsights, onCommandStart = { _, command -> logger.info("${command.description()} RUNNING") commandStatuses[command] = CommandStatus.RUNNING diff --git a/maestro-cli/src/main/java/maestro/cli/session/MaestroSessionManager.kt b/maestro-cli/src/main/java/maestro/cli/session/MaestroSessionManager.kt index ac3752f4d0..6905798def 100644 --- a/maestro-cli/src/main/java/maestro/cli/session/MaestroSessionManager.kt +++ b/maestro-cli/src/main/java/maestro/cli/session/MaestroSessionManager.kt @@ -28,7 +28,7 @@ import maestro.Maestro import maestro.cli.device.Device import maestro.cli.device.PickDeviceInteractor import maestro.cli.device.Platform -import maestro.utils.Insights +import maestro.utils.CliInsights import maestro.cli.util.ScreenReporter import maestro.drivers.AndroidDriver import maestro.drivers.IOSDriver @@ -305,9 +305,9 @@ object MaestroSessionManager { deviceId = deviceId, xcTestDevice = xcTestDevice, simctlIOSDevice = simctlIOSDevice, - insights = Insights + insights = CliInsights ), - insights = Insights + insights = CliInsights ) return Maestro.ios( diff --git a/maestro-client/src/main/java/maestro/drivers/IOSDriver.kt b/maestro-client/src/main/java/maestro/drivers/IOSDriver.kt index 5b46582e94..41381bf6e5 100644 --- a/maestro-client/src/main/java/maestro/drivers/IOSDriver.kt +++ b/maestro-client/src/main/java/maestro/drivers/IOSDriver.kt @@ -40,7 +40,7 @@ import kotlin.collections.set class IOSDriver( private val iosDevice: IOSDevice, - private val insights: InsightsInterface = NoopInsights + private val insights: Insights = NoopInsights ) : Driver { private var appId: String? = null diff --git a/maestro-ios/src/main/java/ios/LocalIOSDevice.kt b/maestro-ios/src/main/java/ios/LocalIOSDevice.kt index 4a4b99865f..9684907e9b 100644 --- a/maestro-ios/src/main/java/ios/LocalIOSDevice.kt +++ b/maestro-ios/src/main/java/ios/LocalIOSDevice.kt @@ -9,7 +9,7 @@ import java.io.InputStream import java.util.UUID import hierarchy.ViewHierarchy import maestro.utils.Insight -import maestro.utils.InsightsInterface +import maestro.utils.Insights import maestro.utils.NoopInsights import java.util.concurrent.Executors import java.util.concurrent.TimeUnit @@ -18,7 +18,7 @@ class LocalIOSDevice( override val deviceId: String?, private val xcTestDevice: XCTestIOSDevice, private val simctlIOSDevice: SimctlIOSDevice, - private val insights: InsightsInterface = NoopInsights + private val insights: Insights = NoopInsights ) : IOSDevice { private val executor by lazy { Executors.newSingleThreadScheduledExecutor() } diff --git a/maestro-orchestra/src/main/java/maestro/orchestra/Orchestra.kt b/maestro-orchestra/src/main/java/maestro/orchestra/Orchestra.kt index b8c60a3568..8effee6877 100644 --- a/maestro-orchestra/src/main/java/maestro/orchestra/Orchestra.kt +++ b/maestro-orchestra/src/main/java/maestro/orchestra/Orchestra.kt @@ -38,7 +38,7 @@ import maestro.orchestra.geo.Traveller import maestro.orchestra.util.Env.evaluateScripts import maestro.orchestra.yaml.YamlCommandReader import maestro.utils.Insight -import maestro.utils.InsightsInterface +import maestro.utils.Insights import maestro.utils.MaestroTimer import maestro.utils.NoopInsights import maestro.utils.StringUtils.toRegexSafe @@ -77,7 +77,7 @@ class Orchestra( private val lookupTimeoutMs: Long = 17000L, private val optionalLookupTimeoutMs: Long = 7000L, private val httpClient: OkHttpClient? = null, - private val insights: InsightsInterface = NoopInsights, + private val insights: Insights = NoopInsights, private val onFlowStart: (List) -> Unit = {}, private val onCommandStart: (Int, MaestroCommand) -> Unit = { _, _ -> }, private val onCommandComplete: (Int, MaestroCommand) -> Unit = { _, _ -> }, diff --git a/maestro-studio/server/src/main/java/maestro/studio/InsightService.kt b/maestro-studio/server/src/main/java/maestro/studio/InsightService.kt index 50db2f909a..ce66845d8b 100644 --- a/maestro-studio/server/src/main/java/maestro/studio/InsightService.kt +++ b/maestro-studio/server/src/main/java/maestro/studio/InsightService.kt @@ -5,12 +5,9 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import io.ktor.server.application.* import io.ktor.server.response.* import io.ktor.server.routing.* -import kotlinx.coroutines.* import maestro.studio.BannerMessage.* import maestro.utils.Insight -import maestro.utils.Insights -import kotlin.coroutines.resume -import kotlin.coroutines.suspendCoroutine +import maestro.utils.CliInsights object InsightService { @@ -41,7 +38,7 @@ object InsightService { } private fun registerInsightUpdateCallback() { - Insights.onInsightsUpdated { + CliInsights.onInsightsUpdated { currentInsight = it } } diff --git a/maestro-utils/src/main/kotlin/Insight.kt b/maestro-utils/src/main/kotlin/Insight.kt index 1b983b0336..5ae17a162f 100644 --- a/maestro-utils/src/main/kotlin/Insight.kt +++ b/maestro-utils/src/main/kotlin/Insight.kt @@ -1,12 +1,12 @@ package maestro.utils -object Insights: InsightsInterface { +object CliInsights: Insights { private var insight: Insight = Insight("", Insight.Level.NONE) private val listeners = mutableListOf<(Insight) -> Unit>() override fun report(insight: Insight) { - Insights.insight = insight + CliInsights.insight = insight listeners.forEach { it.invoke(insight) } } diff --git a/maestro-utils/src/main/kotlin/InsightsInterface.kt b/maestro-utils/src/main/kotlin/Insights.kt similarity index 89% rename from maestro-utils/src/main/kotlin/InsightsInterface.kt rename to maestro-utils/src/main/kotlin/Insights.kt index e37b7e1ca2..cba54df306 100644 --- a/maestro-utils/src/main/kotlin/InsightsInterface.kt +++ b/maestro-utils/src/main/kotlin/Insights.kt @@ -1,6 +1,6 @@ package maestro.utils -interface InsightsInterface { +interface Insights { fun report(insight: Insight) @@ -9,7 +9,7 @@ interface InsightsInterface { fun unregisterListener(callback: (Insight) -> Unit) } -object NoopInsights: InsightsInterface { +object NoopInsights: Insights { override fun report(insight: Insight) { /* no-op */ diff --git a/maestro-utils/src/test/kotlin/InsightTest.kt b/maestro-utils/src/test/kotlin/InsightTest.kt index b7b40c44c4..9cdb0b3d9b 100644 --- a/maestro-utils/src/test/kotlin/InsightTest.kt +++ b/maestro-utils/src/test/kotlin/InsightTest.kt @@ -1,18 +1,18 @@ import maestro.utils.Insight -import maestro.utils.Insights +import maestro.utils.CliInsights import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Test -class InsightsTest { +class CliInsightsTest { @Test fun `report should update insight and notify listeners`() { val insight = Insight("Test message", Insight.Level.INFO) var notifiedInsight: Insight? = null - Insights.onInsightsUpdated { notifiedInsight = it } - Insights.report(insight) + CliInsights.onInsightsUpdated { notifiedInsight = it } + CliInsights.report(insight) assertEquals(insight, notifiedInsight) } @@ -22,8 +22,8 @@ class InsightsTest { val insight = Insight("Test message", Insight.Level.INFO) var notified = false - Insights.onInsightsUpdated { notified = true } - Insights.report(insight) + CliInsights.onInsightsUpdated { notified = true } + CliInsights.report(insight) assertTrue(notified) } @@ -34,9 +34,9 @@ class InsightsTest { var notified = false val listener: (Insight) -> Unit = { notified = true } - Insights.onInsightsUpdated(listener) - Insights.unregisterListener(listener) - Insights.report(insight) + CliInsights.onInsightsUpdated(listener) + CliInsights.unregisterListener(listener) + CliInsights.report(insight) assertTrue(!notified) }