TurboBench — Automotive test automation for real benches: browser designer, RDP-native execution, turboadb/turbossh transports, Allure-grade reports
Project description
⚡ 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 | The bench PC executes the whole test natively — its adb, its scripts, its cabled devices. No per-step SSH round-trips (automatic fallback when a step needs the server) |
| ⏺ 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 option | One wheel — or a portable zip with Python embedded for benches where nothing may be installed |
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file turbobench-3.0.2-py3-none-any.whl.
File metadata
- Download URL: turbobench-3.0.2-py3-none-any.whl
- Upload date:
- Size: 550.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74970ee66c511843591788fbd8370c8550d5a153bf6d154fdaf205828fbe20e8
|
|
| MD5 |
e74e222fc5cb3858f382dca7ba487c7c
|
|
| BLAKE2b-256 |
956df289349dfb05cb32bd0c6ad6f9cc64922cac9a5913a90c2150ab24a567a4
|