Test that input peripherals are not presented when focusing form controls with a validation message.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Tap on submit button with an empty required date input.
PASS document.activeElement is date
PASS isShowingValidationMessage is true
PASS hasInputSession is false

Dismiss validation bubble and tap on date input.
PASS document.activeElement is date
PASS isShowingValidationMessage is false
PASS hasInputSession is true

Tap on submit button with an empty required text input.
PASS document.activeElement is text
PASS isShowingValidationMessage is true
PASS hasInputSession is true
PASS successfullyParsed is true

TEST COMPLETE



