In this chapter, we saw how we can test HTTP-based applications and how we can verify the behavior of HTTP clients, HTTP servers, and even the two of them together. This is all thanks to the WSGI protocol that powers the Python web ecosystem. We have also seen how testing works in the Django world when Django's test client is used, thus we are fairly capable of writing effective test suites for whatever web framework we are going to use.
Our testing isn't fully complete by the way. We are verifying the endpoints, checking that the web pages contain the responses we expect, but we have no way to check that, once those responses are read by a web browser, they actually behave as we expected. Even worse, if there is JavaScript involved, we don't have any way to verify that the JavaScript in those web pages is actually doing what we want.
So in the next chapter, we are going to see how we can test our web applications with a real browser while also verifying the JavaScript...