Skip to main content
Arka uses pytest for automated tests. The suite covers routing, LLM failover, vision, integrations, telemetry, and skill-specific behavior.

Continuous integration

Pull requests and pushes to main run .github/workflows/ci.yml:
  1. Ruffruff check src/ tests/
  2. Pytest gate — MCP, OpenClaw/Hermes, clipboard, agent hub, and LLM fallback suites (expand as other modules stabilize)
Tag pushes still use the separate Publish workflow for PyPI. Locally you can still run the full suite with pytest tests/. Docs changes should also pass the local docs reliability checker:

Run tests

From a dev checkout:
Run a single file or test:
Install dev extras (includes pytest and ruff):

Test suite overview

The tests/ directory is organized by area:

Routing and NL parsing

LLM and providers

Vision and media

Integrations

Observability

Writing new tests

Place tests in tests/ with the test_ prefix. Follow existing patterns:
For routing tests, use arka.routing.symbolic helpers or arka.router.route() directly. Mock external APIs (LLM, web search) when tests should not hit the network.

Linting

ruff is included in the [dev] extra.

Local verification scripts

Beyond pytest, the repo includes helper scripts:
Some tests require optional extras ([chat], [charts], [drawings]) or API keys. Tests that need network access are typically mocked — if a test fails on import, install the matching extra first.