Repository navigation
Home
ODD Games edited this page Oct 14, 2026
·
23 revisions
Bugpunch is ODD Games' Unity SDK for crash reporting, remote debugging and automated UI testing. This wiki covers the UI automation API: finding elements with Search and driving them with real Input System events through ActionExecutor.
For crash reporting, the Remote IDE, analytics and the dashboard, see the full docs at bugpunch.com/docs.
Add to your Packages/manifest.json:
{
"dependencies": {
"au.com.oddgames.bugpunch": "https://github.com/oddgames/bugpunch-sdk.git#v0.8.227"
}
}using System.Threading.Tasks;
using NUnit.Framework;
using ODDGames.BugpunchSdk;
using static ODDGames.BugpunchSdk.ActionExecutor;
[TestFixture]
public class LoginTests
{
[Test]
public async Task Login_WithValidCredentials_Succeeds()
{
await UnityEngine.SceneManagement.SceneManager.LoadSceneAsync("LoginScene");
// Fill the form using the labels next to each field
await TextInput(Adjacent("Username:"), "testuser");
await TextInput(Adjacent("Password:"), "password");
// Submit and verify
await Click(Text("Login"));
await WaitFor(Name("MainMenu"), timeout: 10);
}
}Open Window > General > Test Runner, select the PlayMode tab and run your tests.
- Unity 6000.3 or newer
- Input System package (Active Input Handling set to Input System Package (New) or Both)
- TextMeshPro, NUnit and the other dependencies resolve automatically from
package.json
- Installation
- Creating Your First Test
- UIAutomationTestFixture - Optional base class pattern (input isolation, scene loading)
-
Test Attributes - Organising tests,
[BugpunchTestReset]
Basic Filters
- Search Queries - Overview of finding UI elements
- Search.Name - Find by GameObject name
- Search.Text - Find by text content
- Search.Type - Find by component type
- Search.Texture - Find by texture/sprite name
- Search.Path - Find by hierarchy path
- Search.Tag - Find by Unity tag
- Search.Any - Find by name, text, sprite, or path
Proximity Filters
- Search.Adjacent - Find by adjacent label text
- Search.Near - Find nearest element to text
Hierarchy Filters
- Search.Hierarchy - HasParent, HasAncestor, HasChild, HasDescendant, HasSibling, GetParent, GetChild
Spatial Filters
- Search.Spatial - InRegion, Visible
Ordering & Selection
- Search.Ordering - First, Last, Skip, Take, OrderBy, Randomize
Modifiers
- Search.Modifiers - Not, With, Where, Or, Interactable
- Availability Filtering - IncludeInactive, IncludeOffScreen, Interactable
Combining
- Search Chaining - Combine multiple conditions
- Iterating Elements - FindAll, FindItems and per-item actions
Reflection
- Reflection Access - Search.Reflect(), Property(), Invoke(), game state access
- Indexers - Array, list, and dictionary access
- Test Actions - Overview of every action
- Click Actions - Click, DoubleClick, TripleClick, Hold, ClickDropdown, ClickSlider
- Text Input - TextInput, Type, PressKey, PressKeys, HoldKey
- Drag Actions - Drag, DragTo, DragFromTo, DragSlider, Scroll, ScrollTo
- Gesture Input - Swipe, Pinch, Rotate, TwoFingerSwipe
- Wait and Find - Wait, WaitFor, WaitForNot, Find, FindAll, SceneChange
- Assertions - NUnit assertions with Find and GetValue
- GameObject Manipulation - Disable, Enable, Freeze, Teleport, NoClip, Clip
- Test Report - Action logging, screenshots and hierarchy snapshots
- Server Integration - Connecting the SDK and uploading test sessions to Bugpunch
- Best Practices - Writing maintainable tests
- Samples - Sample scene and example tests
Basic Filters
Proximity
Hierarchy
Spatial
Ordering
Modifiers
Combining
Reflection
- Test Actions
- Click Actions
- Text Input
- Drag Actions
- Gesture Input
- Wait and Find
- Assertions
- GameObject Manipulation