About this project

Gua is a runtime automation protocol for games inspired by Playwright. It exposes a running game's UI as a Semantic UI Tree, allowing automated tests, inspectors, and AI agents to locate controls by ID, role, text, and state rather than fragile image recognition or screen coordinates. It supports Godot 4.7 through a GDScript addon backed by GDExtension and Unity 6 through a package that automatically reflects UI Toolkit, uGUI, and TextMeshPro controls on Windows x64, Linux x64, and Intel/Apple Silicon macOS Mono builds. Beyond UI automation, Gua provides a World Object Tree for semantic game-world information, Semantic Game Actions and opt-in Raw Input for gameplay, deterministic virtual time through GuaClock, Recording, visual comparison, and an exposure policy that limits what AI players can see and which UI operations they may use. Native games can connect through gui-mcp, while Godot Web Export and Unity WebGL builds can use the experimental gua-webmcp browser-native adapter. Gua is distributed as several NuGet packages: Gua.Core for C ABI bindings, Gua.Testing for locators, waits, and assertions in .NET tests, Gua.Testing.Godot and Gua.Testing.Unity for engine-specific test hosts, Gua.Runtime for adapter authors, Gua.Testing.Visual for PNG baseline comparison, Gua.Testing.Snapshots for deterministic UI and World JSON baselines, and Gua.Testing.Recording for replayable user journeys. A Gua Inspector provides browser and Windows desktop UIs for inspecting the semantic tree, node state, screenshots, and logs. The link1345/gua-tester repository offers reusable GitHub Actions workflows for running Godot and Unity tests in CI.