mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-02 11:07:10 +00:00
* proto(driver): drop launcher_activity from LaunchRequest * refactor(driver): rename Driver to DeviceDriver, drop launcherActivity from Launch * refactor(driver): rename package maestro to sidecar * feat(driver): add ChromeDriver backed by chromedp * feat(hierarchy): replace XML parser with TreeNode JSON parser * refactor(driver): update mock and runner to DeviceDriver, drop launcherActivity * feat(runner): add platform routing for web vs sidecar * test(verifier): update hierarchy fixtures from XML to TreeNode JSON * feat(sidecar): extract readLogcat/readProcMetrics; add MaestroDriverBackend - Extract readLogcat() and readProcMetrics() as internal package-level helpers parameterised by serial - Add MaestroDriverBackend wiring maestro-client AndroidDriver - Drop launcherActivity from DriverBackend interface and StubDriverBackend - Add maestro-utils and micrometer-core as explicit compile deps * refactor(sidecar): inject DriverBackend into DriverService; drop launcherActivity - Remove serial and default backend from DriverService constructor - Make backend a required parameter - Drop launcherActivity from launch RPC handler - Create MaestroDriverBackend in Main.kt when platform is android * test(sidecar): update tests for dropped launcherActivity and required backend * chore(sidecar): remove unnecessary micrometer-core direct dependency
108 lines
2.1 KiB
Protocol Buffer
108 lines
2.1 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package sanderling.driver.v1;
|
|
|
|
option go_package = "github.com/priyanshujain/sanderling/proto/driverpb;driverpb";
|
|
option java_package = "dev.sanderling.driver.v1";
|
|
option java_multiple_files = true;
|
|
|
|
service Driver {
|
|
rpc Launch(LaunchRequest) returns (Empty);
|
|
rpc Terminate(Empty) returns (Empty);
|
|
|
|
rpc Tap(Point) returns (Empty);
|
|
rpc TapSelector(Selector) returns (Empty);
|
|
rpc InputText(Text) returns (Empty);
|
|
rpc Swipe(SwipeRequest) returns (Empty);
|
|
rpc PressKey(PressKeyRequest) returns (Empty);
|
|
|
|
rpc Screenshot(Empty) returns (Image);
|
|
rpc Hierarchy(Empty) returns (HierarchyJSON);
|
|
rpc RecentLogs(RecentLogsRequest) returns (LogEntries);
|
|
|
|
rpc WaitForIdle(Duration) returns (Empty);
|
|
rpc Health(Empty) returns (HealthStatus);
|
|
rpc Metrics(MetricsRequest) returns (MetricsResponse);
|
|
}
|
|
|
|
message Empty {}
|
|
|
|
message LaunchRequest {
|
|
string bundle_id = 1;
|
|
bool clear_state = 2;
|
|
}
|
|
|
|
message Point {
|
|
int32 x = 1;
|
|
int32 y = 2;
|
|
}
|
|
|
|
message Text {
|
|
string value = 1;
|
|
}
|
|
|
|
message Selector {
|
|
string value = 1;
|
|
}
|
|
|
|
message Image {
|
|
bytes png = 1;
|
|
int32 width = 2;
|
|
int32 height = 3;
|
|
}
|
|
|
|
message HierarchyJSON {
|
|
string json = 1;
|
|
}
|
|
|
|
message Duration {
|
|
int64 millis = 1;
|
|
}
|
|
|
|
message HealthStatus {
|
|
bool ready = 1;
|
|
string version = 2;
|
|
string platform = 3;
|
|
}
|
|
|
|
message SwipeRequest {
|
|
Point from = 1;
|
|
Point to = 2;
|
|
int64 duration_millis = 3;
|
|
}
|
|
|
|
message PressKeyRequest {
|
|
// Logical key name. Supported: "back", "home", "enter", "tab", "up",
|
|
// "down", "left", "right".
|
|
string key = 1;
|
|
}
|
|
|
|
message RecentLogsRequest {
|
|
// Lower bound as unix-epoch milliseconds; entries at or after this are
|
|
// returned.
|
|
int64 since_unix_millis = 1;
|
|
// Minimum level: "E", "W", or "I". Empty defaults to "E".
|
|
string level_at_least = 2;
|
|
}
|
|
|
|
message LogEntries {
|
|
repeated LogEntry entries = 1;
|
|
}
|
|
|
|
message LogEntry {
|
|
int64 unix_millis = 1;
|
|
string level = 2;
|
|
string tag = 3;
|
|
string message = 4;
|
|
}
|
|
|
|
message MetricsRequest {
|
|
string bundle_id = 1;
|
|
}
|
|
|
|
message MetricsResponse {
|
|
double cpu_percent = 1;
|
|
int64 heap_bytes = 2;
|
|
int64 total_memory_bytes = 3;
|
|
}
|