diff --git a/src/app/core/service/imgui_test_harness_service.cc b/src/app/core/service/imgui_test_harness_service.cc index 05d2a6c2..973e9314 100644 --- a/src/app/core/service/imgui_test_harness_service.cc +++ b/src/app/core/service/imgui_test_harness_service.cc @@ -109,7 +109,7 @@ struct RPCState { namespace { -::yaze::test::GetTestStatusResponse_Status ConvertHarnessStatus( +::yaze::test::GetTestStatusResponse_TestStatus ConvertHarnessStatus( ::yaze::test::HarnessTestStatus status) { switch (status) { case ::yaze::test::HarnessTestStatus::kQueued: diff --git a/src/cli/service/gui/gui_automation_client.cc b/src/cli/service/gui/gui_automation_client.cc index b6d76eba..88ad11b6 100644 --- a/src/cli/service/gui/gui_automation_client.cc +++ b/src/cli/service/gui/gui_automation_client.cc @@ -52,20 +52,20 @@ yaze::test::WidgetType ConvertWidgetTypeFilterToProto(WidgetTypeFilter filter) { } TestRunStatus ConvertStatusProto( - yaze::test::GetTestStatusResponse::Status status) { - using ProtoStatus = yaze::test::GetTestStatusResponse::Status; + yaze::test::GetTestStatusResponse::TestStatus status) { + using ProtoStatus = yaze::test::GetTestStatusResponse::TestStatus; switch (status) { - case ProtoStatus::GetTestStatusResponse_Status_STATUS_QUEUED: + case ProtoStatus::GetTestStatusResponse_TestStatus_STATUS_QUEUED: return TestRunStatus::kQueued; - case ProtoStatus::GetTestStatusResponse_Status_STATUS_RUNNING: + case ProtoStatus::GetTestStatusResponse_TestStatus_STATUS_RUNNING: return TestRunStatus::kRunning; - case ProtoStatus::GetTestStatusResponse_Status_STATUS_PASSED: + case ProtoStatus::GetTestStatusResponse_TestStatus_STATUS_PASSED: return TestRunStatus::kPassed; - case ProtoStatus::GetTestStatusResponse_Status_STATUS_FAILED: + case ProtoStatus::GetTestStatusResponse_TestStatus_STATUS_FAILED: return TestRunStatus::kFailed; - case ProtoStatus::GetTestStatusResponse_Status_STATUS_TIMEOUT: + case ProtoStatus::GetTestStatusResponse_TestStatus_STATUS_TIMEOUT: return TestRunStatus::kTimeout; - case ProtoStatus::GetTestStatusResponse_Status_STATUS_UNSPECIFIED: + case ProtoStatus::GetTestStatusResponse_TestStatus_STATUS_UNSPECIFIED: default: return TestRunStatus::kUnknown; } @@ -79,17 +79,17 @@ GuiAutomationClient::GuiAutomationClient(const std::string& server_address) absl::Status GuiAutomationClient::Connect() { #ifdef YAZE_WITH_GRPC - auto channel = grpc::CreateChannel(server_address_, - grpc::InsecureChannelCredentials()); + auto channel = + grpc::CreateChannel(server_address_, grpc::InsecureChannelCredentials()); if (!channel) { return absl::InternalError("Failed to create gRPC channel"); } - + stub_ = yaze::test::ImGuiTestHarness::NewStub(channel); if (!stub_) { return absl::InternalError("Failed to create gRPC stub"); } - + // Test connection with a ping auto result = Ping("connection_test"); if (!result.ok()) { @@ -97,7 +97,7 @@ absl::Status GuiAutomationClient::Connect() { absl::StrFormat("Failed to connect to test harness at %s: %s", server_address_, result.status().message())); } - + connected_ = true; return absl::OkStatus(); #else @@ -110,27 +110,28 @@ absl::StatusOr GuiAutomationClient::Ping( const std::string& message) { #ifdef YAZE_WITH_GRPC if (!stub_) { - return absl::FailedPreconditionError("Not connected. Call Connect() first."); + return absl::FailedPreconditionError( + "Not connected. Call Connect() first."); } - + yaze::test::PingRequest request; request.set_message(message); - + yaze::test::PingResponse response; grpc::ClientContext context; - + grpc::Status status = stub_->Ping(&context, request, &response); - + if (!status.ok()) { return absl::InternalError( absl::StrFormat("Ping RPC failed: %s", status.error_message())); } - + AutomationResult result; result.success = true; - result.message = absl::StrFormat("Server version: %s (timestamp: %lld)", - response.yaze_version(), - response.timestamp_ms()); + result.message = + absl::StrFormat("Server version: %s (timestamp: %lld)", + response.yaze_version(), response.timestamp_ms()); result.execution_time = std::chrono::milliseconds(0); result.test_id.clear(); return result; @@ -144,7 +145,8 @@ absl::StatusOr GuiAutomationClient::ReplayTest( const std::map& parameter_overrides) { #ifdef YAZE_WITH_GRPC if (!stub_) { - return absl::FailedPreconditionError("Not connected. Call Connect() first."); + return absl::FailedPreconditionError( + "Not connected. Call Connect() first."); } yaze::test::ReplayTestRequest request; @@ -191,7 +193,8 @@ absl::StatusOr GuiAutomationClient::StartRecording( const std::string& description) { #ifdef YAZE_WITH_GRPC if (!stub_) { - return absl::FailedPreconditionError("Not connected. Call Connect() first."); + return absl::FailedPreconditionError( + "Not connected. Call Connect() first."); } yaze::test::StartRecordingRequest request; @@ -223,7 +226,8 @@ absl::StatusOr GuiAutomationClient::StopRecording( const std::string& recording_id, bool discard) { #ifdef YAZE_WITH_GRPC if (!stub_) { - return absl::FailedPreconditionError("Not connected. Call Connect() first."); + return absl::FailedPreconditionError( + "Not connected. Call Connect() first."); } if (recording_id.empty()) { return absl::InvalidArgumentError("recording_id must not be empty"); @@ -258,46 +262,43 @@ absl::StatusOr GuiAutomationClient::Click( const std::string& target, ClickType type) { #ifdef YAZE_WITH_GRPC if (!stub_) { - return absl::FailedPreconditionError("Not connected. Call Connect() first."); + return absl::FailedPreconditionError( + "Not connected. Call Connect() first."); } - + yaze::test::ClickRequest request; request.set_target(target); - + switch (type) { case ClickType::kLeft: - request.set_type( - yaze::test::ClickRequest::CLICK_TYPE_LEFT); + request.set_type(yaze::test::ClickRequest::CLICK_TYPE_LEFT); break; case ClickType::kRight: - request.set_type( - yaze::test::ClickRequest::CLICK_TYPE_RIGHT); + request.set_type(yaze::test::ClickRequest::CLICK_TYPE_RIGHT); break; case ClickType::kMiddle: - request.set_type( - yaze::test::ClickRequest::CLICK_TYPE_MIDDLE); + request.set_type(yaze::test::ClickRequest::CLICK_TYPE_MIDDLE); break; case ClickType::kDouble: - request.set_type( - yaze::test::ClickRequest::CLICK_TYPE_DOUBLE); + request.set_type(yaze::test::ClickRequest::CLICK_TYPE_DOUBLE); break; } - + yaze::test::ClickResponse response; grpc::ClientContext context; - + grpc::Status status = stub_->Click(&context, request, &response); - + if (!status.ok()) { return absl::InternalError( absl::StrFormat("Click RPC failed: %s", status.error_message())); } - + AutomationResult result; result.success = response.success(); result.message = response.message(); - result.execution_time = std::chrono::milliseconds( - response.execution_time_ms()); + result.execution_time = + std::chrono::milliseconds(response.execution_time_ms()); result.test_id = response.test_id(); return result; #else @@ -309,29 +310,30 @@ absl::StatusOr GuiAutomationClient::Type( const std::string& target, const std::string& text, bool clear_first) { #ifdef YAZE_WITH_GRPC if (!stub_) { - return absl::FailedPreconditionError("Not connected. Call Connect() first."); + return absl::FailedPreconditionError( + "Not connected. Call Connect() first."); } - + yaze::test::TypeRequest request; request.set_target(target); request.set_text(text); request.set_clear_first(clear_first); - + yaze::test::TypeResponse response; grpc::ClientContext context; - + grpc::Status status = stub_->Type(&context, request, &response); - + if (!status.ok()) { return absl::InternalError( absl::StrFormat("Type RPC failed: %s", status.error_message())); } - + AutomationResult result; result.success = response.success(); result.message = response.message(); - result.execution_time = std::chrono::milliseconds( - response.execution_time_ms()); + result.execution_time = + std::chrono::milliseconds(response.execution_time_ms()); result.test_id = response.test_id(); return result; #else @@ -343,29 +345,29 @@ absl::StatusOr GuiAutomationClient::Wait( const std::string& condition, int timeout_ms, int poll_interval_ms) { #ifdef YAZE_WITH_GRPC if (!stub_) { - return absl::FailedPreconditionError("Not connected. Call Connect() first."); + return absl::FailedPreconditionError( + "Not connected. Call Connect() first."); } - + yaze::test::WaitRequest request; request.set_condition(condition); request.set_timeout_ms(timeout_ms); request.set_poll_interval_ms(poll_interval_ms); - + yaze::test::WaitResponse response; grpc::ClientContext context; - + grpc::Status status = stub_->Wait(&context, request, &response); - + if (!status.ok()) { return absl::InternalError( absl::StrFormat("Wait RPC failed: %s", status.error_message())); } - + AutomationResult result; result.success = response.success(); result.message = response.message(); - result.execution_time = std::chrono::milliseconds( - response.elapsed_ms()); + result.execution_time = std::chrono::milliseconds(response.elapsed_ms()); result.test_id = response.test_id(); return result; #else @@ -377,22 +379,23 @@ absl::StatusOr GuiAutomationClient::Assert( const std::string& condition) { #ifdef YAZE_WITH_GRPC if (!stub_) { - return absl::FailedPreconditionError("Not connected. Call Connect() first."); + return absl::FailedPreconditionError( + "Not connected. Call Connect() first."); } - + yaze::test::AssertRequest request; request.set_condition(condition); - + yaze::test::AssertResponse response; grpc::ClientContext context; - + grpc::Status status = stub_->Assert(&context, request, &response); - + if (!status.ok()) { return absl::InternalError( absl::StrFormat("Assert RPC failed: %s", status.error_message())); } - + AutomationResult result; result.success = response.success(); result.message = response.message(); @@ -410,25 +413,26 @@ absl::StatusOr GuiAutomationClient::Screenshot( const std::string& region, const std::string& format) { #ifdef YAZE_WITH_GRPC if (!stub_) { - return absl::FailedPreconditionError("Not connected. Call Connect() first."); + return absl::FailedPreconditionError( + "Not connected. Call Connect() first."); } - + yaze::test::ScreenshotRequest request; - request.set_window_title(""); // Empty = main window + request.set_window_title(""); // Empty = main window request.set_output_path("/tmp/yaze_screenshot.png"); // Default path request.set_format( yaze::test::ScreenshotRequest::IMAGE_FORMAT_PNG); // Always PNG for now - + yaze::test::ScreenshotResponse response; grpc::ClientContext context; - + grpc::Status status = stub_->Screenshot(&context, request, &response); - + if (!status.ok()) { return absl::InternalError( absl::StrFormat("Screenshot RPC failed: %s", status.error_message())); } - + AutomationResult result; result.success = response.success(); result.message = response.message(); @@ -444,7 +448,8 @@ absl::StatusOr GuiAutomationClient::GetTestStatus( const std::string& test_id) { #ifdef YAZE_WITH_GRPC if (!stub_) { - return absl::FailedPreconditionError("Not connected. Call Connect() first."); + return absl::FailedPreconditionError( + "Not connected. Call Connect() first."); } yaze::test::GetTestStatusRequest request; @@ -456,8 +461,8 @@ absl::StatusOr GuiAutomationClient::GetTestStatus( grpc::Status status = stub_->GetTestStatus(&context, request, &response); if (!status.ok()) { - return absl::InternalError( - absl::StrFormat("GetTestStatus RPC failed: %s", status.error_message())); + return absl::InternalError(absl::StrFormat("GetTestStatus RPC failed: %s", + status.error_message())); } TestStatusDetails details; @@ -481,7 +486,8 @@ absl::StatusOr GuiAutomationClient::ListTests( const std::string& page_token) { #ifdef YAZE_WITH_GRPC if (!stub_) { - return absl::FailedPreconditionError("Not connected. Call Connect() first."); + return absl::FailedPreconditionError( + "Not connected. Call Connect() first."); } yaze::test::ListTestsRequest request; @@ -534,7 +540,8 @@ absl::StatusOr GuiAutomationClient::GetTestResults( const std::string& test_id, bool include_logs) { #ifdef YAZE_WITH_GRPC if (!stub_) { - return absl::FailedPreconditionError("Not connected. Call Connect() first."); + return absl::FailedPreconditionError( + "Not connected. Call Connect() first."); } yaze::test::GetTestResultsRequest request; @@ -547,9 +554,8 @@ absl::StatusOr GuiAutomationClient::GetTestResults( grpc::Status status = stub_->GetTestResults(&context, request, &response); if (!status.ok()) { - return absl::InternalError( - absl::StrFormat("GetTestResults RPC failed: %s", - status.error_message())); + return absl::InternalError(absl::StrFormat("GetTestResults RPC failed: %s", + status.error_message())); } TestResultDetails result; @@ -594,7 +600,8 @@ absl::StatusOr GuiAutomationClient::DiscoverWidgets( const DiscoverWidgetsQuery& query) { #ifdef YAZE_WITH_GRPC if (!stub_) { - return absl::FailedPreconditionError("Not connected. Call Connect() first."); + return absl::FailedPreconditionError( + "Not connected. Call Connect() first."); } yaze::test::DiscoverWidgetsRequest request; @@ -613,9 +620,8 @@ absl::StatusOr GuiAutomationClient::DiscoverWidgets( grpc::Status status = stub_->DiscoverWidgets(&context, request, &response); if (!status.ok()) { - return absl::InternalError( - absl::StrFormat("DiscoverWidgets RPC failed: %s", - status.error_message())); + return absl::InternalError(absl::StrFormat("DiscoverWidgets RPC failed: %s", + status.error_message())); } DiscoverWidgetsResult result; @@ -651,7 +657,8 @@ absl::StatusOr GuiAutomationClient::DiscoverWidgets( } widget.widget_id = widget_proto.widget_id(); widget.last_seen_frame = widget_proto.last_seen_frame(); - widget.last_seen_at = OptionalTimeFromMillis(widget_proto.last_seen_at_ms()); + widget.last_seen_at = + OptionalTimeFromMillis(widget_proto.last_seen_at_ms()); widget.stale = widget_proto.stale(); window_info.widgets.push_back(std::move(widget)); } diff --git a/src/protos/imgui_test_harness.proto b/src/protos/imgui_test_harness.proto index 7a2e3f67..55408f47 100644 --- a/src/protos/imgui_test_harness.proto +++ b/src/protos/imgui_test_harness.proto @@ -158,7 +158,7 @@ message GetTestStatusRequest { } message GetTestStatusResponse { - enum Status { + enum TestStatus { STATUS_UNSPECIFIED = 0; // Test ID not found or unspecified STATUS_QUEUED = 1; // Waiting to execute STATUS_RUNNING = 2; // Currently executing @@ -167,7 +167,7 @@ message GetTestStatusResponse { STATUS_TIMEOUT = 5; // Exceeded timeout } - Status status = 1; + TestStatus status = 1; int64 queued_at_ms = 2; // When test was queued int64 started_at_ms = 3; // When test started (0 if not started) int64 completed_at_ms = 4; // When test completed (0 if not complete)