feat: Add gRPC support for ImGuiTestHarness

- Integrated gRPC service for automated GUI testing in ImGuiTestHarness.
- Implemented service methods: Ping, Click, Type, Wait, Assert, and Screenshot.
- Created proto definitions for the gRPC service and messages.
- Added server lifecycle management for the gRPC server.
- Included necessary dependencies and build configurations in CMake.
This commit is contained in:
scawful
2025-10-01 22:45:07 -04:00
parent defdb3ea32
commit 3d272605c1
8 changed files with 737 additions and 26 deletions

View File

@@ -55,6 +55,9 @@ option(YAZE_ENABLE_EXPERIMENTAL_TESTS "Enable experimental/unstable tests" ON)
option(YAZE_ENABLE_UI_TESTS "Enable ImGui Test Engine UI testing" ON)
option(YAZE_MINIMAL_BUILD "Minimal build for CI (disable optional features)" OFF)
# Optional gRPC support for ImGuiTestHarness (z3ed agent mode)
option(YAZE_WITH_GRPC "Enable gRPC-based ImGuiTestHarness for automated GUI testing (experimental)" OFF)
# Configure minimal builds for CI/CD
if(YAZE_MINIMAL_BUILD)
set(YAZE_ENABLE_UI_TESTS OFF CACHE BOOL "Disabled for minimal build" FORCE)
@@ -184,6 +187,24 @@ endif()
# Abseil Standard Specifications
include(cmake/absl.cmake)
# Optional gRPC support
if(YAZE_WITH_GRPC)
message(STATUS "✓ gRPC support enabled (FetchContent will download and build from source)")
message(STATUS " Note: First build takes 15-20 minutes to compile gRPC + Protobuf")
message(STATUS " Versions: gRPC v1.62.0, Protobuf (bundled), Abseil (bundled)")
# Include existing gRPC infrastructure
include(cmake/grpc.cmake)
# Pass to source code
add_compile_definitions(YAZE_WITH_GRPC)
set(YAZE_HAS_GRPC TRUE)
else()
message(STATUS "○ gRPC support disabled (set -DYAZE_WITH_GRPC=ON to enable)")
set(YAZE_HAS_GRPC FALSE)
endif()
# SDL2 and PNG
include(cmake/sdl2.cmake)