Use descendant invalidation sets for :valid and :invalid pseudo classes. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". PASS getComputedStyle(inputValid, '').backgroundColor is transparent PASS internals.updateStyleAndReturnAffectedElementCount() is 1 PASS getComputedStyle(inputValid, '').backgroundColor is green PASS getComputedStyle(inputInvalid, '').backgroundColor is transparent PASS internals.updateStyleAndReturnAffectedElementCount() is 1 PASS getComputedStyle(inputInvalid, '').backgroundColor is green PASS getComputedStyle(formInvalid, '').backgroundColor is transparent PASS internals.updateStyleAndReturnAffectedElementCount() is 2 PASS getComputedStyle(formValid, '').backgroundColor is green PASS getComputedStyle(formInvalid, '').backgroundColor is transparent PASS internals.updateStyleAndReturnAffectedElementCount() is 2 PASS getComputedStyle(formInvalid, '').backgroundColor is green PASS getComputedStyle(maxlengthInvalid, '').backgroundColor is transparent PASS internals.updateStyleAndReturnAffectedElementCount() is 1 PASS getComputedStyle(maxlengthInvalid, '').backgroundColor is green PASS getComputedStyle(minlengthInvalid, '').backgroundColor is transparent PASS internals.updateStyleAndReturnAffectedElementCount() is 1 PASS getComputedStyle(minlengthInvalid, '').backgroundColor is green PASS successfullyParsed is true TEST COMPLETE