Form validation testing checklist

Thirteen checks in the order a value travels: what the control does to it before anyone reads it, what the browser refuses to send, what the server decides, and what the person is left looking at when it fails. The first group comes first because every later check is about a value the field has already edited. On the forms these procedures were written against, typing one space into a text input satisfied a required attribute, a 23 character name passed a maxlength of 10 and came back stored, a value that looks empty in every interface arrived as one character that no required check refuses, and a submit guard that held against ten double clicks failed fourteen times in twenty once it sat behind one await. Each check names what it decides and the layer it decides it at.

13 checksabout 148 min end to end

What the control does before your code sees the value

What the browser refuses to send

  • How to check required field validation
    A hidden required control blocks the submit with nothing on screen, and a radio member without the attribute still reports a missing value.
    10 min
  • Input type email validation
    The browser's rule and the backend regex disagreed on seven of twelve addresses, in both directions.
    10 min
  • HTML input pattern validation
    A pattern that fails to compile under the v flag turns the field into one that accepts everything, with one console line as the only trace.
    10 min

What the server decides

What the person is left with when it fails

Take it with you

The file is the same list as Markdown checkboxes, ready to paste into a release ticket or a pull request description.

Ticks are kept in this browser only. They are not sent anywhere and other people do not see them.