An automation framework
that grows with your team.

Write, run, and analyze automated tests at the speed of thought. A next-gen platform built for developers who refuse to compromise.

⬇ Download Orbs Studio View Docs →

See Orbs in Action

Build and run your first test in minutes..

orbs-cli — zsh
~/project $ pip install orbs-cli
Successfully installed orbs-cli-0.6.0
 
~/project $ orbs init web-project --template=web
 ✅ Project initialized at /path/to/web-project (template: web)
 
~/project $ orbs run testsuites/login.yml --env=dev
Python version: 3.9.5
Python executable: /usr/local/bin/python3
Orbs CLI version: 0.6.0
🌍 Selected environment: dev
============================================================
ORBS TEST EXECUTION SUMMARY
============================================================
Total Tests : 1
Passed : 1
Failed : 0
Skipped : 0
Retries : 0
Duration : 11s
Environment : dev
Browser : Chrome (headed)
Self-Healing : Enabled
Retry : Disabled
============================================================
STATUS: PASSED
============================================================
✅ ORBS TEST EXECUTION COMPLETED (suite/collection finished)
 
Tests: 1 passed, 0 failed  |  Duration: 11s
~/project $ 
10×
faster execution in optimized scenarios
<50ms
CLI startup time (typical)
CI/CD
ready out of the box
custom keyword plugins

Everything you need.
Nothing you don't.

Orbs strips away the bloat of legacy test platforms and gives developers a toolset that actually matches how they work.

Fast & Lightweight

Built on a pure Python engine with zero JVM overhead. Run thousands of tests in seconds, not minutes. Local or distributed.

python-native
🖥

Orbs Studio

A beautiful Electron + React desktop app for test authoring, live execution, and visual debugging. Dark mode by default. Always.

electron + react

CLI-First Workflow

Every feature reachable via orbs run. Script it, alias it, schedule it. Your terminal is your home.

orbs-cli
🧩

Extensible Plugins

Write custom keywords in plain Python. Share them via PyPI. The entire ecosystem, in your hands, with zero proprietary lock-in.

open plugin API

Parallel Orchestration

Run multiple test suites concurrently with full control over concurrency and timing.

test suite collection
🔁

CI/CD Friendly

GitHub Actions, GitLab CI, Jenkins, Bitbucket Pipelines. One YAML snippet and you're fully automated. No agents required.

any CI pipeline

Simple by design.

Three steps from zero to automated. No PhD required.

Create Tests

Write test cases in Orbs' clean YAML syntax or use Studio's visual editor. Organize by suite, tag, and environment. Reuse keywords across your entire project.

Run via CLI or Studio

Fire off tests from the terminal with orbs run or hit the run button in Studio. Watch live output stream in as results roll in, test by test.

📊

Analyze Results

Get structured JSON reports, HTML dashboards, and JUnit XML — ready for any CI artifact collector. See exactly what failed, why, and on which line.

Meet Orbs Studio.

A full desktop IDE for test authoring. Switch between visual Table view, raw Script mode, Data Binding, and Event Hooks — all in one app.

● Dev ▾
Platform ▾
▶ Run
● Record
👁 Spy
⬡ Debug
EXPLORER
📁__pycache__
📁.vscode
📁data
📁environments
📁include
📁listeners
📊reports
settings
📁testcases
📄.gitkeep
🐍 login.py
📁testsuite_collections
📁testsuites
✏ login
📄__init__.py
🐳Dockerfile
🐍main.py
📄requirements.txt
web-project
🐍 login.py ×
⚡ login.yml ×
Table
Script
Data Binding
#PLATFORMKEYWORD PARAMETERSCOMMENTACTIONS
1 Script
url = config.target("url", "htt…
— raw script — optional comment…
2Web
open
Open a URL in the browser
url*:url(raw) failure_handling:STOP_ON_FAILURE
optional comment…
3Web
set_text
Set text into an element with retry logic
locator*:selector · xpath · //input[@id='user-name'] text*:config.target("username", "standard_user")(raw) timeout:None clear_first:True retry_count:3 failure_handling:STOP_ON_FAILURE
optional comment…
4Web
set_text
Set text into an element with retry logic
locator*:selector · xpath · //input[@id='password'] text*:config.target("password", "secret_sauce")(raw) clear_first:True retry_count:3 failure_handling:STOP_ON_FAILURE
optional comment…
5Web
click
Click on an element with retry logic for stale elements
locator*:selector · xpath · //input[@id='login-button'] timeout:None retry_count:3 failure_handling:STOP_ON_FAILURE
optional comment…
6Web
close
Close current browser window
no parameters optional comment…
web-project🐍 login.py · Python · 445 B  🌐 Connected  Ln 1, Col 1   09:48 AM
Table
Script
Data Binding
1
2
3
4
5
6
7
8
9
10
11
12
13
# Test case: login

from orbs.keyword.web import Web
from orbs.config import config

def run():
    url = config.target("url", "https://www.saucedemo.com")
    Web.open(url)
    Web.set_text("xpath=//input[@id='user-name']", config.target("username", "standard_user"))
    Web.set_text("xpath=//input[@id='password']", config.target("password", "secret_sauce"))
    Web.click("xpath=//input[@id='login-button']")
    Web.close()
web-project🐍 login.py · Python · 445 B  🌐 Connected  Ln 1, Col 1   09:48 AM
Table
Script
⚡ Events
💡 Drag rows to reorder  ·  1 test case(s) · 1 enabled
Enabled Test Case Path Actions
testcases/login.py 🗑
web-project⚡ login.yml · YAML · 59 B  🌐 Connected  Ln 1, Col 1   09:48 AM
Table
Script
Data Binding
Data Source
select data file from project data/
Scenario Bind
(none) ▾

Columns → Variable

No mappings yet (load CSV to auto-map)

Preview

Where

No conditions

Paste CSV here, first row as headers
username,password
standard_user,secret_sauce
No preview data
web-project🐍 login.py · Python · 445 B  🌐 Connected  Ln 1, Col 1   09:48 AM

Your tests deserve
better tooling.

Download Orbs Studio and install the CLI in under two minutes.
No account required. No credit card. Just better testing.

Loading latest release assets...
macOS · Windows · Linux  ·  Python 3  ·  Apache 2 License