// TestLab · v1.4.0
Multi-ECU campaign runner with UDS, DoIP, SOME/IP, and SOVD. Runs in CI against VirtualBus with no hardware, no kernel modules, and no Docker. HTML reports, trend analysis, and AI failure explanation included.
// the library
Direct API
async with UdsTester("vcan0",
rx_id=0x7DF, tx_id=0x7E8) as ecu:
await ecu.session(Session.EXTENDED)
await ecu.security_access(level=1)
vin = await ecu.read_did(0xF190)
await ecu.write_did(0xF187, b"PARTNUM0001")
await ecu.clear_dtcs(group=0xFFFFFF)
dtcs = await ecu.read_dtcs()
await ecu.session(Session.DEFAULT)
Campaign YAML
jobs:
eol_check:
description: End-of-line UDS validation
on_failure: continue
steps:
- action: session
value: extended
- action: security_access
level: 1
- action: read_did
did: "0xF190"
expect_ok: true
- action: write_did
did: "0xF187"
data: "50415254"
- action: clear_dtc
group: "0xFFFFFF"
- action: read_dtc
expect_nrc: null
testlab explain reads the campaign result and explains each failure with the specific YAML contexttestlab serve opens a browser view of your ECU fleet, campaign history, and live run outputRun and report
testlab-run \
--config diagnostics_config.yaml \
--campaign campaigns/eol_check.yaml \
--json reports/run.json
testlab report \
--results reports/run.json \
--out report.html
testlab explain \
--results reports/run.json
VirtualBus, VirtualSomeIpBus, Docker ECU simulation, multi-ECU workspace, and a live dashboard — all shipped, no extra configuration.
# Start the ECU simulator
docker compose -f docker/docker-compose.yml up -d
# Run a mixed UDS + SOME/IP campaign
testlab-run \
--workspace testlab_workspace.yaml \
--campaign campaigns/someip_validation.yaml \
--job hvac_validation \
--someip-virtual \
--json reports/run.json
# Open the live dashboard
testlab serve --reports ./reports
# → http://127.0.0.1:8765
No cloud. No auth. No hardware.
// pricing
TestLab
€990/yr · per developer
Full xaloqi-tester library, all transports, all features
// also from xaloqi