Run independent phases in parallel.
Set workers and dependencies. Run independent phases together while instruments take their measurements.
Explore the capabilitytofupilot framework · OPEN SOURCE · MIT
Build production tests in Python and YAML. Coordinate phases, instruments and fixture slots with an execution engine you can inspect and adapt.
execution:
strategy: phase_first
workers: 4
on_first_failure: continueLOGIC + LIMITS
Record a named measurement. Its units and limits travel with the result.
name: PCB Functional Test
version: 1.4.2
plugs:
- name: multimeter
python: plugs.dmm:Multimeter
main:
- name: Reference voltage
python: phases.voltage:check_voltage
measurements:
- name: reference_voltage
unit: V
validators:
- operator: ">="
expected_value: 3.250
- operator: "<="
expected_value: 3.350def check_voltage(measurements, multimeter):
measurements.reference_voltage = (
multimeter.read_voltage()
)import pyvisa
class Multimeter:
def __init__(self):
self.rm = pyvisa.ResourceManager()
self.device = self.rm.open_resource(
"TCPIP0::192.168.1.42::INSTR"
)
def read_voltage(self):
return float(self.device.query("MEAS:VOLT:DC?"))
def __del__(self):
self.device.close()
self.rm.close()tofupilot run ./pcb-functional-testOPERATOR UI
Collect a serial number, confirm a fixture is closed, or guide a visual inspection. Bind operator inputs to the unit and its measurements.
See operator components
ui:
components:
- key: serial_number
type: text_input
label: Scan the board
bind: unit.serial_number
required: trueBUILT AROUND THE TEST BENCH
Set workers and dependencies. Run independent phases together while instruments take their measurements.
Explore the capabilityDefine a slot for each unit. Track its phases, serial number and outcome independently within one execution.
Explore the capabilityWrite plugs as Python classes. Share resources at slot, execution or station scope, with a managed lifecycle.
Explore the capabilityTHE CONNECTED WORKFLOW
Exercise phases and equipment connections on your bench with the CLI.
Local developmentConnect a station to the platform and deploy the procedure version it should run.
Station deploymentsQueue completed runs locally, then upload automatically when your connection returns.
Offline upload queueINSPECT IT. ADAPT IT. OWN YOUR TESTS.
MIT-licensed: inspect the engine, adapt your tests, and run locally. Connected dashboards, deployments, and AI analysis have separate plans.
Moving from TestStand? Map your sequence to Python