4#ifndef YAZE_CLI_SERVICE_GUI_AUTOMATION_CLIENT_H
5#define YAZE_CLI_SERVICE_GUI_AUTOMATION_CLIENT_H
7#include "absl/status/status.h"
8#include "absl/status/statusor.h"
9#include "absl/time/time.h"
22#pragma push_macro("DWORD")
23#pragma push_macro("ERROR")
28#include <grpcpp/grpcpp.h>
29#include "protos/imgui_test_harness.grpc.pb.h"
33#pragma pop_macro("DWORD")
34#pragma pop_macro("ERROR")
107 std::vector<HarnessTestSummary>
tests;
261 absl::StatusOr<AutomationResult>
Ping(
const std::string& message =
"ping");
269 absl::StatusOr<AutomationResult>
Click(
const std::string& target,
279 absl::StatusOr<AutomationResult>
Type(
const std::string& target,
280 const std::string& text,
281 bool clear_first =
false);
290 absl::StatusOr<AutomationResult>
Wait(
const std::string& condition,
291 int timeout_ms = 5000,
292 int poll_interval_ms = 100);
299 absl::StatusOr<AutomationResult>
Assert(
const std::string& condition);
307 absl::StatusOr<AutomationResult>
Screenshot(
const std::string& region =
"full",
308 const std::string& format =
"PNG");
313 absl::StatusOr<TestStatusDetails>
GetTestStatus(
const std::string& test_id);
318 absl::StatusOr<ListTestsResult>
ListTests(
const std::string& category_filter =
"",
320 const std::string& page_token =
"");
325 absl::StatusOr<TestResultDetails>
GetTestResults(
const std::string& test_id,
326 bool include_logs =
false);
332 const std::string& script_path,
bool ci_mode,
333 const std::map<std::string, std::string>& parameter_overrides = {});
336 const std::string& output_path,
337 const std::string& session_name,
338 const std::string& description);
341 const std::string& recording_id,
342 bool discard =
false);
356 std::unique_ptr<yaze::test::ImGuiTestHarness::Stub> stub_;
Client for automating YAZE GUI through gRPC.
absl::StatusOr< ReplayTestResult > ReplayTest(const std::string &script_path, bool ci_mode, const std::map< std::string, std::string > ¶meter_overrides={})
absl::StatusOr< AutomationResult > Screenshot(const std::string ®ion="full", const std::string &format="PNG")
Capture a screenshot.
absl::Status Connect()
Connect to the test harness server.
absl::StatusOr< StartRecordingResult > StartRecording(const std::string &output_path, const std::string &session_name, const std::string &description)
absl::StatusOr< AutomationResult > Ping(const std::string &message="ping")
Check if the server is reachable and responsive.
absl::StatusOr< TestStatusDetails > GetTestStatus(const std::string &test_id)
Fetch the current execution status for a harness test.
absl::StatusOr< AutomationResult > Type(const std::string &target, const std::string &text, bool clear_first=false)
Type text into an input field.
absl::StatusOr< DiscoverWidgetsResult > DiscoverWidgets(const DiscoverWidgetsQuery &query)
bool IsConnected() const
Check if client is connected.
absl::StatusOr< AutomationResult > Wait(const std::string &condition, int timeout_ms=5000, int poll_interval_ms=100)
Wait for a condition to be met.
const std::string & ServerAddress() const
Get the server address.
absl::StatusOr< TestResultDetails > GetTestResults(const std::string &test_id, bool include_logs=false)
Retrieve detailed results for a harness test execution.
absl::StatusOr< StopRecordingResult > StopRecording(const std::string &recording_id, bool discard=false)
absl::StatusOr< AutomationResult > Assert(const std::string &condition)
Assert a GUI state condition.
absl::StatusOr< AutomationResult > Click(const std::string &target, ClickType type=ClickType::kLeft)
Click a GUI element.
absl::StatusOr< ListTestsResult > ListTests(const std::string &category_filter="", int page_size=100, const std::string &page_token="")
Enumerate harness tests with optional filtering.
std::string server_address_
TestRunStatus
Execution status codes returned by the harness.
ClickType
Type of click action to perform.
Main namespace for the application.
Individual assertion outcome within a harness test.
std::string error_message
std::string expected_value
Result of a GUI automation action.
std::chrono::milliseconds execution_time
std::string expected_value
std::vector< WidgetDescriptor > widgets
Aggregated metadata about a harness test.
std::optional< absl::Time > last_run_at
Result container for ListTests RPC.
std::string next_page_token
std::vector< HarnessTestSummary > tests
std::vector< AssertionOutcome > assertions
std::vector< std::string > logs
std::string replay_session_id
std::optional< absl::Time > started_at
std::chrono::milliseconds duration
Detailed execution results for a specific harness test.
std::optional< absl::Time > executed_at
std::map< std::string, int > metrics
std::vector< AssertionOutcome > assertions
std::vector< std::string > logs
int64_t screenshot_size_bytes
std::string failure_context
std::string screenshot_path
Detailed information about an individual test execution.
std::vector< std::string > assertion_failures
std::optional< absl::Time > completed_at
std::optional< absl::Time > started_at
std::string error_message
std::optional< absl::Time > queued_at