async def METHOD_NAME(messenger: CanMessenger, args: argparse.Namespace) -> None:
    """Run the test."""
    target_z = NodeId["head_" + args.mount[0]]
    target_pipette = NodeId["pipette_" + args.mount]
    network_info = NetworkInfo(messenger)
    found = set(await network_info.probe({NodeId.head, target_pipette}, 10))
    if NodeId.head not in found or target_pipette not in found:
        raise RuntimeError(f"could not find targets for {args.mount} in {found}")
    await messenger.send(
        node_id=NodeId.broadcast, message=message_definitions.EnableMotorRequest()
    )
    sensor_cap = Capturer()
    messenger.add_listener(sensor_cap, None)
    move_groups = [
        # Group 0 - home
        [create_home_step({target_z: float64(-1000)}, {target_z: float64(-50)})],
        # Group 1
        [
            create_step(
                {target_z: float64(args.prep_distance)},
                {target_z: float64(args.prep_speed)},
                {},
                float64(args.prep_distance / args.prep_speed),
                [target_z],
            ),
            create_step(
                {target_z: float64(args.distance)},
                {target_z: float64(args.speed)},
                {},
                float64(args.distance / args.speed),
                [target_z],
                MoveStopCondition.sync_line,
            ),
        ],
    ]
    threshold_payload = payloads.SetSensorThresholdRequestPayload(
        sensor=fields.SensorTypeField(SensorType.capacitive),
        sensor_id=fields.SensorIdField(SensorId.S0),
        threshold=Int32Field(
            int(args.threshold * sensor_types.sensor_fixed_point_conversion)
        ),
        mode=fields.SensorThresholdModeField(SensorThresholdMode.auto_baseline),
    )
    threshold_message = message_definitions.SetSensorThresholdRequest(
        payload=threshold_payload
    )
    if args.verbose_monitoring:
        binding = 3
    else:
        binding = 1
    stim_payload = payloads.BindSensorOutputRequestPayload(
        sensor=fields.SensorTypeField(SensorType.capacitive),
        sensor_id=fields.SensorIdField(SensorId.S0),
        binding=fields.SensorOutputBindingField(binding),
    )
    stim_message = message_definitions.BindSensorOutputRequest(payload=stim_payload)
    reset_payload = payloads.BindSensorOutputRequestPayload(
        sensor=fields.SensorTypeField(SensorType.capacitive),
        sensor_id=fields.SensorIdField(SensorId.S0),
        binding=fields.SensorOutputBindingField(0),
    )
    reset_message = message_definitions.BindSensorOutputRequest(payload=reset_payload)
    runner = MoveGroupRunner(move_groups=move_groups)
    await messenger.send(target_pipette, threshold_message)
    await messenger.send(target_pipette, stim_message)
    position = await runner.run(can_messenger=messenger)
    if args.verbose_monitoring:
        print(f"Sensor data: {sensor_cap.get_all()}")
    print(f"Position: {position[target_z]}")
    await messenger.send(target_pipette, reset_message)
    await asyncio.get_running_loop().run_in_executor(
        None, lambda: input("press enter to home")
    )
    runner = MoveGroupRunner(move_groups=[move_groups[0]])
    await runner.run(can_messenger=messenger)
    await messenger.send(NodeId.broadcast, message_definitions.DisableMotorRequest())