⚡ TurboBench
Automotive test automation for real benches.
Design tests in the browser · run them in the RDP machine · evidence-rich reports.
pip install turbobench → tb → your browser opens. That's the whole setup.
The problem it solves
Automotive targets — Android head units, Linux/QNX ECUs, anything on adb, SSH or a COM port — live cabled to bench PCs that you reach over RDP. Testing them usually means brittle personal scripts, copy-pasted terminals, and screenshots pasted into spreadsheets.
TurboBench replaces that with one workflow:
design in the browser → the RDP machine runs the test itself → report with evidence
- Manual engineers build tests from 100+ ready templates — no code.
- Python engineers drop in any CLI script and it becomes a drag-and-drop step.
- Everyone gets the same reports: expected vs actual per step, webcam photos/videos, screen recordings, DLT/logcat attachments, trends.
Highlights
| 🎨 Visual designer | Flow canvas + list editor, expected results (contains / wildcard / regex / must-NOT-contain), retries, loops, parallel groups, pause-before, soft steps |
| 🖥 Run in RDP | Start signal only — the bench PC executes the whole test natively and stores the results; shut your laptop mid-run and they sync when you're back. Nothing to preinstall and nothing to copy: TurboBench provisions a bare bench itself (embedded Python + adb), ships your script files with the job, and auto-installs their pip packages from imports/requirements.txt — all pushed over SSH, per-user, no admin, no internet on the bench |
| ⏺ Recorder | Try real commands live, keep the good ones, save as a test case — record & playback without screen-scraping |
| 🔁 Stability runs | Endurance cycles with stop conditions (duration, consecutive failures, failure rate) and per-cycle results |
| 🧩 Any script is a step | .py / .ps1 / .bat / .exe with args — run directly, or register once and pick from a dropdown. Custom plugins add whole new step families in ~20 lines (hot-reload, no restart) |
| 🚗 Automotive built-ins | DLT capture · power control · ETFW · serial console · adb & SSH template libraries · webcam evidence · PC-screen recording · RDP desktop capture |
| 📊 Reports that convince | Allure-style + Playwright-style HTML, true Allure export with trend history, JUnit, suite roll-ups, email, Jira Xray (Cloud and Server/DC) |
| 📅 Scheduler | Once / daily / weekly / cron, active windows, end-after-N-runs, stop-on-fail |
| 🔐 Team-ready | Projects with target capability profiles, AES-256-GCM credential vault, roles, authorship & versioning, resource locks |
| 📦 Zero-dependency everywhere | One wheel, or a portable zip with Python embedded — and RDP benches need nothing at all: the runtime is pushed over SSH on the first run |
Quick start
pip install turbobench # pulls turboadb + turbossh automatically
tb # starts the server and opens the browser
First five minutes:
- Configuration — add your RDP machine / SSH device / Android serial (auto-detected dropdowns, one Test button each).
- Test Designer — drop in templates ("Check boot completed", "Webcam photo", "Run a script/.exe"), set expected results.
- Run ▸ Run on: your RDP machine — the bench executes it and the Execution console streams every step live.
- Reports — open the run: expected vs actual, evidence gallery, Allure, email, Xray.
Locked-down bench? Use the portable build
python scripts/build_pypi.py # dist/turbobench-<ver>.whl (UI included)
python scripts/build_portable.py # dist/turbobench-portable-win64.zip
Unzip on the bench, double-click TurboBench.cmd — Python is inside, no
installation, no admin rights.
Your scripts, three ways
1 · Just run it — fastest, zero setup
Action: Run a script/.exe file (with args) [system.run_file]
path: C:/bench/power_control.py
args: ["normal_power_cycle", "--port", "COM5"]
Interpreter comes from the extension (.py→Python, .ps1→PowerShell,
.bat→cmd, .sh→bash, else run directly). Add expected-output rules and the
Attach output toggle for evidence.
2 · Register it once — then it's a dropdown for the whole team
Register under Templates → Scripts (path, interpreter, subcommands). Steps
then use Run a registered script subcommand and pick from a list — nobody
types ids or paths twice.
3 · Write a plugin — a whole new step family in ~20 lines
Plugins → Download starter plugin, edit adapter.py, unzip into
data/plugins/, press Reload plugins. Your actions appear in the designer
immediately — no restart, no rebuild.
Every path supports cwd, env, timeout, retries, repeat, continue-on-fail,
{{steps.N.output}} placeholders, and file-pattern assertions
(match_file + match_pattern).
Two eyes on the target
- Webcam steps use the USB camera pointed at the display — proof of what physically showed.
- PC screen steps capture the bench PC's desktop (screenshot or
recording); the
RDP machine: desktop …steps do the same on a remote box. - Live Feed streams either one, clearly labelled.
Architecture in 30 seconds
Browser (React) ── REST/WS ── FastAPI server ── SQLite ── artifacts/
designer · recorder · scheduler · reports · vault · plugins
│
"Run in RDP": test pushed over SSH (turbossh), executed natively
by the bench PC (its adb via turboadb, its scripts, its devices),
results + evidence pulled back automatically
│
Android · Linux · QNX · serial · power rig · webcam — cabled to the bench
Exports keep you portable: every test case downloads as a standalone
pytest file that runs anywhere with plain pytest.
Development
scripts/run-dev.ps1 # backend :8000 + Vite HMR frontend :5173
python -m pytest tests/ # unit suite
License
MIT © Naveen Daniel Kennedy — built on turboadb and turbossh.
Metadata
Release files for turbobench 3.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| turbobench-3.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / turbobench-3.3.0-py3-none-any.whl
| Download URL | turbobench-3.3.0-py3-none-any.whl |
|---|---|
| Size | 576.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e00521c7ae101fb0f2e2c8a006e4076acc662b13945a3d4ece098b0629efd543
|
|
BLAKE2b-256 checksum How to use checksums |
d7a5c1fa4429fb897aeeaa8988fdfe34280c020ff9a91e8d1bbcda6433c2a15e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|