UI tests use an HTTP proxy capable of recording and replaying
request/response pairs. When tests are added/changed, the developer runs Nest
locally via Vagrant, points the application at this local instance, runs the
tests and hits "Record". All future development tasks that do not effect the
client-server interation (trivial UI changes, refactorings, etc.) may be run
with this recorded data. If a test should perform some action that modifies
server state (a PUT request, for instance), the tests explicitly intercept
the request(s) and respond with some dynamic value.
Implement the UI testing approach originally proposed in https://github.com/bocoup/api/issues/110 (warning I am about to quote myself):