Hi Alex
Our code goes through a series of steps before reaching end users. Currently these steps are:
1) Local development
2) local unit tests
3) ci build
4) ci unit tests
5) release to staging environment (where we could manually test the application or run proper integration tests, but currently doesn't)
6) release to end users.
We catch most errors in 1 & 2 with the occasional bug surfacing in 3 & 4 when shared libraries are updated at an unfortunate time.
Missing bindings however only surface in 1 & 5 & 6 because we use a different module in tests.
We can catch this by doing manual tests in 1 or 5 but I really want to have that process automated.
As you say, it would be great if the typesystem could catch the missing binding, but I don't see how that would be possible. So basically I would like to understand how others deal with this.
As an added note I would prefer to keep out build pipeline as simple as possible, so would rather avoid introducing integration testing in step 5 if at all possible.