---
# System prepended metadata

title: lnprototest design
tags: [design, lnprototest]

---

## Summary

- Evaluation: https://hackmd.io/EahK_z9-Q6CLMZIU28aJIA?view

### Introduction

lnprototest should implement just the runner
and nothing else, so we should write test in the 
following way

```python
def test_init_sender_side(runner: Runner):
    conn = runner.connect(connprivkey="03")
    init = conn.recv()
    assert init.type = pyln.proto.Init.type
    
    our_send = pyln.proto.Init(...)
    conn.send(our_send)
    counterparty_init = conn.recv()
    assert counterparty_init.type == pyln.proto.Init.type
```

There are some design question to improve it, that are
how a tests will fail with lnprototest? in other workds
if the connection return an error how this will be handle?

The currect lnprototest through `EventError` or exception but this with the current design is not true anymore.

--- 
- Another problem is the dynamic dispach of the python code!