1#ifndef YAZE_APP_CORE_SERVICE_IMGUI_TEST_HARNESS_SERVICE_H_
2#define YAZE_APP_CORE_SERVICE_IMGUI_TEST_HARNESS_SERVICE_H_
9#include "absl/status/status.h"
10#include "absl/status/statusor.h"
25#include <grpcpp/server.h>
49class ScreenshotRequest;
50class ScreenshotResponse;
51class GetTestStatusRequest;
52class GetTestStatusResponse;
53class ListTestsRequest;
54class ListTestsResponse;
55class GetTestResultsRequest;
56class GetTestResultsResponse;
57class DiscoverWidgetsRequest;
58class DiscoverWidgetsResponse;
59class StartRecordingRequest;
60class StartRecordingResponse;
61class StopRecordingRequest;
62class StopRecordingResponse;
63class ReplayTestRequest;
64class ReplayTestResponse;
68class ImGuiTestHarnessServiceImpl {
71 explicit ImGuiTestHarnessServiceImpl(TestManager* test_manager)
72 : test_manager_(test_manager), test_recorder_(test_manager) {}
73 ~ImGuiTestHarnessServiceImpl() =
default;
76 ImGuiTestHarnessServiceImpl(
const ImGuiTestHarnessServiceImpl&) =
delete;
77 ImGuiTestHarnessServiceImpl& operator=(
const ImGuiTestHarnessServiceImpl&) =
83 absl::Status Ping(
const PingRequest* request, PingResponse* response);
86 absl::Status Click(
const ClickRequest* request, ClickResponse* response);
89 absl::Status Type(
const TypeRequest* request, TypeResponse* response);
92 absl::Status Wait(
const WaitRequest* request, WaitResponse* response);
95 absl::Status Assert(
const AssertRequest* request, AssertResponse* response);
98 absl::Status Screenshot(
const ScreenshotRequest* request,
99 ScreenshotResponse* response);
102 absl::Status GetTestStatus(
const GetTestStatusRequest* request,
103 GetTestStatusResponse* response);
104 absl::Status ListTests(
const ListTestsRequest* request,
105 ListTestsResponse* response);
106 absl::Status GetTestResults(
const GetTestResultsRequest* request,
107 GetTestResultsResponse* response);
108 absl::Status DiscoverWidgets(
const DiscoverWidgetsRequest* request,
109 DiscoverWidgetsResponse* response);
110 absl::Status StartRecording(
const StartRecordingRequest* request,
111 StartRecordingResponse* response);
112 absl::Status StopRecording(
const StopRecordingRequest* request,
113 StopRecordingResponse* response);
114 absl::Status ReplayTest(
const ReplayTestRequest* request,
115 ReplayTestResponse* response);
118 TestManager* test_manager_;
119 WidgetDiscoveryService widget_discovery_service_;
120 TestRecorder test_recorder_;
124class ImGuiTestHarnessServiceGrpc;
128class ImGuiTestHarnessServer {
131 static ImGuiTestHarnessServer& Instance();
137 absl::Status Start(
int port, TestManager* test_manager);
143 bool IsRunning()
const {
return server_ !=
nullptr; }
146 int Port()
const {
return port_; }
149 ImGuiTestHarnessServer() =
default;
150 ~ImGuiTestHarnessServer();
153 ImGuiTestHarnessServer(
const ImGuiTestHarnessServer&) =
delete;
154 ImGuiTestHarnessServer& operator=(
const ImGuiTestHarnessServer&) =
delete;
156 std::unique_ptr<grpc::Server> server_;
157 std::unique_ptr<ImGuiTestHarnessServiceImpl> service_;
158 std::unique_ptr<ImGuiTestHarnessServiceGrpc> grpc_service_;
Main namespace for the application.