Files
wehub-resource-sync 91e75e620b
CI: cua-driver distro-compat matrix / debian:12 (glibc 2.36) (push) Has been cancelled
CI: SPDX Headers / Check SPDX headers (warn-only) (push) Has been cancelled
CD: Docs MCP Server / build (linux/amd64) (push) Has been cancelled
CD: Docs MCP Server / build (linux/arm64) (push) Has been cancelled
CD: Docs MCP Server / merge (push) Has been cancelled
CI: cua-driver distro-compat matrix / Resolve release version (push) Has been cancelled
CI: cua-driver distro-compat matrix / fedora:41 (glibc 2.40) (push) Has been cancelled
CI: cua-driver distro-compat matrix / rockylinux:9 (glibc 2.34) (push) Has been cancelled
CI: cua-driver distro-compat matrix / ubuntu:22.04 (glibc 2.35) (push) Has been cancelled
CI: cua-driver distro-compat matrix / ubuntu:24.04 (glibc 2.39) (push) Has been cancelled
CI: cua-driver distro-compat matrix / Distro compat summary (push) Has been cancelled
CI: Rust Linux unit / Rust Linux unit and compile (push) Has been cancelled
CI: Rust Windows unit / Rust Windows unit and compile (push) Has been cancelled
CI: Nix Linux Rust source / Nix / compositor build (push) Has been cancelled
CI: Nix Linux Rust source / Nix / driver package (push) Has been cancelled
CI: Nix Linux Rust source / Nix / Rust unit tests (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:03:19 +08:00
..

cua-bench

Framework for benchmarking Computer-Use Agents with verifiable cross-platform environments.

Documentation - Installation, guides, and API reference.

Running Tests

The test suite covers the core gym interface, worker system, and benchmark runners.

Install dev dependencies

uv pip install -e ".[dev,browser,server,rl]"

Note: The browser extra installs Playwright for e2e tests with the simulated provider.

Run all tests

uv run --with pytest pytest cua_bench/tests/ -v

Run specific test modules

# Core gym interface (make, reset, step, evaluate)
uv run --with pytest pytest cua_bench/tests/test_gym_interface.py -v

# HTTP worker client (/reset, /step endpoints)
uv run --with pytest pytest cua_bench/tests/test_worker_client.py -v

# Worker server endpoints and action serialization
uv run --with pytest pytest cua_bench/tests/test_worker_server.py -v

# Benchmark runner functions
uv run --with pytest pytest cua_bench/tests/test_run_benchmark.py -v

# Worker manager (spawning/managing workers)
uv run --with pytest pytest cua_bench/tests/test_worker_manager.py -v

# Action parsing
uv run --with pytest pytest cua_bench/tests/test_actions.py -v

Run tests with coverage

uv run --with pytest --with pytest-cov pytest cua_bench/tests/ -v --cov=cua_bench --cov-report=term-missing

Test Structure

Test Module What it Tests Approach
test_gym_interface.py Core Environment API: make(), reset(), step(), evaluate() E2E - Real simulated (Playwright) environments
test_worker_client.py HTTP client for worker servers (CBEnvWorkerClient) Mock server - Uses @patch("requests.post") to mock HTTP responses
test_worker_server.py FastAPI endpoints and action serialization Unit - Action serialize/deserialize, request models, simple endpoints
test_run_benchmark.py run_benchmark(), run_single_task(), run_interactive() E2E - Real simulated (Playwright) environments
test_worker_manager.py Workers + dataloader training loop E2E - Real workers, real envs, mock model for actions
test_actions.py Action string parsing (repr_to_action()) Unit - Pure function tests

Test Approach Philosophy

  • E2E tests use real simulated (Playwright) environments. The simulated provider is fast enough for testing.
  • Mock server tests (test_worker_client.py) mock HTTP responses to test client logic in isolation.
  • Mock model (test_worker_manager.py) uses a mock model that returns simple actions to test the dataloader training loop without requiring a real ML model.

Infrastructure Benchmarking

Measure the throughput of the worker infrastructure:

uv run python -m cua_bench.scripts.benchmark_workers --num_workers 16 --num_steps 10

Options:

Flag Default Description
--num_workers 16 Number of parallel workers
--num_steps 10 Steps per worker
--task_path None Path to task directory (creates temp if empty)

Output:

  • Average reset time
  • Average step time
  • Average finish time
  • Step throughput (steps/sec)