quality interactive tests with Lynx, the server-side browser

Working on a web page test on a server, but can’t view the page in a normal web browser? It’s easy enough to transfer the HTML to your local computer, or… use a text-mode browser!

The Lynx browser is tiny, fast, and supports a good part of modern web pages. It’s a great tool for quickly getting a rough idea of what your page looks like.

Example: my Flask app refuses to handle authentication correctly. So, I write a API test to log in to myserver, capture the response, then write it to a server-side HTML file.  Next I use Lynx to view it so I can see what it’s doing!

Here’s my Registration test:

def test_post(client):
    “validate page that uses POST”
    rv = client.post(‘/auth/register’, data=dict(
        email=’test@example.com’,
        username=’test’,
        password=’test’,
    ))
    if 1:
        with open(‘zoot.html’, ‘w’) as pagef:
            pagef.write(rv.data)

Run the test

pytest

Next, use the server-side browser to view my output:

lynx -dump -stdin < zoot.html

Output:

   (BUTTON) Toggle navigation [1]test
     * [2]Home

     * [3]Log In

Register

   Email test@example.com____
   Username test________________
   Password ____________________

   Passwords must match.
   Confirm password ____________________

   This field is required.
   Register

Note the “Passwords must match” bit. Ah, there’s my bug. In the POST I’d forgotten to send both the password and validating password2 fields.  Bug fixed, thanks to Lynx!