diff --git a/maestro-cli/src/main/java/maestro/cli/command/TestCommand.kt b/maestro-cli/src/main/java/maestro/cli/command/TestCommand.kt index cc659d1453..46774f3e10 100644 --- a/maestro-cli/src/main/java/maestro/cli/command/TestCommand.kt +++ b/maestro-cli/src/main/java/maestro/cli/command/TestCommand.kt @@ -190,7 +190,7 @@ class TestCommand : Callable { val chunkPlans = plan.flowsToRun .withIndex() .groupBy { it.index % shards } - .map { (shardIndex, files) -> + .map { (_, files) -> ExecutionPlan( files.map { it.value }, plan.sequence.also { @@ -335,7 +335,7 @@ class TestCommand : Callable { private fun printShardsMessage(passedTests: Int, totalTests: Int, shardResults: List) { val box = buildString { val lines = listOf("Passed: $passedTests/$totalTests") + - shardResults.mapIndexed { index, result -> + shardResults.mapIndexed { _, result -> "[ ${result.suites.first().deviceName} ] - ${result.passedCount ?: 0}/${result.totalTests ?: 0}" } diff --git a/maestro-cli/src/main/java/maestro/cli/device/DeviceService.kt b/maestro-cli/src/main/java/maestro/cli/device/DeviceService.kt index bac6d647a2..bf003dd517 100644 --- a/maestro-cli/src/main/java/maestro/cli/device/DeviceService.kt +++ b/maestro-cli/src/main/java/maestro/cli/device/DeviceService.kt @@ -115,12 +115,12 @@ object DeviceService { fun listConnectedDevices(): List { return listDevices() - .filterIsInstance(Device.Connected::class.java) + .filterIsInstance() } fun listAvailableForLaunchDevices(): List { return listDevices() - .filterIsInstance(Device.AvailableForLaunch::class.java) + .filterIsInstance() } private fun listDevices(): List { @@ -246,11 +246,11 @@ object DeviceService { fun isDeviceAvailableToLaunch(deviceName: String, platform: Platform): Device.AvailableForLaunch? { return if (platform == Platform.IOS) { listIOSDevices() - .filterIsInstance(Device.AvailableForLaunch::class.java) + .filterIsInstance() .find { it.description.contains(deviceName, ignoreCase = true) } } else { listAndroidDevices() - .filterIsInstance(Device.AvailableForLaunch::class.java) + .filterIsInstance() .find { it.description.contains(deviceName, ignoreCase = true) } } } diff --git a/maestro-cli/src/main/java/maestro/cli/report/HtmlTestSuiteReporter.kt b/maestro-cli/src/main/java/maestro/cli/report/HtmlTestSuiteReporter.kt index c02551c0cf..642e185dfc 100644 --- a/maestro-cli/src/main/java/maestro/cli/report/HtmlTestSuiteReporter.kt +++ b/maestro-cli/src/main/java/maestro/cli/report/HtmlTestSuiteReporter.kt @@ -115,7 +115,7 @@ class HtmlTestSuiteReporter : TestSuiteReporter { } } } - script(src = "https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js", content = "") + script(src = "https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js") {} } } } diff --git a/maestro-cli/src/main/java/maestro/cli/report/TestDebugReporter.kt b/maestro-cli/src/main/java/maestro/cli/report/TestDebugReporter.kt index 7a5600d189..043934125d 100644 --- a/maestro-cli/src/main/java/maestro/cli/report/TestDebugReporter.kt +++ b/maestro-cli/src/main/java/maestro/cli/report/TestDebugReporter.kt @@ -3,7 +3,6 @@ package maestro.cli.report import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.databind.JsonMappingException import com.fasterxml.jackson.databind.ObjectMapper -import maestro.Driver import maestro.MaestroException import maestro.TreeNode import maestro.cli.runner.CommandStatus @@ -25,7 +24,6 @@ import java.time.LocalDateTime import java.time.format.DateTimeFormatter import java.time.temporal.ChronoUnit import java.util.IdentityHashMap -import java.util.Properties import kotlin.io.path.absolutePathString import kotlin.io.path.exists @@ -98,13 +96,6 @@ object TestDebugReporter { } private fun logSystemInfo() { - val appVersion = runCatching { - val props = Driver::class.java.classLoader.getResourceAsStream("version.properties").use { - Properties().apply { load(it) } - } - props["version"].toString() - } - val logger = LoggerFactory.getLogger("MAESTRO") logger.info("---- System Info ----") logger.info("Maestro Version: ${EnvUtils.CLI_VERSION ?: "Undefined"}") diff --git a/maestro-client/src/main/java/maestro/drivers/WebDriver.kt b/maestro-client/src/main/java/maestro/drivers/WebDriver.kt index 9287483cc7..593b168bba 100644 --- a/maestro-client/src/main/java/maestro/drivers/WebDriver.kt +++ b/maestro-client/src/main/java/maestro/drivers/WebDriver.kt @@ -286,6 +286,7 @@ class WebDriver(val isStudio: Boolean) : Driver { swipe(direction, durationMs) } + @Suppress("UNUSED_PARAMETER") fun swipe(start: Point, end: Point) { TODO("Not yet implemented") } diff --git a/maestro-client/src/main/java/maestro/mockserver/MockInteractor.kt b/maestro-client/src/main/java/maestro/mockserver/MockInteractor.kt index bf2ea3c92f..0091dc1723 100644 --- a/maestro-client/src/main/java/maestro/mockserver/MockInteractor.kt +++ b/maestro-client/src/main/java/maestro/mockserver/MockInteractor.kt @@ -11,7 +11,6 @@ import java.util.concurrent.TimeUnit import kotlin.io.path.exists import kotlin.io.path.isDirectory import kotlin.io.path.readText -import kotlin.math.max data class Auth( val teamId: UUID, @@ -38,8 +37,7 @@ data class GetEventsResponse( val events: List ) -class MockInteractor( -) { +class MockInteractor { private val client = OkHttpClient.Builder() .readTimeout(5, TimeUnit.MINUTES) .writeTimeout(5, TimeUnit.MINUTES) @@ -81,7 +79,6 @@ class MockInteractor( error("Could not retrieve project id: ${e.message}") } } - return null } fun getMockEvents(): List { @@ -100,13 +97,11 @@ class MockInteractor( response.use { try { - val response = JSON.readValue(response.body?.bytes(), GetEventsResponse::class.java) - return response.events + return JSON.readValue(response.body?.bytes(), GetEventsResponse::class.java).events } catch (e: Exception) { error("Could not retrieve mock events: ${e.message}") } } - return emptyList() } companion object { @@ -133,4 +128,4 @@ class MockInteractor( fun main() { MockInteractor().getMockEvents() -} \ No newline at end of file +} diff --git a/maestro-ios/src/main/java/ios/simctl/SimctlIOSDevice.kt b/maestro-ios/src/main/java/ios/simctl/SimctlIOSDevice.kt index f25e4f794c..a78f83ed32 100644 --- a/maestro-ios/src/main/java/ios/simctl/SimctlIOSDevice.kt +++ b/maestro-ios/src/main/java/ios/simctl/SimctlIOSDevice.kt @@ -89,7 +89,7 @@ class SimctlIOSDevice( deviceId = deviceId, bundleId = id, launchArguments = iOSLaunchArguments, - sessionId = maestroSessionId?.toString() ?: null, + sessionId = maestroSessionId?.toString(), ) } } diff --git a/maestro-orchestra-models/src/main/java/maestro/orchestra/MaestroConfig.kt b/maestro-orchestra-models/src/main/java/maestro/orchestra/MaestroConfig.kt index 8a9325011a..79825da44c 100644 --- a/maestro-orchestra-models/src/main/java/maestro/orchestra/MaestroConfig.kt +++ b/maestro-orchestra-models/src/main/java/maestro/orchestra/MaestroConfig.kt @@ -26,13 +26,13 @@ data class MaestroConfig( } data class MaestroOnFlowComplete(val commands: List) { - fun evaluateScripts(jsEngine: JsEngine): MaestroOnFlowComplete { + fun evaluateScripts(@Suppress("UNUSED_PARAMETER") jsEngine: JsEngine): MaestroOnFlowComplete { return this } } data class MaestroOnFlowStart(val commands: List) { - fun evaluateScripts(jsEngine: JsEngine): MaestroOnFlowStart { + fun evaluateScripts(@Suppress("UNUSED_PARAMETER") jsEngine: JsEngine): MaestroOnFlowStart { return this } } diff --git a/maestro-orchestra-models/src/main/java/maestro/orchestra/WorkspaceConfig.kt b/maestro-orchestra-models/src/main/java/maestro/orchestra/WorkspaceConfig.kt index bc601f5f5e..e656143749 100644 --- a/maestro-orchestra-models/src/main/java/maestro/orchestra/WorkspaceConfig.kt +++ b/maestro-orchestra-models/src/main/java/maestro/orchestra/WorkspaceConfig.kt @@ -11,6 +11,7 @@ data class WorkspaceConfig( val executionOrder: ExecutionOrder? = null ) { + @Suppress("UNUSED_PARAMETER") @JsonAnySetter fun setOtherField(key: String, other: Any?) { // Do nothing diff --git a/maestro-orchestra/src/test/java/maestro/orchestra/MaestroCommandSerializationTest.kt b/maestro-orchestra/src/test/java/maestro/orchestra/MaestroCommandSerializationTest.kt index 3339c9a316..5ab6a56309 100644 --- a/maestro-orchestra/src/test/java/maestro/orchestra/MaestroCommandSerializationTest.kt +++ b/maestro-orchestra/src/test/java/maestro/orchestra/MaestroCommandSerializationTest.kt @@ -54,7 +54,7 @@ internal class MaestroCommandSerializationTest { @Test fun `serialize TapOnPointCommand`() { // given - val command = MaestroCommand( + @Suppress("DEPRECATION") val command = MaestroCommand( TapOnPointCommand( x = 100, y = 100, @@ -218,7 +218,7 @@ internal class MaestroCommandSerializationTest { @Test fun `serialize AssertCommand`() { // given - val command = MaestroCommand( + @Suppress("DEPRECATION") val command = MaestroCommand( AssertCommand( ElementSelector(textRegex = "[A-f0-9]"), ElementSelector(textRegex = "\\s") diff --git a/maestro-studio/server/src/main/java/maestro/studio/DeviceService.kt b/maestro-studio/server/src/main/java/maestro/studio/DeviceService.kt index ddc62748a6..7a3239a92b 100644 --- a/maestro-studio/server/src/main/java/maestro/studio/DeviceService.kt +++ b/maestro-studio/server/src/main/java/maestro/studio/DeviceService.kt @@ -93,10 +93,7 @@ object DeviceService { call.respond(response) } } - routing.static("/screenshot") { - staticRootFolder = SCREENSHOT_DIR.toFile() - files(".") - } + routing.staticFiles("/screenshot", SCREENSHOT_DIR.toFile()) } private fun executeCommands(maestro: Maestro, commands: List): Throwable? { @@ -231,4 +228,4 @@ object DeviceService { screenshotDir.createDirectories() return screenshotDir } -} \ No newline at end of file +} diff --git a/maestro-studio/web/package-lock.json b/maestro-studio/web/package-lock.json index aa0abfe075..f8f32d473e 100644 --- a/maestro-studio/web/package-lock.json +++ b/maestro-studio/web/package-lock.json @@ -15314,9 +15314,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001436", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz", - "integrity": "sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==", + "version": "1.0.30001653", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz", + "integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==", "funding": [ { "type": "opencollective", @@ -15325,6 +15325,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, @@ -45577,9 +45581,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001436", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz", - "integrity": "sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==" + "version": "1.0.30001653", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz", + "integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==" }, "capture-exit": { "version": "2.0.0",