A datetime-local input fields with a bad user input should make validity.badInput true and have :invalid style. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". Initial state. The elment has no value. PASS colorOf(input) is not invalidStyleColor PASS input.validity.badInput is false Set a value to the first sub-field. The element becomes badInput. PASS colorOf(input) is invalidStyleColor PASS input.validity.badInput is true Set an invalid date, 2012-02-31. PASS input.validity.badInput is false PASS input.value is "" PASS input.validity.badInput is true PASS colorOf(input) is invalidStyleColor PASS successfullyParsed is true TEST COMPLETE